Every contractor has lost money on a job they were sure they priced right. The framing took three extra days. The concrete came in higher than the quote you used from four months ago. The cleanup ate a weekend nobody budgeted. None of these were disasters on their own — but stacked together, a job you bid at 18% margin closed at 6%, and you never saw it coming.
The problem is almost never the field work. It’s the estimate. More specifically, it’s that most small contractors bid from gut and memory, and then never go back to check the bid against what the job actually cost. Without that feedback loop, you repeat the same estimating errors on every project — forever. This guide walks through why bids miss and how to build the loop that fixes it.
Why Your Estimates Miss (It’s Rarely the Big Stuff)
When contractors think about blown estimates, they picture the dramatic miss — hitting rock during excavation, discovering rot behind a wall. Those happen, but they’re usually covered by contingency or a change order. The estimates that quietly kill your margin miss on the ordinary stuff, in small increments, on every line.
- Stale unit costs — you’re still using the lumber price, sub quote, or hourly rate from a job you did last spring. Material costs move 10–30% a year in volatile categories.
- Missing labor burden — you estimate a worker at their $28/hr wage, but with payroll taxes, workers’ comp, and insurance their true cost is closer to $40/hr. Every labor line is under by 40%.
- Unbilled small tasks — site protection, dump runs, permit pickup, final cleanup. Each feels too small to line-item, so they vanish from the estimate and reappear in your actuals.
- Optimistic production rates — you assume your crew installs 200 square feet of tile a day because that’s what they did once, under perfect conditions, with no callbacks.
None of these is fatal alone. Together they turn a healthy bid into a break-even job. And because you never measure them, they’re invisible.
If you can’t point to a single number that says “this job beat my estimate by 4%” or “missed it by 9%,” you’re not estimating — you’re guessing and hoping.
The Bid-to-Actual Feedback Loop
The single most valuable habit in construction estimating is comparing what you bid to what the job actually cost, line by line, on every completed project. This is the bid-to-actual variance, and it’s the only thing that makes your next estimate smarter than your last one.
The loop has four steps, and it runs on every job:
- Estimate in cost codes — break the bid into categories you can track later (labor, materials, subs, equipment) for each phase of work.
- Capture actuals in those same codes — as the job runs, log every hour, receipt, and sub invoice against the matching code.
- Compare at closeout — put estimated next to actual for each code and calculate the variance as a percentage.
- Feed it forward — adjust the unit costs and production rates in your next estimate based on what the variance told you.
The catch is step 2. If your actuals live in a shoebox of receipts and a memory of “we were there about two weeks,” you can’t compare anything. The codes have to match, and the capture has to happen in the field, in real time. Tools like TrestleBook let you log labor hours and material costs against job codes from your phone on-site, so the actuals are already organized when you reach closeout instead of being reconstructed from guesswork.
Build Cost Codes That Actually Tell You Something
A cost code is just a bucket you sort costs into. The mistake most contractors make is either having no codes at all (everything is “the job”) or having 200 codes so granular that nobody uses them. Aim for the middle: enough detail to isolate where you miss, few enough that logging is frictionless.
A workable starter structure for most residential and light-commercial work:
- Split by phase, then by cost type — e.g., “Framing – Labor,” “Framing – Material,” “Framing – Sub.” This lets you see whether a phase blew up on labor hours or material price.
- Keep a general conditions bucket — dump fees, site protection, permits, cleanup. The small stuff that always escapes the estimate goes here so you can finally measure it.
- Separate equipment — rental and owned-equipment costs hide in materials otherwise, and they distort both lines.
- Use the same codes on the estimate and in the field — if your bid says “Rough Plumbing” and your logs say “Plumbing,” you can’t compare them.
Ten to twenty codes covers most small-contractor jobs. Start there and split a code only when a variance tells you that bucket is hiding something.
Ready to put this into practice? Download TrestleBook Free — it’s free and works offline.
Fix Your Labor Rate Before Anything Else
If you only correct one input this year, make it your labor rate. Labor is where estimates miss hardest because two errors compound: an understated hourly cost and an overstated production rate.
Start with the true hourly cost. Take a worker’s base wage and add the burden — payroll taxes (roughly 8–10%), workers’ comp (which can run 5–40% depending on trade and state), general liability, and any benefits. For most trades the fully burdened cost lands 30–50% above the base wage. Bidding at the base wage means every hour of labor is priced below cost.
A carpenter you pay $30/hr often costs you $42–45/hr once burden is loaded. Bid the $30 and you lose money on labor before the first nail goes in.
Then get honest about production rates. Instead of your best day ever, use your average across real jobs — which you’ll finally have once the bid-to-actual loop is running. If your logs show the crew averages 150 square feet of tile a day, not 200, that’s the number that goes into the next estimate. This is the same discipline solo tradespeople and freelancers use when they price their time; apps like Stintly help self-employed workers track billable hours and true costs so their rates reflect reality, not optimism. The principle scales straight up to a construction crew.
Read the Variance Like a Diagnosis
Once you have estimated-versus-actual by cost code, the variances tell a story. Learn to read them:
- One code consistently over by the same amount — your unit cost for that item is stale. Update it and the miss disappears.
- Labor over but materials on target — your production rates are optimistic, or the crew hit conditions you didn’t account for. Look at scheduling and access.
- General conditions always over — you’re under-budgeting the small tasks. Add a realistic line instead of hoping they’re free.
- Random, unpredictable swings — your field capture is sloppy. Costs are landing in the wrong codes, so the data is noise. Fix the logging before you trust the numbers.
A variance within about 5% is a solid estimate. Consistently over 10% means an input needs correcting. The goal isn’t perfection on any single job — it’s catching the systematic errors that repeat, because those are the ones you can actually fix.
Track Your Bid Hit Rate, Too
Accuracy is one half of estimating; the other is how many bids you win and whether they’re worth winning. Track your hit rate — bids won divided by bids submitted. If you win 80% of what you bid, you’re priced too low and leaving margin on the table. If you win under 15%, you’re either priced too high or chasing the wrong jobs. A healthy small-contractor hit rate usually sits somewhere in the 25–40% range, depending on your market and how you source leads.
Pair hit rate with the variance data and you learn something powerful: which kinds of jobs you estimate well and win profitably, versus which ones you keep underbidding or losing. Maybe your kitchen remodels close at 20% margin every time and your ground-up additions always slip. That tells you where to focus your bidding — and where to walk away. This is the same portfolio thinking that landlords apply when they decide which units to renovate; platforms like KeyLoft help property owners track cost and return per unit so they invest where the numbers work. Contractors should be just as ruthless about which jobs earn their estimating effort.
Make the Loop a Habit, Not a Project
The reason most contractors never build this loop isn’t that it’s hard — it’s that closeout is when you’re exhausted and already onto the next job. The bid-to-actual review feels like homework. So it never happens, and the estimating errors ride along to the next bid unexamined.
The fix is to shrink the effort. If your actuals are captured in real time against matching cost codes, the closeout comparison takes fifteen minutes, not an afternoon of receipt archaeology. TrestleBook keeps job costs organized by code as the work happens and works offline on the jobsite where signal is bad, so the data is ready when you are. The discipline that’s left is just looking at it — and looking at it is the whole point.
The contractor who reviews five jobs’ variances a year estimates better than the one who’s done a hundred jobs but never checked a single one.
Estimating accuracy isn’t a talent you’re born with or a spreadsheet you buy. It’s a loop: bid in cost codes, capture actuals in the same codes, compare at closeout, and feed the lesson into the next bid. Run that loop on every job and your estimates get measurably tighter — your labor rates reflect real burden, your production rates reflect real crews, and the small tasks stop hiding. The contractors who win consistently aren’t guessing better. They’re the ones who stopped guessing and started measuring.