Most builders finish a job and move to the next one. Rarely does anyone pull the original estimate side-by-side with actual costs and ask: where did we miss?
That gap — between what you bid and what you spent — is where margin dies. And it dies silently, repeatedly, on every job, because the pattern never gets analyzed. The builders who close this gap run a quarterly bid-to-actual analysis. It takes about 90 minutes. It typically identifies 1–3% of company revenue in recoverable margin within twelve months.
Here's how to run it.
Why Most Builders Skip This
The reasons are predictable: no time, no system, no clear output. You finish a job, invoice the client, deposit the check, and there's already another job starting that needs attention. Looking backward feels like a luxury when forward momentum is constant.
The problem is that without this analysis, you're running your estimating system on instinct. Every estimate you produce reflects your current mental model of what things cost — a mental model that formed from jobs you never formally reviewed. When that mental model is wrong in consistent ways, you underbid the same categories on every job, wonder why the same phases always run over, and gradually accept "jobs always go over budget" as an industry truth rather than a fixable systems problem.
It's not an industry truth. It's a data problem. The builders consistently hitting their margin targets aren't smarter or luckier — they're running the analysis.
The Five Cost Categories Where Variance Concentrates
Based on bid-to-actual data across 312+ builders, five line items account for approximately 70% of estimate variance on any given job. If you've never done this analysis, these categories will be where your surprises are hiding.
| Cost Category | Typical Variance | Primary Cause |
|---|---|---|
| Electrical / MEP | +8 to +15% over estimate | Scope revealed during construction; site surveys incomplete |
| Change Orders | +12 to +25% over estimate | Owner and field conditions generate unexpected scope |
| Site Management / Supervision | +10 to +18% over estimate | Project timelines exceed initial assumptions |
| Material Pricing | -2 to +5% of estimate | Supplier discounts or unforeseen substitutions |
| General Labor | +5 to +12% over estimate | Weather delays, rework, or complexity not visible in plans |
Labor runs higher than estimated. Materials tend to run closer to estimate or slightly under. MEP coordination, change orders, and supervision consistently run over — and most builders know this intuitively but don't have data to confirm by exactly how much. The analysis quantifies what you've been feeling.
The Hidden Cost of Skipping This Analysis
If your electrical consistently runs 10% over estimate on every job, and you're doing $2M in annual revenue with 20% in electrical costs, that's $40,000 in electrical annually. A 10% systematic underestimate costs you $4,000 per year in unrecovered cost — and that's one category. Run the same math across MEP, supervision, and change order assumptions, and the compounding gets significant fast.
How to Run the Analysis (90-Minute Process)
You don't need software beyond what you're already using. You need closed job data, your original estimates, and 90 minutes of focused time.
Step 1: Select Closed Jobs (15 minutes)
Pull 8–12 completed projects from the last quarter. Keep them similar — don't mix $50K bathroom remodels with $500K whole-home renovations. Apples-to-apples comparisons give you usable data. Apples-to-oranges give you noise.
If you don't have 8 closed jobs from the last quarter, use the last 90 days from the past year until you hit 8. The point is a meaningful sample, not a perfect one.
Step 2: Gather Documentation (20 minutes)
Export the original bid estimate and the actual final job costs for each project. Set them side-by-side in a spreadsheet with columns for each cost category you track. Your accounting software (QuickBooks, JobTread) should produce both reports directly.
If your job costing isn't granular enough to break out by category, that's a separate problem to fix. For now, work with whatever level of detail you have — even material vs. labor vs. subcontractor is better than nothing.
Step 3: Calculate Variance by Category (30 minutes)
For each cost category on each job, calculate:
(Actual Cost − Estimated Cost) ÷ Estimated Cost × 100 = Variance %
Positive numbers mean you spent more than you bid. Negative numbers mean you came in under. Do this for every category, every job. You're building a data table.
Step 4: Identify Patterns (15 minutes)
Look across the table for categories that consistently run positive (over) or consistently run negative (under). Consistent patterns are the signal. One-off outliers — a job where the client changed the tile three times — are noise.
The question you're asking: are there categories where you're consistently 8%+ over estimate across multiple jobs? Those are your systematic pricing errors. Not bad luck. Not difficult clients. Systematic errors in how you build the estimate.
Step 5: Document and Update (10 minutes)
Take your patterns and write one sentence per category: what the variance was, and what adjustment you'll make on the next bid cycle. The output should be actionable — not "electrical runs over" but "add 10% to electrical line items on remodel jobs per Q1 data."
Update your estimate template. Put the number in. Run it on the next bid. Check it again next quarter.
What Builders Find When They Run This
The most common discovery: change orders are being treated as a surprise when they're actually a predictable cost. Most builders running $1M–$3M in revenue generate 4–8% of their revenue in change orders — but estimate zero change order contingency. Every change order that should have been margin ends up eating into it instead. Once you see this in the data, you can either price change order risk into the original estimate or tighten your change order process so scope additions actually get invoiced.
Making the Analysis Actionable
The analysis only pays off if it changes how you estimate. Here's how to convert data into practice:
If electrical runs 10% over estimate: Add 10% to electrical estimates in the next bid cycle — based on data, not guesswork. Don't add it as a general contingency. Add it as a specific adjustment to the electrical line item. This keeps your estimate transparent and your contingency separate.
If change orders run 4–6% over the assumed 2–3%: Update your change order contingency assumption to 5% and embed this into future bids. Or — better — implement a change order protocol that ensures every scope addition gets priced and signed before work begins, so change order revenue actually reaches the bottom line.
If site supervision runs 15% longer: Review your timeline assumptions and tighten supervision hour estimates. Or price supervision as a percentage of project duration rather than a fixed hour estimate, so it scales with how long the job actually takes.
If materials track 2–3% under estimate: Leave it unchanged. This category is accurate. Don't adjust something that isn't broken.
The Quarterly Cadence That Makes This a System
The one-time analysis gives you data. The quarterly cadence gives you a calibrated estimating system that gets more accurate over time.
The math on the time investment: 30 minutes per closed job to pull and document the data. If you close 12 jobs in a quarter, that's six hours annually — and that six-hour investment produces estimates that protect margin on every job you bid. Builders who implement this typically recover 1–3% of revenue within the first year through tighter bidding alone, before any change to how they sell or execute.
At $2M in revenue, 1% recovered margin is $20,000. At 2%, it's $40,000. At 3%, it's $60,000 — enough to fund a project manager hire that removes you from the field entirely.
The analysis doesn't require price increases. It doesn't require new clients. It requires knowing where your estimates are consistently wrong and fixing the inputs. That's a documentation problem, not a market problem.
Tools That Make This Faster
JobTread users: The built-in bid-to-actual report pulls estimated vs. actual by cost code directly. Set up your cost codes to match the five high-variance categories above, and the report does most of the categorization work for you. Running this quarterly takes 30–45 minutes once the system is configured.
QuickBooks users: The Job Profitability Summary report in QuickBooks produces estimated vs. actual by job. You'll need to manually categorize by cost type, but the source data is there. Export to a spreadsheet, add the variance column, and calculate.
Spreadsheet-only shops: Create a template with columns for estimated vs. actual by cost category across the bottom and jobs across the top. It's more manual but produces the same output. Takes closer to two hours quarterly but still worthwhile.
If you want help implementing a job costing system that makes this analysis automatic — or want a complete review of your current estimating accuracy against industry benchmarks — the Beyond the Bid Assessment covers estimating, job costing, and overhead as part of the full operational audit.
Frequently Asked Questions
How many jobs do I need to run a bid-to-actual analysis?
Start with 8–12 similar projects. Fewer than 8 gives you too little data to distinguish patterns from outliers. More than 15 creates analysis overhead that most builders won't maintain quarterly. The goal is a meaningful sample that reveals consistent patterns, not a comprehensive database. Keep project types similar — don't mix bathroom remodels with new construction additions in the same analysis run.
Should I include change orders in the analysis?
Yes, and separately. Compare the original estimate to actual costs excluding approved change orders to measure pure estimate accuracy. Then compare approved change order value to change order cost to measure change order execution. Mixing them hides both problems. Most builders discover their original estimates are reasonably accurate — but their change order process is where margin leaks, because scope additions get done but don't always get invoiced at their full cost.
What if my jobs are profitable but still have variance?
Current profitability doesn't mean your estimates are accurate — it means other variables (favorable material pricing, efficient crews, no major surprises) are compensating for your estimate errors. Those variables aren't reliable. A market shift on lumber or a couple of difficult jobs exposes the underlying inaccuracy quickly. Builders who run bid-to-actual analysis while profitable find the problems before they become crises rather than after.
How do I separate estimate error from execution error?
You often can't perfectly — and you don't need to. Both types of error show up in the variance data, and both need to be addressed. If electrical consistently runs 12% over estimate across 10 jobs with 3 different electricians, that's an estimate error: your electrical pricing assumptions are wrong. If one job runs 25% over with a specific subcontractor while similar jobs run on budget, that's an execution or subcontractor quality issue. Focus on patterns rather than blame — they tell you whether to fix the estimate or fix the execution.
Can bid-to-actual analysis justify raising prices?
It informs pricing discipline, not blanket rate increases. If your analysis shows materials track 3% under estimate, you don't need to raise prices on materials — you need to stop padding them. If labor runs 10% over estimate on complex remodels but on target for simpler projects, the answer is adjusting your labor rates for complex scope, not raising rates across the board. Price increases driven by cost data are defensible to clients; price increases driven by gut feel aren't. The analysis gives you the data to have a specific conversation about scope complexity rather than a generic "prices went up" conversation.