Estimate vs Actual in Construction: The Gap That Eats Your Bonus
Typical variance benchmarks for residential GCs: framing 3-7% over, demo 8-14% over, finishes 2-4% under. Why a single scope can run double that, the four reasons the gap opens, and the weekly review that catches it.
You priced the job at a 20% margin and closed it at 14%. Those six points did not disappear in one bad day. They leaked out across the job, one line at a time, and nothing surfaced the leak until the books closed for the month.
That gap between what you estimated and what you actually spent is the number that decides whether you take a bonus this year or cover payroll out of the last job's profit. On a $600K remodel, six points is $36,000. That is a new hire, or the difference between a good year and a scary one.
I build margin software for residential GCs, and the job numbers owners walk me through say the gap is not random. It shows up in the same places, in the same size, on almost every residential job. Here is what it actually looks like.
How do I catch estimate vs actual mid-build?
Catch estimate versus actual while the job is still open. Review variance by trade every week as costs land, not after month-end close. That is how a framing overrun or unsigned change becomes a conversation instead of a write-off at closeout.
What the gap looks like by trade
Across residential GCs in the $2M to $20M band, the variance is not spread evenly. Some trades run over almost every time. A few run under, which fools owners into thinking the job is fine when the expensive trades are already bleeding.
These are the typical bands on Bay Area remodels and ADUs, meaning the middle of the distribution and not the whole of it. Treat them as a starting benchmark, not a law. Your numbers will differ by market and by how tight your original scope was.
| Trade / phase | Typical variance vs estimate | Direction |
|---|---|---|
| Demolition | 8% to 14% over | Almost always over |
| Framing | 3% to 7% over | Usually over |
| Rough plumbing / electrical | 4% to 9% over | Over on older stock |
| Drywall | 1% to 3% over | Slightly over |
| Finishes (tile, trim, paint) | 2% to 4% under | Usually under |
| Fixtures / appliances | flat to 2% over | Client-driven |
Demo is the worst offender because you are pricing what you cannot see. Framing runs over on lumber swings and on repairs that only surface once the walls open up. Finishes often come in under because you padded them and the crew moved fast, which is the trap. The under on finishes hides the over on demo and framing, and the blended number looks acceptable until closeout.
If you only look at the total, you miss the pattern. A job that reads 2% over at the total might be 12% over on demo and framing and 4% under on finishes. When the finishes run out, the hidden overrun lands all at once, and by then the money is spent.
A typical band is not a ceiling, and the jobs that hurt you live above it. On older housing stock, on a job where the scope got written loose to win it, or on the first one of a type you have not built before, demo and rough MEP can land near 30% over instead of 10%. That is the tail case. It is not rare enough to ignore, and the job-level total is better at hiding it than at showing it, because a 30% miss on two scopes can still print as 4% at the bottom of the page. How to improve estimate accuracy works that exact job.
The four reasons the gap opens
The variance comes from four specific failures, and each one has a fix.
1. The estimate was wrong before the job started. Demo got priced off a walkthrough instead of a probe, and last year's framing labor rate carried into this year's job. The number was optimistic on exactly the trades that always run over, which is the most common source and the hardest one to catch, because the leak was already sitting in the estimate before anyone picked up a hammer.
2. Scope moved and the price never followed. The homeowner asked for a taller vanity and the designer swapped the tile, both of them approved on site to keep the job moving, and nothing in the process turned either one into a priced change order. The work happened, the cost hit the job, and the revenue never did. Read how to read a change order if this is where your points go.
3. The field spent money the office did not see for three weeks. A sub invoiced above his bid, a lumber order came in over the number you carried, and the crew logged 40 extra hours on a repair. Every one of those was knowable the day it happened, but the system held it until month-end, and by then the check had cleared.
4. The invoice came in above the bid. This one is growing fast, and it deserves its own section.
Sub bid vs invoice variance is the fastest-growing line
Here is the variance line that moved the most in the last year: the delta between what a sub bids and what he actually invoices.
California trade rates are stepping up through mid-2026. Framers, concrete, and drywall crews are quoting jobs, then coming back weeks later with a higher number when material or labor moved under them. A framer who bid $48,000 in March invoices $53,000 in June. That $5,000 is a full point of margin on a $500K job, and it landed without a phone call.
Some of this is legitimate: costs moved, and a good sub tells you early. Some of it is a bid that was too thin to hold once the market moved under it, and the gap surfaces on the invoice instead of in a phone call. You cannot tell which is which unless you catch the delta the week the invoice lands, while you still remember the bid and can pick up the phone.
The GCs who catch subcontractor price increases mid project do one thing the others do not. They compare every sub invoice against the original bid the day it arrives, not at closeout. A $5,000 delta is a conversation in June. At closeout in September it is a write-off, because the job is done and the sub already got paid.
Why month-end accounting is too late
Your books close on the 10th for the prior month. That means the earliest you see a June overrun is mid-July. On a 90-day job, half the money is already spent by the time you get the signal. The report is accurate, and it is also an autopsy: it tells you the job died, not how to save it.
A $5M shop running four active jobs cannot steer on a month-old number. The framing overrun that shows up in your July close started in the second week of June. If you had seen it then, you could have called the sub or repriced the remaining scope. In July, all you can do is write it down and promise yourself the next bid will be better.
The fix is a shorter loop, not a tighter month-end close. Job costing has to run weekly instead of monthly, or the number arrives after the decision window has already closed. For the mechanics of pulling actuals out of your existing books faster, see how to track job costs in QuickBooks for contractors.
If three or more of these variance sources are live on your current jobs, the leak is built into how the numbers move, not a one-off. Grab the 12-point margin leak checklist and run it against your last three completed jobs. You will find the pattern, and you will find it in the same four places every time.
The weekly variance review
Set a 20-minute review every Monday, not at month-end. Here is what you look at, per active job.
Committed vs estimated, by trade. Every PO and signed sub contract against the estimate line it belongs to. This catches the overrun at commitment, before the invoice, before the check. A framing PO that came in above the estimate is a Monday conversation, not a September surprise.
Invoices received vs bids, this week. Every sub invoice that landed in the last seven days, checked against the original bid. Any delta over a threshold you set, say $2,000 or 5%, gets a phone call that week. This is where you catch the sub bid vs invoice variance while you can still do something about it.
Actual hours vs bid hours, by phase. If the crew is 30% into the hours on a phase that is 10% complete, the phase is going to run over. You know it in week two, not at closeout.
Three numbers, once a week, per job. A GC running four jobs can do this in under half an hour if the data is in one place. The problem for most shops is that the data is not in one place. The estimate lives in a spreadsheet, the actuals live in QuickBooks, and the sub bids are buried somewhere in an email thread, so the two sets of numbers never line up on their own. Reconciling them by hand every Monday is the job nobody has time for, so it does not happen, and the gap opens.
Catch it before the framer asks for more money
The whole game is timing. The framer who is going to come back for another $5,000 gives you signals before he asks. His hours run ahead of the bid, his first invoice comes in a little high, and the repair scope grew without ever getting written up. Those signals are in your data two or three weeks before the ask lands on your desk.
See the variance the week it opens and you walk into that conversation with the numbers. You know his original bid and what he has invoiced against it. You can split the difference on the part that is genuinely a cost increase and push back on the part that is not. Find out at closeout and you have nothing to push back with, because the work is done and the only question left is how much of the overrun you eat.
That is what the estimate vs actual gap really costs you. The points, and the chance to do anything about them while they were still fixable.
Where Baxie fits
Baxie tracks your estimate against actuals on every job, so the variance shows up the week it opens instead of at month-end. It is built for California residential GCs in the $2M to $20M band. We are pre-launch for California residential GCs. Founding pricing is on the pricing page.
If you want deep commercial job costing with full accounting built in, look at a dedicated ERP. If you want to see the estimate vs actual gap on every active job while you can still fix it, that is what we are building.
Before you shop any tool, find out where your own gap is. Grab the 12-point margin leak checklist and run it against your last three jobs. Twenty minutes, and you will know which of the four sources is eating your points.
FAQ
Where does margin go between bid and closeout?
It leaks across the job: optimistic estimates on demo and framing, scope that moved without a priced change order, field costs the office sees weeks late, and invoices above the bid. On a $600K remodel, six points is $36,000.
How do I catch estimate vs actual mid-build?
Run a weekly variance review on open jobs while the work is still in progress. Compare estimate to actuals by trade the week costs land, not at month-end. A change order written on Tuesday is a conversation; the same one in October is a dispute.
What are typical trade variance bands on residential jobs?
On Bay Area remodels and ADUs, demo often runs 8 to 14 percent over, framing 3 to 7 percent over, rough MEP 4 to 9 percent over on older stock, and finishes often 2 to 4 percent under. The under on finishes can hide the over on the expensive trades.