Most builders doing $500K–$3M are leaking 5–15% of their profit through 5 predictable gaps. This guide shows you exactly where — and what to do about it.
Enter your email to unlock the full guide — including the quick-fix checklist for each margin killer.
Scroll down to read the full guide. A copy is also on its way to your inbox.
Written by Grant Fuellenbach, GO First Consulting. Based on working directly with 312+ residential builders across $500K–$5M revenue.
This is the most common math error in residential construction, and it's costing builders $60K–$200K every year on a $2M revenue base. Here's the problem: markup is calculated on cost. Margin is calculated on selling price. If you price a job at $100K with a 25% markup on $80K in costs, your actual gross margin is 20% — not 25%. That 5% gap compounds across every project, every year.
Most builders never catch this because the numbers feel right. Revenue is up. The P&L looks okay. But net margin stays flat year over year — or gets worse as volume grows. The fix is simple: price using margin percentages, not markup. If you need 30% gross margin, that means $30 of profit in every $100 of selling price — not $30 on top of every $70 in costs. One conversation with your estimator about how bids are built is often worth more than any software upgrade.
The average builder doing $3M in revenue completes 30–40% more scope than was in the original signed contract — and formally bills for only about 60% of it. The rest leaks out through informal verbal agreements, "I'll get that to you later" conversations, and the general awkwardness of billing a good client for extra work that doesn't feel like a big deal in the moment.
The root issue isn't clients refusing to pay. It's that most change orders are never formally documented in the first place. Hours go unlogged. Scope additions get verbally approved but never written up. The foreman absorbs small overruns rather than flagging them. By the time the job closes, the difference between what was built and what was invoiced is just... gone.
The fix is a locked change order workflow — every scope addition, no matter how small, goes through a signed CO before the work starts. Your contract should include a standard unforeseen conditions clause. Your PM tool should make it harder to start work without a CO than to create one. When this system is in place, most builders recover $80K–$150K in their first year of proper change order discipline.
Here's a diagnostic question Grant asks every builder in a first call: "Which of your active jobs right now are profitable? Can you tell me the answer in under 30 seconds?" Most can't. Not because they don't care — but because the financial infrastructure doesn't exist to give them a fast, accurate answer. Revenue reports exist. Overhead summaries exist. But job-level P&L — the one number that actually tells you whether a specific project is making or losing money — is buried in spreadsheets or doesn't exist at all.
The standard for a well-run building company: job costs go in your PM tool (JobTread, Buildertrend, etc.), overhead goes in QuickBooks. When this boundary is clean, your PM tool shows true job-level gross margin in real time — and your QuickBooks P&L shows accurate net profit. Most builders have the tools to do this already. They just haven't configured the connection correctly. The result is that every month's accounting is a best guess, and major financial decisions — hiring, equipment, taking on more volume — get made without the data they require.
Cost code proliferation is one of the quietest killers in construction operations. It typically starts clean — a reasonable structure in a new PM tool. Then over time, new codes get added for edge cases. Duplicate codes appear because no one is sure which one to use. "Miscellaneous" codes absorb everything that doesn't fit cleanly. Within a year, you have 60–100 codes, half of which no one uses consistently, and the data in your job cost reports is too fragmented to support real decisions.
The practical test: run a report by cost code on your last 10 jobs. Count how many codes have meaningful data. Count how many are single-use, near-zero, or duplicate. For most builders, 40–60% of their codes have data that's too thin to be useful — and the ones that do matter are mixed in with the noise. The "miscellaneous" code is a particular problem: it reliably absorbs cost leakage that should be tracked somewhere specific, making it impossible to identify where overruns are coming from.
Every construction company has a "shadow system" — the spreadsheets, text threads, and personal notebooks that run alongside the official PM tool. They exist because the main system doesn't actually handle what the team needs. The estimator uses Excel because the estimate template in the PM tool is too slow. The super uses a personal notebook because logging daily activities in the app takes too long. The owner keeps a running tab in their head because there's no dashboard that shows the real number.
The deeper problem is that shadow systems are usually faster and more reliable than the official tool — at least for the person running them. Which is why the typical response of "just make everyone use JobTread" fails. People abandon tools that create more work than they save. The fix is to make the official system genuinely easier than the workaround — by cleaning up the template structure, shortening the data entry flow, and eliminating the steps that cause team members to route around it.
Companies that consolidate down to one or two tools — and actually configure them to handle the real workflow — free up 6–10 hours of owner time per week, reduce errors from data re-entry between systems, and build an operation that can run without the owner present on every decision.
Every builder leaks margin differently. The free JobTread Diagnostic shows you exactly which of these 5 killers are hitting your business hardest — and what to fix first. It takes about 4 minutes.
Take the Free JobTread Diagnostic →Free. No credit card. Results delivered instantly.