Bid vs Actual
Closeout report comparing original bid line items against actual PO and CO outcomes. Surfaces which trades came in over, which estimating ratios were wrong, and which subs delivered to bid.
What it does
Bid vs Actual is the historical-learning engine that closes the loop between estimating and the field. After substantial completion, it reconciles every original bid line item against the actual procurement_items committed and the approved change_orders, then produces a structured variance report: executive summary, trade-level variance table, top wins (came in under), top overruns (came in over), CO drivers grouped by reason, and specific lessons for next bid.
This is the engine that feeds the company's estimate library. Generic benchmarks are useful; your own history is better. Every closed project run through Bid vs Actual sharpens the next bid because the estimating ratios get re-anchored to real outcomes.
When to use it
- Post-substantial-completion — the standard closeout-review cadence.
- Quarterly portfolio review — aggregate variance patterns across multiple closed projects.
- Estimating-team retro — pull lessons forward into the next bid.
- Trade-specific deep dive — investigate why one trade keeps coming in over.
- Owner postmortem on a difficult project — documented variance with reasons.
When variance traces to a heavy CO load, chain into Change Order Review filtered to the approved COs on the project — see which patterns drove the spread vs the original bid.
What to upload
Nothing — this is a server-side aggregation engine. It reads the original bid line items (historical_bids), the final PO log (procurement_items), and the approved change_orders for the project. The variance numbers are computed from those tables; there's no document upload step.
What it needs is the data already being there: historical_bids populated with the original line items, procurement_items committed and finalized, change_orders marked approved. The engine is honest about gaps — if data is incomplete, the report calls it out rather than guessing at the missing rows.
Step by step
Open the engine
Sidebar → Engines → Bid vs Actual.
Confirm project is closed
The engine runs against post-completion data. Banner shows the project's final-billing status; if open, the result is provisional.
Review source preview
Banner shows: N bid line items, M committed procurement items, K approved COs. Gaps surface here.
Run analysis
15–30 seconds. CPM-style aggregation plus Claude-composed narrative.
Read the executive summary
Top of the result: total bid, total spent, variance percentage, and the one-line headline finding.
Walk the trade-level variance table
Every trade with bid vs actual, variance percentage, and rank. Sort by variance to find the biggest swings.
Read the wins, overruns, and CO drivers
Top wins (came in under), top overruns (came in over), CO drivers grouped by reason (scope-change / design-error / field-condition / coordination / other).
Capture lessons for next bid
The engine writes specific lessons (e.g., "Electrical estimating ratio was 12% low on this project type — raise the next bid"). Save to the company's learning library.
Understanding the results
Total bid, total spent, dollar variance, percentage variance, headline finding. The line for the exec brief.
Every trade with bid amount, actual amount, dollar variance, percentage variance. Sortable and color-coded by direction.
Top 5 each. The wins teach you what to lean into; the overruns teach you what to fix in the next estimate.
Approved COs grouped by reason (scope-change / design-error / field-condition / coordination / other) with the cumulative dollar impact per category.
Which subcontractors delivered to bid, which came in over. Feeds back into vendor reliability scoring for future bids.
Claude-written lessons tied to specific line items. Saves to the learning library for the next estimating cycle.
Every control, explained
Run analysisConsumes one run. 15–30 seconds.
Sort variance tableBy trade / by bid / by actual / by variance percentage / by dollar variance.
Filter by CO reasonNarrow the CO drivers section to one category — useful for design-error postmortems.
Chain to CO ReviewOpens CO Review filtered to the project's approved COs for deeper inspection of the drivers.
Chain to Procurement TrackerDrill into procurement for the cost-code level detail behind any variance.
Save lessons to libraryPersists the engine-written lessons to the company learning library, tagged with project type and trade.
Export PDFExecutive closeout variance report. Standard format for portfolio reviews.
Export XLSXRaw bid vs actual data. Trade-level table for further analysis in Excel.