19 October 2026
·5 min read
Platform & SREvalidate LLM extraction outputdocument AIValidation Gates for Document Extraction: Reconciliation Before an Update Touches a System of Record
Document AI returns fields with confidence scores, not permission to write. This post shows how to build a validation gate that reconciles extracted output against authoritative data and written rules before any update reaches a system of record.
For operational workflows, validation means the model's output does not get to touch your system of record until something independent has checked it. A document extraction model reads an invoice, a claim form or a purchase order and returns fields with confidence values. That confidence value tells you how sure the model is about its own reading. It tells you nothing about whether the value is correct against your supplier master, your contract terms or your ledger.
Google's Document AI documentation describes extraction services that return structured fields alongside confidence scores. The scores are useful for triage, not a substitute for reconciliation. A model can be highly confident and wrong, and it can be correct with a low score on a smudged scan. If you let the confidence value alone decide whether an update lands, you have handed write access to a probability estimate.
The fix is a validation gate: a step that sits between extraction and any write to a system of record, reconciles the extracted fields against authoritative data and written rules, and routes anything that fails to a named owner with the source document attached.
What the gate checks, in order
A validation gate does three jobs before an update reaches finance, inventory, CRM or any other system that other people trust.
First, it reconciles against authoritative data you already hold. An extracted supplier name reconciles against the supplier master. An extracted total reconciles against the line items that should sum to it. An extracted purchase order number reconciles against open orders. The authoritative source wins; the extraction is a candidate until it matches.
Second, it applies written rules that encode what a valid record looks like. A date must fall inside the engagement window. A currency must be one you transact in. A tax figure must be consistent with the subtotal and the rate on file. These rules are written down, versioned and reviewed, not buried in a prompt.
Third, it routes failures to a named exception owner with the source attached. A field below a confidence threshold, a total that does not reconcile, a supplier that is not on the master: each goes to a person who can see the original document, the extracted value and the rule that caught it. The owner resolves it, and the resolution is recorded.
Why confidence alone fails
Confidence scores are calibrated to the model's training, not to your data. Two failure modes follow.
The false pass: the model returns a high-confidence value that is wrong for your context. A plausible but incorrect supplier name, a total that reads cleanly but belongs to a different page. Confidence is high, so a confidence-only gate waves it through, and the error lands in your ledger.
The needless escalation: the model returns a low-confidence value that reconciliation would have confirmed. A faint scan of a purchase order number that matches exactly one open order. A confidence-only gate sends it to a human; a reconciliation gate clears it automatically because the authoritative data agrees.
Reconciliation and confidence do different work. Confidence ranks what to check first. Reconciliation decides what is allowed to write.
Three actions for this week
You can make progress on each of these without a platform rebuild.
- List every automated path where extracted document data writes to a system of record. For each one, write down what it currently checks before the write. If the answer is "the confidence score", mark it. Those are the paths that can post a confident error into a system other people trust.
- For the highest-volume path, write the reconciliation rules in plain language first: which field reconciles against which authoritative source, and what counts as a match. Keep the file in version control. The rules are the contract; the model is the candidate generator. This separation lets you change the model later without relearning what "valid" means.
- Name the exception owner for that path and define what reaches them. The owner needs the source document, the extracted value and the rule that failed, in one place. An exception queue with no named owner becomes a backlog nobody reads, and the pressure to auto-approve returns within a month.
The record is the point
A validation gate that nobody can audit is a gate you cannot defend. Keep an independent action record: what was extracted, which rules ran, what passed, what was routed, who resolved each exception and what they decided. The gate writes the record, not the model, and the workflow it governs cannot edit it.
This matters when a figure in your ledger is questioned three months later. You need to show the source document, the reconciliation that cleared it or the person who approved the exception. Without that trail, every disputed record becomes an investigation. With it, the answer is a lookup.
The record also tells you where the model is weak. If one document type routes a quarter of its fields to the exception owner every week, the extraction is not fit for that type yet, and the record is the evidence that funds the fix or the decision to keep that type manual.
Where Anystack fits
We build controlled AI automation for operational workflows across documents, messages, forms, spreadsheets, APIs and system events, inside your own Google Cloud project. Each build has validation gates that reconcile against your authoritative data before anything writes to a system of record, a named exception owner for the items that fail, and an independent action record you keep. The model proposes; the gate and the owner decide. You can see how the gates, the exception ownership and the action record are structured on the automation page.
*Anystack Engineering runs three-person engineering pods that deliver inside your repositories with a written spec for every change, a named reviewer of record and delivery measured per engagement. Engagements from £18,000 per month. How the pod delivers.*
