Once for a machine to read the page - and far more for the machinery of people who must re-check every field before it can go in a credit memo or survive a regulator’s question. That second bill is almost the whole cost, and it doesn’t fall as the models get cheaper.
doloop learns a document family’s shape and locates each value at its source instead of guessing. Point it at a folder of contracts, statements, or filings: no templates, no training labels, no schema to maintain.
Every value is a verbatim span tied to its exact page and box, and on a re-run of the same corpus the located values and their coordinates are byte-identical. When doloop cannot locate a value it leaves the cell empty and flags it - a visible gap, never a confident wrong number.
A data room, a folder of contracts, a quarter of statements. doloop reads every document once, skips the noise, and runs three passes over what is left. Each pass produces output you can trace back to the source page.
Cluster every document into clean groups by type in seconds, with no categories defined up front, and the one that does not belong falls out by itself. On a real contract corpus it caught a regulatory form, an image-only signature, and a half-finished intake form mis-filed among the agreements.
Pick one clause and line up every contract's version side by side. doloop groups the wording, shows the majority, and flags the off-market term: the one-year where the rest are three, the auto-renewal nobody costed. The result is a match or an exact verbatim difference, not a similarity score.
Pull the tables and the facts out of the prose, every value tied back to its box on the page. Nothing invented. On two production corpora of invoices and bank statements, native and scanned, 2,332 extracted cells were audited against ground truth with zero errors - and the extraction was byte-identical across 90 runs. Try it on your own PDF.
One read, shown three ways: everything sorted, a single clause lined up across it, the figures pulled out. And all three drill to source: double-click any cluster, clause, or figure to land on the exact sentence on the exact page, highlighted. Because every result is deterministic, that pointer is reproducible, giving a deal committee or a regulator a trail they can replay two years after close. See sort and compare in the data room.
One read of a contract folder, shown the way the product shows it: sorted, a clause lined up, the facts pulled and traced. Both demos run live below, on real documents.
Doc Sort · the documents in clean groups
Data Extraction · every value tied to the page
| Party A | Acme Corporation | page 1 |
| Effective date | March 3, 2024 | page 1 |
| Governing law | Delaware | page 3 |
| Term | 3 years | page 2 · double-click |
Clause Lineup · confidentiality term across 4 contracts
Run any of it twice and the located values match byte for byte. Every value, every grouping, every flagged clause traces back to its spot on the page.
Extracting data from documents?
Reading the page is solved, and getting cheaper every year. The expense is the mapping - turning the read page into your named fields - because today it is a guess: rules that break on the next layout, or an LLM that fabricates. A guess can’t be signed, so a person re-checks every field. That checking is the bill, and it comes back on every batch.
Bringing data to audit-grade
Each step is a job. The human ones repeat on every run and on every re-run.
Just doloop, and you’re done
The value is located, not generated. No field-by-field human re-check. No re-runs. No schema to maintain.
Your document formats keep changing, and most extraction breaks when they do. doloop learns the new shape and keeps going - it gets better as your documents drift, not worse.
LLM extractors carry model risk: every generated value is a potential hallucination, and that’s a liability. doloop’s deterministic core cannot return what is not in the document, and the one human step is one-time - a person ratifies the shape once per document family, then every document of that shape is located the same way. Under SR 26, a located value sits outside the model-risk regime.
Results you can trust and verify.
What does it cost to run a business process
on data you can’t fully trust?
Most teams count the extraction cost. The real number is what happens downstream — delayed decisions, wrong values, and liability you can’t see until it surfaces. Answer three questions.
People check, re-enter, or QA this data before it’s used
Human review, verification cycles, correction loops — whether it’s one analyst or a team.
Pipeline cost
Revenue, approvals, or decisions wait on this data
Quotes, underwriting, diligence, reporting — the process stalls until the data is ready.
Opportunity cost
A wrong value here has a regulatory, legal, or audit consequence
Filings, contracts, systems of record — where an error is not just embarrassing, it’s a liability.
Risk cost
A language model generates a value whether or not the source contains one. The deterministic check does not.
Ask a model to read a statement and it will confidently return figures that do not appear in the document. It produces a plausible value because that is what generation does when there is nothing to find.
A total lands in the wrong row, a column shifts, a footnote merges into a value. The number is real but attached to the wrong thing, which is just as wrong.
Even a correct extraction is useless to an audit team if you cannot point at where it came from. No provenance means no sign-off.
On April 17, 2026 the Fed, OCC, and FDIC issued SR 26-2 (guidance PDF). The framework explicitly excludes deterministic, rule-based processes from the definition of a "model."
doloop extraction qualifies: same corpus in, byte-identical located values out. The model in the system names fields and proposes table geometry. It does not produce an extracted value. Every value is a verbatim source span. Your model-risk team receives an exemption-grade artifact, not another model to validate. Read the model-risk note.
For M&A diligence the three views become a verification pass over the whole data room: sort the documents, compare the clauses for drift, extract and tie out every figure, and defend each finding at the exact page two years after close.
Routes you to a real doloop page, asks when your question is ambiguous, or tells you when there is no answer. No model runs on the answer path, so it cannot invent one.