Sub numbers come in between 1:45 and 2:00 for a 2:00 bid. Every market works this way — nobody sends a price early enough to get shopped — and it means the most consequential two hours of your month are spent transcribing figures under a deadline instead of thinking about them.
Fifteen minutes to assemble a seven-figure number
The mechanical price arrives as a voicemail. The electrical scope letter lands at 1:52 and has to be read before the number gets plugged. One sub's bid is a photo of a spec sheet with a figure scrawled across the corner in carpenter's pencil, texted to the estimator's cell from a truck. Somebody keys all of it into the bid spreadsheet, correctly, on the first try, while also deciding whether the low electrical number is low because that contractor is hungry or because he missed the switchgear.
Those are two different kinds of work. The judgment call is the estimator's actual job — the reason the company wins work at a margin worth having. The keying is transcription under pressure, and it is where digits get transposed and where a scope letter's "by others" clause gets read for the first time in month seven of the job.
Automate the collation and the chase, never the decision
A document-extraction pipeline reads whatever shows up — a formatted PDF, a number typed into the body of an email, that photo of the spec sheet — and pulls the contractor name, scope, price, exclusions, and bond language into the bid tab, marked for review rather than silently trusted. The same system knows which scope packages went out three weeks ago and which subs have gone quiet, and it sends the reminder on Tuesday morning instead of leaving it to whoever remembers at 1:30 on bid day.
What it must not do is choose. How much plug to carry on an incomplete scope, whether to trust the low number, whether the alternate is worth pricing — those calls belong to a person with scar tissue. Most GCs win roughly one bid in five, and every estimator knows it — which means the estimating department produces four complete, unpaid work products for every one that becomes revenue. Hours recovered from collation should go into reading scope letters more carefully on more bids, not into pretending the judgment can be delegated to software.
The RFI log is a queue with a price tag
The Navigant Construction Forum studied more than 1,300 projects and over a million RFIs, and found roughly ten RFIs per million dollars of construction, about eight hours and a thousand dollars of combined effort to process each one, a median wait of nearly ten days for an answer — and more than a fifth never answered at all. Every one of those unanswered items is a decision the field ends up making without cover.
The workable fix is unglamorous. A log that ages every open item, drafts the follow-up email with the original question and the days elapsed attached, and ties each open RFI to the lookahead activity it is blocking — so the Thursday coordination meeting opens with the four items actually holding up drywall instead of a forty-row spreadsheet nobody reads aloud. Submittals get the same treatment: status, age, resubmittal count, and which party currently owes the next action.
The pay application is a package, and one blank line stalls all of it
A G702 with its G703 continuation sheet is not an invoice; it is an assembly. Behind it sit conditional lien waivers from every subcontractor and from their suppliers, each one matched to the schedule of values, and if a single waiver comes back with an empty notary block, the whole check waits for next month's cycle. That is a thirty-day penalty for a missing signature on a PDF, in a trade where waiting on money is already the default condition.
A completeness check runs before the package leaves the office: every required waiver present, signed, notarized, amounts tied to the correct line of the schedule of values, retainage math consistent from month to month. Retainage itself gets a ledger — what is held on each job, from each sub, against which closeout conditions — instead of living in the controller's head until somebody asks at year end and the answer takes a week to reconstruct.
Deadlines that do not accept an explanation
In Texas, a subcontractor on non-residential work has to send notice by the fifteenth day of the third month after the month the work was performed. Miss one month and that month's lien rights are gone permanently, with no cure and no appeal to good intentions. Certificates of insurance have the same unforgiving shape: a COI naming your company as certificate holder instead of additional insured is worthless, and the error typically surfaces three weeks after that sub is already on site. Both are calendar problems. Generate the deadlines from contract dates and billing months when the job is set up, and let a system do the nagging, because memory is exactly what fails in August when three jobs are closing at once. None of this is legal advice — deadlines vary by state and contract, so confirm your dates with your own counsel.
What this does not solve
Software will not catch a mispriced package, and it will not rescue a job already in profit fade at sixty percent complete. A scope gap that no sub carried is an estimating and buyout problem, and it will surface in month seven whether or not your paperwork is tidy. Underbilling sits half in each world: a system can flag the T&M tickets that never became billings and the PCOs that never became signed change orders — the raw material a surety reads as trouble in your WIP — but converting a verbal directive from the owner's rep into a signed CO is negotiation, and negotiation is done by a person. If the actual weakness is field supervision or estimating judgment, this is the wrong tool, and we would rather say so before you spend money than after.
Where to start
Time your next pay-application cycle: the hours between the work being billable and the package leaving the office, and the number of phone calls it took to chase waivers. That figure is measurable this month, before anyone spends anything, and it is the honest baseline any automation should be judged against.