At project closeout: reconcile the awarded bid line-by-line against final job cost. CSI-by-CSI variance with root-cause attribution — was it the field, the buyout, the COs, or the estimate itself? Patterns feed back into Cost Estimating so the next bid prices reality, not assumption.
Bid-vs-actual reconciliation is the most-skipped step in construction. Everyone knows it should happen. Nobody does it consistently. Three reasons:
Original bid in the estimator's spreadsheet. Buyout numbers in the PM's tracking sheet. Actuals in accounting. COs in a folder somewhere. Reconciling means cross-referencing four systems that don't speak the same language.
The team that ran the project is already three jobs deep into the next ones. Going back to do BvA the right way means budgeting a week of senior estimator time on a job that's already in the rearview.
BvA exposes patterns that are uncomfortable. The estimator routinely under-prices Division 16. The PM routinely over-spends on changes. Surfacing these is politically delicate — better to just bid the next job.
This engine runs the reconciliation automatically at closeout because the data is already in the project's memory. It surfaces patterns calmly — not finger-pointing, just data — and feeds the Cost Estimating engine so the next bid carries the lessons forward.
The output is a structured variance report. Each CSI division gets a row showing bid, buyout, actuals, COs, and the delta — with a root-cause attribution for variances above your firm's threshold (default: 5%).
Estimate gap (under-priced takeoff) · Owner scope (CO-driven, not estimator fault) · Field condition (site reality differed from drawings) · Buyout swing (vendor pricing moved between bid and award) · Execution (sub over-ran their own bid). Each variance is tagged with the dominant cause — sometimes more than one applies and we weight them.
The variance report is interesting but not transformative on its own. What changes the trajectory is the FEED back into Cost Estimating — the firm's next bid carries the lessons of the last one.
"Division 15 plumbing under-priced by avg 8% over the last 6 jobs." Cost Estimating engine carries a +8% adjustment forward for that estimator until the variance closes.
"HVAC Pros came in at -2% vs bid on last 4 jobs." Bid-leveling next time gives HVAC Pros a confidence boost. Vendor profile aggregator records the reliability score.
"Utility relocations recur on this submarket." Cost Estimating flags Div 16 site-investigation costs as a required line item on future projects in the same geography.
"Owner-X averages 12 CO line items per job, mostly finishes." Negotiation Intelligence carries that pattern into the next bid's contingency analysis.
"Spec called PEX. Spec actually required Type L copper." Submittal Reviewer learns to flag the substitution as material-cost-affecting on future projects.
After 8–12 jobs run through the engine, estimate accuracy on average jobs tightens from typical industry ±7% to ±3%. Not magic — just the loop closing.
BvA is sensitive. GC internal view shows root cause + estimator name + sub margins. Owner-facing view shows totals + scope-driven variances only.
Full variance report including which estimator priced each division, which sub executed, and the root-cause attribution. Used in post-project reviews and bid-team retros. Senior estimator name attached when relevant.
Strips internal margins, estimator attribution, and sub-vendor cost details. Shows owner-directed CO impacts + site-condition variances + final cost vs GMP. The view your owner-rep takes to the project owner meeting.
Bid vs Actual is the engine that closes the construction learning loop. Inputs from every other engine; output flows back to estimating + vendor profiles.
BvA still works — you import the bid, the final cost report, and the CO log; the engine builds the variance report from those three. The root-cause attribution loses precision (it can't cross-check against Procurement deliveries or Schedule Risk for field-condition flags) but the basic CSI variance + 5-bucket categorization is intact.
Configurable per project. Default is "cost of work" (sub costs + materials + GC labor; excludes fee and contingency). Some firms run a parallel report including fee for internal margin analysis. Owner-view always uses cost-of-work to avoid surfacing margin details.
Yes — in the internal view only. Configurable: some firms anonymize the estimator field for sensitivity, especially when running BvA in post-project retros. Default is named; can be toggled to "Estimator A / B / C" for blind reviews.
Same engine, just additional outputs. Surfaces the shared-savings allocation (per the GMP contract), the contingency utilization, and which divisions delivered the savings. Useful for both owner negotiations and internal post-project reviews.
Bring a recently-closed job to a call. We'll process bid + actuals + COs live and produce the variance report on screen. The patterns that surface usually surprise even the senior estimators.
Start free — 14 days, no card →