On this page
The raw material of the Terrabillion queue is the county bid packet: a scanned PDF, forty pages on average, no two alike. Some are born-digital; most are third-generation photocopies with coffee stains. Our extraction pipeline turns this mess into structured packages with locations, scopes, dates, and documents. Here is how.
Ingestion and triage
Every packet enters the same funnel. First we classify pages — cover sheet, instructions, scope of work, bid forms, maps and plats, boilerplate — because extraction strategies differ by page type and there is no point running table extraction on insurance certificates.
Classification is deliberately boring: layout features plus keyword signals, no deep learning. It hits 96% accuracy, and the failures are obvious enough that reviewers catch them in seconds. Boring and correct beats clever and surprising.
Field extraction
Structured fields come out in confidence order. Dates, amounts, and contact blocks extract with rules and patterns — bid packets are formulaic where it counts. Scope-of-work narratives and location descriptions need language understanding, so those pass through a constrained model call with the page images attached:
{
"package_id": "WY-2026-0143",
"bid_due": "2026-03-14T16:00:00-07:00",
"well_count": 6,
"counties": ["Campbell", "Converse"],
"confidence": 0.91
}
Every extracted field carries a confidence score and a pointer to its source page. Low-confidence fields queue for human review automatically; high-confidence fields still get spot-checked at a fixed sampling rate. The sampling rate is the quality dial, and we publish our current precision numbers internally every week.
The plat problem
Maps and plats deserve their own stage. A scope table might list six wells while the plat shows eight markers — or five. Reconciling the count mismatch is genuinely hard, and we do not pretend otherwise: mismatches route to analysts with both sources side by side, and the package ships only when they agree.
About one packet in eight has a count mismatch. That sounds high until you have seen the packets. Then it sounds low.
Review economics
The pipeline exists to ration human attention, not eliminate it. Fully manual processing ran about 90 minutes per packet; the pipeline brings analyst time to roughly 12 minutes, concentrated on judgment calls the machine flags rather than data entry. Throughput went from dozens to hundreds of packets per week without growing the team — and accuracy went up, because reviewers spend their time where errors actually hide.
More blog posts to read
Geocoding 40,000 well records without losing our minds
County plats, section-township-range grids, and hand-typed latitudes all disagree. Here is the pipeline that reconciles them into one map.
Making the bid queue fast with virtualized lists
Five thousand rows brought the queue to its knees. Rendering only the visible ones took us from 4fps back to 60.
Orphan-well intel, monthly
Contact sales