Engine · Closeout · LIVE

Closeout reconcile. The next bid is sharper.

Bid vs Actual is the Trueleveler engine that, at project closeout, reconciles 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.

Try it now

Bid vs Actual runs on your original bid and PO log and needs a free account (no card). It has no sample data yet, and the no-signup demo only levels bids.

Per CSI
division variance
5
root-cause categories
Feeds
Cost Estimating
Auto
at closeout
01 · Why most firms never run this

The loop that never closes.

Bid-vs-actual reconciliation is the most-skipped step in construction. Everyone knows it should happen. Nobody does it consistently. Three reasons:

Reason 1

The data lives in 4 places

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.

Reason 2

Closeout is exhausting

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.

Reason 3

Nobody likes the answer

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.

02 · The variance report

One row per CSI division. One root cause per row.

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 divisions flagged as significant overruns (variance above +15%) or significant wins (below -10%).

03CONCRETEBid $1.84M · Final $1.79M · Variance -2.7% · Buyout savings + tight execution. Under budget
05STEELBid $980K · Final $1.01M · Variance +3.1% · Below firm threshold. Within tolerance
09FINISHESBid $640K · Final $698K · Variance +9.1% · Root: 22 owner-directed CO line items (cabinetry upgrades). Not estimator error. Owner scope
15PLUMBINGBid $720K · Final $812K · Variance +12.8% · Root: original estimate priced PEX. Spec required Type L copper. Not caught at takeoff. Estimate gap
16ELECTRICALBid $1.42M · Final $1.64M · Variance +15.5% · Root: site condition changes (3 unexpected utility relocations) + 6 CO line items. Field + scope
23HVACBid $1.20M · Final $1.18M · Variance -1.7% · Tight buyout, clean execution. Use this sub again. Reliable
ΣTOTALBid $11.2M · Final $11.5M · Variance +2.6% · Within the +15%/-10% significance band. 2 divisions outside — root cause: estimate gap (Div 15) + field changes (Div 16). Patterns logged
5 root-cause categories

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.

03 · How the patterns feed forward

Project N teaches project N+1. Automatically.

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.

Pattern type 1

Estimator drift

"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.

Pattern type 2

Sub reliability

"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.

Pattern type 3

Scope blind spots

"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.

Pattern type 4

CO-prone owners

"Owner-X averages 12 CO line items per job, mostly finishes." Negotiation Intelligence carries that pattern into the next bid's contingency analysis.

Pattern type 5

Trade swap cost

"Spec called PEX. Spec actually required Type L copper." Submittal Reviewer learns to flag the substitution as material-cost-affecting on future projects.

The compound effect

Year over year

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.

04 · What the GC sees vs the owner

The same data. Two audiences.

BvA is sensitive. GC internal view shows root cause + estimator name + sub margins. Owner-facing view shows totals + scope-driven variances only.

Internal view

Estimator + sub + root cause

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.

Owner view

Scope variances only

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.

★ · Pairs with

It works alone. It's better in a chain.

Bid vs Actual is the engine that closes the construction learning loop. Inputs from every other engine; output flows back to estimating + vendor profiles.

  • Cost Estimating — receives estimator-drift patterns + scope-blind-spot patterns + trade-swap cost data for next-bid calibration.
  • Bid Leveling — sub reliability scores from variance feed back into vendor confidence ratings at next bid.
  • CO Review — CO totals + verdicts feed the "owner scope" root-cause attribution.
  • Closeout Builder — BvA report is included in the owner closeout package (the redacted view).
05 · FAQ

Things everyone asks first.

What if our project didn't use Trueleveler from the start?

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.

How is "final cost" defined? Including or excluding GC fee?

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.

Does this surface individual estimator performance?

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.

What if the bid was a GMP and the final cost was under GMP?

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.

Run BvA on a closed job in 15 minutes. See the patterns.

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.

Try Free for 14 Days →