Reading 30-page acreage reports so nobody has to
Multi-page carrier acreage reports parsed into structured, reconciled records with per-field confidence and a deterministic checksum gate before anything is written.
The problem
Acreage reporting is a seasonal wall of paperwork. Carrier and agency reports run dozens of pages across multiple entities, farms, tracts, and producer shares, and every figure has to reconcile. Staff were reading these documents and re-entering the numbers by hand, under deadline pressure, with real financial consequences for a transposed digit.
What we did
- 01
Built a document pipeline that parses report PDFs into structured records — entity, farm, tract, crop, practice, acres, and producer share.
- 02
Gated every extraction behind a deterministic checksum rather than a model-reported confidence score. If the parsed acreage does not sum to the printed total, it is flagged — no exceptions.
- 03
Added a review queue that puts the source page beside the extracted value, so a human verifies in seconds instead of re-reading the document.
- 04
Handled the genuinely hard parts explicitly: duplicate producers across entities, catch-all categories that models over-assign, and multi-sheet documents where a single page needs different treatment than its neighbours.
- 05
Separated the heavy PDF parsing onto its own service so a slow document could never take down the web application.
The transferable lesson
The hard part of document AI is not extraction — models are good at that now. The hard part is knowing when the extraction is wrong. A deterministic arithmetic check catches errors that a model-reported confidence score will happily wave through, and it is the difference between a demo and something you can put in front of an auditor.