FloraCore Sign in
Public technical document

FloraCore Whitepaper

Verifiable record-keeping for protected cultivation and regulated production — two environments, one and the same chained ledger. The record the rules already require you to keep, in a form the buyer, the auditor and the authority can verify on their own.

v1.0 · September 2026 · public content · FloraCore Hub AI + FloraCore Regulated
2regulatory lines
in a single ledger
0,3 %THC limit
before release
48 hdeadline to report
an incident
7 anoscontractual retention
of records

01Executive summary

FloraCore is a platform for operations and audit-ready record-keeping by design in protected cultivation. The core of the product is neither the sensor nor the dashboard: it is an append-only ledger, chained with SHA-256 hashes, whose tampering is mathematically detectable — and whose proof can be carried out by third parties, outside the product, without asking us for anything.

Around that ledger orbit the layers operations need: lot-by-lot traceability, quality gates, electronic signature with live re-authentication, zone telemetry, crop management, and an assistant that cites the source of every answer. None of those layers writes to the ledger without passing a human gate.

What sets the product apart

  • Proof outside the product. The chaining algorithm is published. Whoever receives a lot recomputes the chain with standard libraries and reaches the same result — or discovers that they do not.
  • A legal mandate, not a convenience. The record the platform keeps is the one the rules already require. The sale does not depend on convincing anyone of the value of "traceability".
  • Fails closed where it matters. Entitlement and capability fail closed: no report, no release; no readable plan, no history. Observability fails open: a mute sensor never invents a reading.
  • Honest omission. Where no reliable source exists, the product declares the absence instead of filling in. A sample is labelled a sample; a template is labelled a template.
  • The AI proposes, the human with a role decides. No agent writes to a system of record without attributable human approval.

How to read this document

This is a public document: it describes design invariants and regulatory obligations, not the internal state of any installation. State figures — how many lots, how many movements, how many devices — age between writing and reading, and for that reason do not appear here. What appears is what stays true afterwards: the rule, the legal limit and the method of verification. Demonstration environments run on DEMO lots; nothing in this document describes a real sale of a controlled substance.

02The problem — a record that proves nothing

Protected cultivation and regulated production live under demanding record-keeping regimes. In medicinal Cannabis in Brazil, the authorised grower keeps a Specific Register Book and follows the official cultivation guide. In floriculture and horticulture, the producer of seedlings and propagation material keeps production, plant-protection and sales records for years, with electronic issuance and fixed filing deadlines.

In practice that record-keeping is done in spreadsheets and mutable systems, where a line can be "corrected" without leaving a trace. A ledger in which any line can be rewritten does not prove integrity — it only proves the present state.

The real regulatory risk is not losing the data. It is being unable to demonstrate that it was never altered.

Pain 1 · record-keeping

Correctable without a trace

A spreadsheet accepts any retroactive edit. An audit does not ask for the data; it asks you to demonstrate that the data is the same as it was then.

Pain 2 · the chain

The buyer cannot verify anything

A PDF certificate proves that someone wrote a PDF. Whoever receives the lot has no way of confirming anything without trusting the sender.

Pain 3 · deadlines

Obligations on a clock

Incident reporting within 48 hours, quarterly consolidation, half-yearly filings on fixed dates. Missed deadlines are the most common cost.

Pain 4 · liability

The technical officer answers personally

The technical officer signs under their own professional liability. It is they, not the purchasing department, who carry the risk of the record.

03Two environments, one ledger

The platform runs two lines of business with distinct requirements, on the same record-keeping core. The line is a field of the growing unit's registration, constrained in the database — not a condition scattered through the code.

DimensionFloraCore Hub AIFloraCore Regulated
AudienceNurseries, floriculture and greenhouse horticultureCultivation and production under a controlled sanitary regime
RegimeMAPA · ICA · EUANVISA + MAPA
CoreOperations, zone telemetry, 3D twin, assistant with source citationLedger, release gates, incidents, periodic consolidation
THC assayDoes not applyMandatory per lot before release
GenealogySeed → seedling → plant → shipmentSeed → seedling → plant → plant material → plant drug
Public verificationLot page by QR, NFC or pasted hashLot page + public audit anchor
RetentionAs per the plan contracted7 contractual years

