Skip to content
All articles

Engineering

From PDF to structured bid in one pipeline

2 MINUTES READ

Shawn Azdam

Founder

Document pages transforming into precise schematic linework and grids.
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.

Orphan-well intel, monthly

Contact sales