Engine · Closeout · LIVE

Closeout reconcile. The next bid is sharper.

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.

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 variances above your firm's threshold (default: 5%).

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 firm 5% tolerance. 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.

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.

Start free — 14 days, no card →