An architectural caveat we do not hide

The ledger, today, does not know a lot's line of cultivation. The separation between the two regimes lives in the registration and in the process, not in a gate that enforces it inside the record itself. The consequence is visible in the product: a lot's public label returns the applicability of the THC assay as null — neither true nor false — and states in writing that in floriculture, under the MAPA regime, that assay does not apply. Declaring that we do not know costs less than letting the reader assume a pending item where there is none. Closing this requires bringing the lot → line path inside the ledger, and it is an open architectural decision.

04High-level architecture

The premise is inverted: the record is immutable by construction, not by discipline. The ledger is the source of regulatory truth; everything else orbits around it and never writes to it without a human gate. The supporting layers, the market intelligence and the knowledge retrieval are deliberately outside the core — they carry less availability weight and no write privilege.

Regulatory core

proposes, does not write

Supporting layers — no write to the Ledger

Zone telemetry

Crop and physical location

Financial monitor — read only

Assistant with source citation

Public · QR / NFC / hash

Authenticated operator

Technical officer

Append-only ledger
SHA-256 chain
immutable in the database

Release gates
assay · containment · exceptional release

Chained genealogy
forward and backward

Public anchor
chain head + verdict

Fig. 1 — The ledger at the centre; everything else proposes and nothing writes without a gate.

Invariants enforced, not aspired to

1
Immutable append-onlyThe record is never altered or deleted. In the application only the append operation exists; in the database, immutability triggers refuse any attempt to rewrite, update, remove or truncate.
2
Chaining by contentEvery movement carries the hash of the previous one. Altering one link breaks all the following ones, and the break is detectable by whoever recomputes the chain.
3
An anchor against truncationA chain alone does not detect removal from the end. A public anchor — chain head and verdict, with no sensitive data — is published and kept alongside every backup.
4
Verification by contentAttachments are content-addressed: the file name is its SHA-256, and the download re-verifies. If the content diverges, the answer is an error, not the file.
5
Segregation of dutiesThe acts exclusive to the technical officer — report, exceptional release, decision on a proposal — cannot be worked around by an administrative profile. The separation is in the code, not in convention.
6
Least privilege on the dataThe layer that serves the ledger has the right to read and to append. It has no right to alter the structure and no ownership of the schema.

A corollary written into the culture of the project

“200 is not evidence of publication.” A server that returns the home page for any non-existent path answers 200 to everything — including to what does not exist. Real verification is looking at the content, not at the status code. The same rule applies to this document: what is asserted here should be verified, not accepted.

05The chained ledger

Each event of a lot is serialised into a canonical form — the same field order, the same representation of numbers and dates, always — and its hash is computed over that text concatenated with the hash of the previous event of the same lot. The first event chains from a fixed origin value.

The chaining is per lot, with its own sequence and previous hash. This is not an implementation detail: it means that proving one lot does not require publishing every other lot's events. A buyer sees the chain of what they bought, and nothing more.

Append-only ledger — how a link holds on to the previous one published rule
01
Sowing recorded
lote=DEMO-DV-001 seq=1 tipo=lote.semeadura ts=2026-03-04T08:12:00Z qtd=4200 un=sementes
prev_hash = 0000…0000 · chain origin
hash = 9f2c a41d 77b0 5e83
02
Plant-protection application
lote=DEMO-DV-001 seq=2 tipo=lote.tratamento ts=2026-04-19T06:40:00Z dose=0.2 un=L/ha carencia_d=14
prev_hash = 9f2c a41d 77b0 5e83 · the hash of link 01
hash = c108 6ba9 3d41 e2f7
03
Shipment · note 4471
lote=DEMO-DV-001 seq=3 tipo=lote.expedicao ts=2026-06-11T14:26:00Z qtd=1200 un=mudas
prev_hash = c108 6ba9 3d41 e2f7 · altering link 02 breaks this one and every one after
hash = 41ae 90d5 c7b2 118c

