It's 11:40 on Wednesday night and the electrical number still isn't in. The concrete sub left a voicemail saying he'll "be around fourteen" — fourteen what, for which scope, he didn't say. And the mechanical quote just arrived: a photo of a spec sheet with a number scrawled in the margin. The bid is due at 2pm Thursday.
How bids actually arrive
The invitation to bid went out two weeks ago through the plan room. Addendum 2 dropped Tuesday and changed the roof spec. Now the quotes come back the way subs actually work: a formal PDF proposal from the big mechanical outfit, an Excel from the glazing company, a text that reads "we're at 46,800 on plumbing, exclusions to follow," and — from the sub whose price you most need — a number scrawled on a photo of a spec sheet, taken on a truck dashboard, sent at 6:50 in the morning.
Subs price late on purpose. A number sent Monday can be shopped to your competitors by Wednesday, so the careful ones hold their price until the last practical hour. That pattern is structural, it protects them, and no software should pretend to change it. The formats are never going to standardize either, because a sub prices work for six general contractors a week and formats for none of them. Any system built for bid day has to accept the inputs as they are: photos, texts, voicemails, and PDFs, most of them landing inside the final eighteen hours.
Why the last two hours decide more than the last two weeks
By Thursday morning the estimating problem is no longer estimating. It's collation and leveling: get every number into the bid tab, line the scopes up against each other, and find the gaps before they price the job. Two drywall numbers $38,000 apart usually aren't a bargain — one of them excluded the level-4 finish, or the low one never saw Addendum 2. Fire caulking is in somebody's number and missing from everyone else's, or it's in nobody's and about to be in yours for free.
Every minute an estimator spends retyping a number off a photo is a minute not spent on exactly this work, and this is the work that wins the job or loses it at a margin you can't live with. The shop that collates fastest isn't just quicker to submit. It gets more leveling time out of the same two hours, and leveling time is where bids get accurate.
What extraction actually does with that photo
Mechanically, it's plain. Quotes get forwarded to one address, or land in a shared inbox the system watches. Each attachment is read: typed PDFs extract close to perfectly, spreadsheets almost trivially, photos through optical character recognition with results that range from clean to hopeless depending on the handwriting and the light. The system pulls the fields that matter — company, trade, amount, date, and any inclusion or exclusion language it can find — and writes a row into the bid tab with a link back to the original image. A number in the tab is always one click from its source, which matters at 1:50pm when someone asks where the low steel number came from. What used to be forty minutes of retyping becomes a review pass.
The number that could mean two different things
Here is the part that separates a useful system from a dangerous one. "$18.50" scrawled next to a rebar callout could be a unit price per ton, a price per hundredweight, or a lump figure with the thousands understood. "Fourteen" in a voicemail could be $14,000 or $1,400,000 — an estimator knows which from the trade and the scope, and software doesn't. Unit-price versus lump-sum ambiguity is not a corner case in construction bidding. It's Tuesday.
So the rule built into the system is blunt: any number missing its units, its scope reference, or its trade — or any handwriting below a confidence threshold — gets flagged and held in a queue, displayed next to the original photo, and does not enter the tab as a price until a person confirms it. The estimator resolves each flag in one look. A system that guesses at units will eventually mis-price a bid by an order of magnitude, and it only has to happen once. The design goal is narrow: handle the certain majority instantly, and present the uncertain remainder clearly enough that confirming it takes seconds.
What the estimator still owns
The tab is a starting grid, not a decision. Software can put numbers in columns; it cannot know that the low mechanical bid is low because that particular sub always carries controls as an exclusion, and it cannot call him at 12:15 to ask. Which numbers are actually comparable, which sub read the addendum, whose exclusion list is a real gap and whose is a negotiating posture — that judgment stays human. The point of extraction is to hand the estimator that judgment work with two hours left instead of forty minutes.
What this doesn't fix
Worth being plain about the edges. It cannot produce a quote from a sub who never sent one; chasing coverage on a thin trade is still a phone job. A genuinely illegible photo defeats the software the same way it defeats your eyes, just faster — it gets flagged rather than read, which is the correct failure but still a failure. It will not catch a scope gap that takes trade knowledge to see: noticing that the drywall number can't possibly include the lobby finish schedule is expertise, not extraction. And if your bid tab currently lives in an estimator's head rather than in a spreadsheet, there is nothing for the system to write into. The tab has to exist as a real artifact first, which for some shops is itself the first project.
Where to start
Next bid day, change nothing about how you work. Just preserve the inputs: save every quote in the form it arrived, including screenshots of the texts and the voicemails, in one folder. After the bid goes in, count two things — how many numbers somebody retyped by hand, and how many arrived inside the final three hours. Those two counts, from your own shop on a real bid, make a better case for or against this than anything on this page.