Document and multimodal intelligence.
The model reads. The deterministic layer matches.
A supplier invoice arrives as a picture of a table. Document intelligence turns it into candidate fields — and then hands identity resolution to the deterministic engine, because working out which supplier this is was never a job for a language model.
A cascade, with the model as late as possible.
Deterministic extraction first. Text recognition and attachment processing next. A quality assessment. A model only where the deterministic layer abstains. Then strict schema validation, then party and product resolution, then human review, then conversion to a draft — and only ever a draft.
- Deterministic extraction handles the documents whose shape is already known.
- Text recognition runs on your own server first; a model escalation is opt-in per tenant, page-budgeted and audited on egress.
- Quality assessment decides whether the text is good enough to work from, rather than extracting confidently from mush.
- Model extraction only on abstention — and a tenant who opts into nothing gets free extraction forever.
- Strict schema validation — output that does not fit the schema does not proceed.
- Party and product resolution stays deterministic — extraction returns names and strings; matching them to real records is permissioned lookup, not inference.
- Human review, then a draft — through the normal domain service, unposted.
What sits around the extraction.
- Duplicate and round-trip checks before anything converts, so the same invoice does not enter twice by two routes.
- No automatic posting — the boundary is absolute.
- Retention, deletion and provider consent handled explicitly, because documents carry other people’s data.
- Correction memory with provenance and decay — the system remembers how you fixed something, records why it thinks so, and lets that fade rather than hardening into a rule.
- Bounded parsing, so a malformed document cannot become a denial of service.
- Malicious-document defences — a document is untrusted input, and text inside it that looks like an instruction is treated as text.
Two levels, against a labelled corpus.
Extraction that is not measured is extraction you are guessing about.
Per field
Precision, recall and combined score for each of party, reference, date, currency, amounts, line description, quantity, unit cost and stock code — plus the hallucination rate, which counts fields populated with values that are not in the document at all.
Per document
Schema validity rate, abstention rate, straight-through rate (ready with no advisory checks), reviewer correction rate, and time to convert.
Extracted values remain candidates until validated or accepted.
Nothing extracted is a fact. It is a candidate with a confidence and a source page, and it stays a candidate until either deterministic validation confirms it or a person accepts it. That is why extraction can be useful without being trusted.
Wherever paper arrives.
- “Pull the totals off this supplier invoice” — into a bill candidate with a confidence review card.
- “Which purchase order is this delivery note for?” — extraction reads the reference, deterministic lookup resolves it.
- “Does this match what we ordered?” — the extracted lines against the order and the receipt.
- “Is this a duplicate?” — checked before conversion, not after payment.
- “What did the signed proof of delivery say?” — signature and image evidence against the order.
Frequently asked questions.
Does a document ever post automatically?
No. Extraction produces a draft through the normal domain service, and a person confirms it. There is no configuration that changes this.
Do my documents get sent to a model provider?
Only if you opt in, per tenant, with a page budget and an audited egress trail. Text recognition runs on your own server by default, and a tenant who opts into nothing gets free extraction indefinitely.
What is the hallucination rate?
The proportion of fields populated with a value that does not appear in the document. It is measured per field against a labelled corpus, because it is the failure mode that costs you money rather than time.
Why does the model not resolve the supplier?
Because identity is a permissioned lookup with a right answer, not a judgement. The model reads the name off the page; the deterministic layer decides which record that is.
See this engine on your own records.
Join the waitlist and ask it something real. Every answer names the engines it used and the records they read.
Join waitlist