h(n) = SHA‑256( canonical(event n)  ‖  h(n−1) )

Append-only

Only appending exists. There is no update and no delete operation, neither in the application nor in the database.

Chained per lot

Sequence and previous hash belong to the lot. Proving one lot does not require publishing the events of the others.

Daily root

A root covering the whole set of lots is published outside the database — that is what catches an entire lot being removed.

With the canonical form and the function published, anyone recomputes with the standard library of their own language. There is no library of ours to install and no service of ours to call: a verifier that depends on our server is not an independent verifier. The types and values above illustrate the format in use today.

Live verification

The widget below runs a demonstration chain in your browser. Alter an event and watch the link break — and every link after it.

chain verified
01
Sowing recorded
2026-03-04 · 08:12 UTC · 4,200 seeds
1ba4ebf5f0a89a94
link intact
02
Plant-protection application
2026-04-19 · 06:40 UTC · dose 0.2 L/ha · 14-day interval
cdc74f246ff7070e
link intact
03
Transplant to block B
2026-05-02 · 09:05 UTC · 3,940 seedlings
345bf6d9c24803fa
link intact
04
Shipment · note 4471
2026-06-11 · 14:26 UTC · 1,200 seedlings
ee1290c87b53290f
link intact
Teaching demonstration. The hashes above are computed in the browser with a 16-character demonstration function, so they fit on screen — they are not SHA-256 and they prove nothing about real lots. The real chain uses full SHA-256 and lives on the ledger server.

What the chain detects — and what it does not

AttackDetected byStatus
Editing an event in the middle of the chainRecomputing the chaining: the next link stops matchingcovered
Inserting an event in the middleThe lot's sequence and previous hashcovered
Deleting the end of a lot's chainThe anchor published with that day's chain headcovered
Deleting the whole lotThe daily root covering the set of lots: the published root stops reproducingcovered
Writing a false event today, with the correct hashNothing, in the chain. The chain proves integrity, not truthfulness.out of scope

The last row is the most important one, and the one that most rarely appears in a sales document. A hash chain proves that the record was not altered after it was written. It does not prove that whoever wrote it told the truth. What attacks that second problem is something else: an attributable role, re-authentication at the moment of signing, and the professional liability of the signer.

06Public verification

Proof is only worth something if an outsider can carry it out. Every lot has a public page reachable by three routes — scanning the QR on the label, tapping the NFC tag, or pasting the hash into a search field. The page is read-only, without a session and without enumeration: whoever lacks the identifier does not discover lots by browsing.

What the page shows

Enough to verify

Lot identifier, species and cultivar, stage, lot status, the event chain with date, type and hash, assay status where applicable, and the verdict of the chain verification.

What the page never shows

What is not the public's

People's names, exact property coordinates, prices, customers, contacts, and the commercial map of destinations. A field in doubt stays out — the rule precedes any product request.

The inverse question — where did this lot go —, the one a recall asks, exists but requires a session: it is the company's commercial map, not label data. And it answers for the descendants too, because material split and sold by the children left the same lot. Destinations the record does not name appear separately from the identified ones, instead of being added into a single total — hiding that part would be the most expensive way to get this wrong.

Why this matters commercially

A PDF certificate proves that someone wrote a PDF. A lot page the buyer verifies on their own transfers trust from the seller to mathematics — and turns a compliance cost into a sales argument that a competitor with a spreadsheet cannot match.

07Release gates

In the regulated line, releasing plant drug material — sale, transfer, export, manufacture of inputs — requires an approved THC report. A report above 0.3 % puts the lot under CONTAINMENT: no movement passes, except disposal, destruction and sample collection, and the response already carries the obligations with their 48-hour deadline.

1
No report, no way outAn attempt to sell without a report is refused. There is no alternative path and no administrative option to work around it.
2
A failed result is not reversed by a second reportA failed result is never erased by another one. The only way out of containment is a documented exceptional release.
3
Exceptional release is the technical officer's actIt requires a defined corrective action, a closed incident and a new approved report afterwards. It is exclusive to the role, not delegable to the administrator.
4
Non-THC assays record, but do not decideCannabinoids, heavy metals, pesticides, microbiology, residual solvents, mycotoxins, moisture and foreign matter are recorded in an immutable table, and a non-conforming result blocks release.
5
“No criterion” is a state of its ownThe dictionary of acceptance limits starts empty on purpose: a limit is a rule, and a rule that has not been read in its official text does not become a constant in the code. While it is empty, an assay comes out as NO_CRITERION — never APPROVED by omission.

Recording is not deciding

Wiring the assays to the gate came before the criterion on purpose: so that the limit, when it arrives from the official text, does not require touching the ledger's critical path under regulatory pressure. A system that marks APPROVED because no criterion is registered is worse than a system that does not evaluate at all — because it looks as though it evaluated.

08Compliance — requirement, origin, control

Every control exists because a rule requires it, and the rule is cited. This table is what an assessor asks for first: not what the system does, but which obligation each function answers to.

RequirementWhere it comes fromControl in the platform
Immutable and contemporaneous record-keepingAnnex XVIII
Ordinance SVS/MS 344/98
Append-only ledger, SHA-256 chaining and immutability triggers in the database
Tamper detectionALCOA+ / GxPPer-lot chain verification + daily public anchor
THC assay per lot before releaseRDC 1.012 / 1.013
+ official cultivation guide
The gate blocks release without a report ≤ 0.3 %
Containment, corrective action and disposalidemLot under CONTAINMENT; only containment movements pass; exceptional release exclusive to the technical officer
Reporting to the authority within 48 hidemA 48 h clock per incident type; a failed report opens the incident by itself
Periodic consolidation of production and stockidemConsolidation by category, material and unit, with a deadline
Lot-by-lot traceabilityitem 7.3 of the guideChained genealogy, cycle-free, correctable by annulment — the wrong link stays visible to the audit
Attributable and signed recordPart 11 styleRole + live re-authentication at the act + immutable manifest with the hash of the signed content
Five-year record retentionMAPA NI 24/2005
item 5.2 XII
Contractual retention of 7 years, as a commitment and not as a setting
Electronic issuance and QR identificationJoint MAPA/SDA NI 02/2018
arts. 6 and 9
Public lot page by QR, NFC or pasted hash
Record of plant-protection applicationMAPA NI 33/2016
art. 24 X
Dose, date and pre-harvest interval recorded in the event
Plant passportReg. (EU) 2016/2031In preparation — the label format and the field mapping are not implemented yet

A note on regulatory honesty

The catalogue of incident types contains the items verified against the available sources and is extensible by design; the declared intention is to complete it item by item against the full official text, without a refactor. And there are requirements today catalogued as blocking that do not yet block anything. The system publishes that list under exactly that name, with the warning that catalogued is not enforced, rather than displaying a compliance the gate does not impose.

09What the product does not fake

Integrity is not only the chaining; it is a product stance. Where no reliable source exists, the system declares the absence instead of filling in — and the same applies to what the system itself is missing.

Public and real

Only a sample or a shape

No source at scale

Is there a
reliable source?

Show REAL DATA
with a link to the source

Show LABELLED TEMPLATE
a sample, never an operation

OMIT honestly
and say it omitted

Anonymous visitor

Honest state:
no data / restricted area
zero fabricated content

Fig. 2 — The decision tree that governs every figure shown in the product.
Mute sensor

State, not last value

A zone with no reading shows "no reading", with the age of the last data point. Repeating the old value as if it were current is the easiest lie a dashboard can tell.

Published gaps

With location and proof

The gaps measured against our own code are published with name and location, and closed by a checker that runs in continuous integration — not by assertion.

External pending items

Who decides — not engineering

Decisions that depend on the owner, on legal, on accounting or on a laboratory sit in a list of their own, so they are not confused with technical debt.

Demonstration environment

A DEMO lot is a DEMO lot

What appears as real is real and traceable to its public source; what is a sample comes stamped. A sample is never relabelled as an operation.

The announced algorithm must be the algorithm that runs

A section describing what will change reads, at a glance, as a description of what is — and the hurried reader implements the table of new types. That is why, in this document and in the format documentation, what runs today carries an explicit mark, and what is in preparation carries it in the body of the text and not only in the heading. Publishing a format the product does not use is the same defect as publishing an algorithm different from the one that runs: whoever verifies in good faith reaches a wrong result and concludes that our record is broken.

10Security and privacy

1
Authentication on an open standardSession via OIDC with PKCE against a dedicated identity server, with roles assigned in the directory and not in the application code.
2
Signing requires live re-authenticationHaving an open session is not enough: the act of signing asks for credentials at that moment, optionally with a second factor, and writes an immutable manifest with who, when, the meaning of the act and the hash of the signed content.
3
Administrative surface off the internetThe identity server's admin console is not reachable from the public network. Reducing surface is worth more than hardening what should not have been exposed.
4
Content policy in enforcement modeThe public dashboards run with no inline script, with the content security policy in enforcement — not in report-only mode.
5
Local knowledge retrievalThe regulatory corpus and the vector index live on the server itself, isolated from the ledger. Nothing from the corpus leaves. Retrieval always cites the source, and answers by proximity to the best result, never by an absolute threshold that would return an empty answer as if it were an absence of rules.
6
Legal scope written in, non-negotiableNever patient data, never dispensing databases, never health inference. Aggregated, anonymous demand and nothing else.

Backups, and what they do not protect against

A local copy protects against volume removal and logical corruption. It does not protect against loss of the server, nor against a compromised credential that deletes the copies with the same hand that writes them. That is why the off-host copy, made immutable by mandatory retention and out of reach of the credential that runs the backup, is a hard prerequisite for production — not a continuous-improvement item. For the same reason, the daily root is published somewhere independent of the system that generates it: an anchor stored only where the data lives is not an anchor.

11Products and plans

Two products on the same core. The first covers nursery and greenhouse operations and record-keeping; the second adds the gates, the incidents with deadlines and the contractual retention the sanitary regime demands.

PlanSitesDevicesRetentionMonthly
Free
trial without a card
1330 days€0
Grower
individual grower
12512 months€29
Hub Starter1603 years€49
Hub Growth
most chosen
32005 years€149
Hub Scale10750unlimited€299
Regulated
sanitary regime
1 · +€199/site3007 contractual years€399

Prices in euros, excluding VAT, as of September 2026; in Brazil and Colombia billing is in local currency. The annual plan equals ten monthly payments. AI credits count per act — alert or text answer, image analysis, reasoning run — and a failed generation is never charged. The prices in force are those on the website; these are reproduced here for reading, not for contractual citation.

12Roadmap and contact

Phase 1 · closing

Proof outside the product

Daily root published with two independent providers, with cross-checking between destinations; canonical event format versioned and with frozen test vectors; public lot page in production.

Phase 2 · regime

Criteria and plant passport

Dictionary of acceptance limits taken from official text; lot → line path inside the ledger; EU plant passport with label format and field mapping.

Phase 3 · production

Hardening

One secret per system; an operations manual covering start-up, migration, disaster recovery, rotation and incident; immutable off-host backup as an entry prerequisite.

After that

Qualified signature

Qualified signature with a recognised certificate, and expansion of the market monitor over public commercial data, within the legal scope written into the code.

Contact

  • Sales and partnerships — through the form at floracore.plimlab.ch
  • Verifying a lot — scan the QR on the label, tap the NFC tag, or paste the hash into the public lot page
  • Security — report integrity or verification failures through the same channel, with the lot identifier and the hash observed

Regulatory basis cited in this document: RDC 1.012 and 1.013 and the official Cannabis cultivation guide (ANVISA/MAPA); Annex XVIII of Ordinance SVS/MS 344/98; MAPA Normative Instruction 24/2005; Joint MAPA/SDA Normative Instruction 02/2018; MAPA Normative Instruction 33/2016; Regulation (EU) 2016/2031. The citations identify the obligation; the interpretation applicable to each operation belongs to your technical officer and your legal counsel.