The Short Version
I have a client who builds beautiful custom homes. His crew is skilled, his clients love him, his projects almost always finish on time. His net margin last year was 4.2%. That number is a systems problem, not a performance problem. The jobs aren't failing. The financial infrastructure around the jobs is failing. Scope creep isn't being charged. Small extras are being absorbed. Overhead is allocated to the wrong jobs. Labor hours are disappearing into untracked time. Each of these mechanisms is individually small. Together they represent 8–12 points of margin erosion on jobs that everyone involved thinks went well. This post identifies the four patterns and the systems that close each gap.
Sound Familiar?
Margin is disappearing on your best jobs if:
- Your clients never complain about change orders because you rarely submit them — even when scope clearly expanded after the contract was signed
- Small additions and repairs done during a project get absorbed as 'goodwill' without a documented cost or conversation
- Your overhead is allocated as a flat percentage of revenue across all jobs, regardless of how much management complexity each job actually consumed
- Labor hours for time spent troubleshooting, coordinating, or doing warranty-adjacent work during the project get logged to the job generically without cost code detail
- You finished a job, the client was happy, and 60 days later you're still not sure whether you made money on it
- Your project managers report jobs as 'going well' while your job cost report shows budget erosion you can't explain
What We Found
Scenario 1: Scope Creep Without Change Orders — The Most Common Margin Leak
Scope creep is the gradual, often invisible expansion of what the project covers beyond what was contracted. The client asks for a slightly different window configuration during framing. They decide to paint the garage while you're there. They ask for an extra outlet in a room that wasn't wired for one. Each request feels small. Each one takes real time and material. And in most construction businesses, most of them never get documented or billed.
The reason builders absorb these changes is almost never malice. It's a combination of relationship dynamics ("I don't want to nickel-and-dime them"), time pressure ("it'll take longer to write up the change order than to just do it"), and poor systems ("I'll track it at the end" — which never happens). The result is the same regardless of motivation: real costs with no corresponding revenue.
The Math Is Worse Than It Looks
A job with $8,000 in untracked scope changes on a $200,000 project represents a 4-point margin hit. If your target margin is 15% and you expected $30,000 in gross profit, you finished with $22,000. That's not a cost overrun problem — it's a documentation and billing problem. The work was done. The cost was incurred. The money just wasn't collected.
Multiply that across a $3M business with modest scope creep on every project and the Gap Selling framework identifies this precisely: Gap Selling analysis: a builder running $3M in annual revenue who leaks just 5% through undocumented changes, untracked labor, and informal scope creep loses $150,000 in profit annually — equivalent to 3 full additional projects just to break even on the leak.
The System That Closes This Gap
The fix is a standing rule, enforced by both the owner and project managers: any scope addition that requires more than 30 minutes of labor or more than $200 in materials gets a change order before work starts. Not after. Not as a batch at the end. Before.
The change order doesn't need to be complex. It needs to exist: a written description of the work, a price, and a client signature (electronic is fine). Most PM platforms — JobTread, Buildertrend, CoConstruct — make this a 5-minute process. The discipline is the hard part. The technology is the easy part.
When clients push back on change orders for small items, the framing that works is: "I want to be transparent about what every addition costs rather than building it into the final invoice as an unexplained number." Most clients, once they understand this is about transparency and not about extracting money, accept it. The ones who don't accept it are telling you something important about how billing conversations will go at project close.
The "Pandora's Box" Version of This Problem
A renovation project where opening walls reveals unexpected damage, asbestos, structural issues, or scope that multiplies the original estimate — and the builder absorbs the cost. When unforeseen conditions create scope expansion — not just client requests — the same discipline applies: document the discovery, document the cost, get written authorization before proceeding. "I'll sort it out at the end" is how you absorb $15,000 in unexpected structural work on a fixed-price contract.
Scenario 2: Unbilled Extras — The Goodwill That Costs You the Business
Unbilled extras are the cousin of scope creep. Where scope creep is expanded scope that goes undocumented, unbilled extras are additions that get done, sometimes get tracked, but never get billed because the decision was made (explicitly or implicitly) to absorb them as goodwill.
Common examples: fixing a minor item discovered during punch list that wasn't in scope, touching up paint on an adjacent wall the client noticed, correcting a sub's minor workmanship issue without a back-charge, doing a small repair during a walk-through that "only took 20 minutes." Every one of these has a cost. Labor, materials, PM time. Most of them never appear on an invoice.
Why This Happens
The impulse behind unbilled extras is understandable — builders want clients to feel well taken care of, want to protect the relationship, want to generate referrals. Those are legitimate goals. The problem is using direct job cost absorption as the mechanism to achieve them.
There is a difference between a strategic goodwill gesture — deciding consciously to absorb a specific cost because the relationship value or referral potential justifies it — and a reflexive default to absorption because the billing conversation feels uncomfortable. The first is a business decision. The second is a systems failure.
The Measurement Problem
Most builders who absorb extras don't track what they're absorbing. They have a vague sense that they "give a lot away," but they can't quantify it. The first step is measurement: track every unbilled extra for 90 days. Log it to a job, categorize it (goodwill, sub correction, scope ambiguity, warranty-adjacent), and put a dollar value on it. At the end of 90 days, you'll know what goodwill is actually costing you — not as a feeling, but as a number.
The builders who do this exercise almost always find the number is larger than expected. A business doing $3M in revenue often discovers it's absorbing $30,000–$60,000 annually in unbilled extras that were never consciously approved as business development investments. At that point, the choice becomes deliberate: decide which extras are worth absorbing and which ones should be billed. That's a business decision. Currently it's just a leak.
The System: Pre-Authorized Goodwill Budget
The most effective mechanism I've seen: a per-project goodwill budget of $500–$1,500 depending on project size. PM managers have authority to absorb costs up to that threshold without change orders for genuine goodwill gestures. Anything above the threshold requires approval. This gives PMs flexibility to build client relationships without requiring change order discipline on every $75 touch-up — but it puts a ceiling on the absorption and makes it a tracked, intentional decision rather than an invisible default.
Scenario 3: Overhead Mis-Allocation — Why Simple Jobs Subsidize Complex Ones
Overhead allocation is one of the least-discussed sources of margin distortion in construction financial systems. Most builders allocate overhead as a flat percentage of revenue across all jobs: if overhead is 20% of revenue, every dollar of revenue on every job carries a 20% overhead burden. The logic is simple. The problem is that it's wrong.
Overhead is not evenly consumed by all jobs. A $400,000 cookie-cutter spec home with standard scope, minimal coordination, and a two-person PM team consumes far less overhead than a $400,000 custom renovation with 12 subcontractors, daily client interactions, significant design coordination, and two rounds of city inspections. Same revenue. Vastly different overhead consumption. Flat-rate allocation makes the simple job look less profitable than it is and makes the complex job look more profitable than it is.
Why This Matters for Job Selection
When overhead is mis-allocated, you're making job selection and bid decisions based on inaccurate profitability data. You may be steering toward complex, high-overhead projects because they appear to generate strong margin on your job cost reports — when in reality the overhead they consume is being subsidized by your simpler jobs. The builders who run purgatory — good revenue, flat profits — often discover this is one of the mechanisms: they're winning and executing complex, high-overhead work while believing it's their most profitable project type.
Better Overhead Allocation: The Activity-Based Approach
A more accurate allocation model assigns overhead based on actual resource consumption. The simplest version: weight overhead by a combination of revenue percentage AND estimated PM hours. A job that requires 60 PM hours carries more overhead than a job requiring 20 PM hours, even at the same revenue. This two-factor model is more work to implement than a flat percentage but produces far more accurate job-level margin data.
The even simpler version for builders who don't want to rebuild their overhead model: start tracking PM hours by project. After two to three quarters, you'll have data on which project types actually consume overhead versus which ones your flat rate is overcharging. Use that data to adjust your overhead percentage by project type — a lower rate for simple, well-defined scope and a higher rate for complex, coordination-intensive work.
What Accurate Overhead Allocation Changes
When overhead is allocated accurately, two things change immediately: (1) you can see which project types are genuinely most profitable, not just highest revenue, and (2) your bids for complex work include the true overhead cost rather than a subsidized flat rate. That second point means your bids may be higher on complex jobs than they used to be — which is correct. You were underpricing complexity. Accurate allocation corrects that systematically.
The "Busy Fools" Pattern
Builders who are fully booked, running hard, and working long hours — but not profitable. Activity is not the same as progress. Overhead mis-allocation is one of the mechanisms that produces this outcome — builders fully booked on complex work that appears profitable in the job cost report but isn't generating the net margin the numbers suggest because overhead consumption is understated.
Scenario 4: Invisible Labor Leakage — Hours That Work But Never Show Up
Labor leakage is the fourth mechanism — and arguably the hardest to fix because it requires behavioral change from the field team, not just a system configuration. Labor leakage happens when real labor hours are consumed on a job but never logged, or logged incorrectly, so they disappear from the job cost report.
The most common patterns:
- Drive time logged to general overhead rather than the specific job (or not logged at all)
- Morning setup and afternoon breakdown time not captured in daily logs because field teams log the productive hours and forget the prep time
- Troubleshooting and coordination time by the foreman or lead carpenter — time spent on the phone with subs, reviewing plans, solving problems — logged at a generic crew rate rather than the actual burdened cost of who was doing it
- Return trips for punchlist, warranty-adjacent items, or material runs that never get logged to the job
- Owner time on the project — the builder who is managing the job, solving problems, and running client meetings but not logging any of that time as a job cost because "that's just what I do"
The industry term for this pattern is clear: Phantom Resource — Labor, materials, or subcontractor time that was consumed on a job but never logged — hours that worked but never showed up in the job cost report.. The resource worked. The cost was incurred. It simply never appeared in the job cost report.
The Cost of Not Tracking It
An owner who spends 40 hours managing a specific project — estimating, client meetings, sub coordination, punch list walks — at a burdened cost of $75/hour has $3,000 of cost on that job that never appears anywhere in the financials. On a $180,000 project targeting 15% gross margin, that $3,000 alone moves the margin from 15% to 13.3%. Multiply by 12 projects a year and you've identified $36,000 in annual cost that the financial reports don't show — and that explains why the P&L doesn't match what the job cost reports suggest it should be.
The System: Time Logging Discipline
The fix requires two things: a consistent daily log process that captures all job-coded time (including travel, setup, troubleshooting, and coordination), and owner willingness to log their own time at a realistic burdened rate.
For field teams, the daily log should be non-negotiable: every crew member logs their hours, by job, with cost code, at end of day. Most PM platforms have mobile apps that make this a 3-minute process. For owners, the discipline is tracking at least the most time-intensive projects explicitly. You don't need perfect owner time tracking for every email and phone call — but the major blocks of time (full-day site visits, 3-hour estimating sessions, extended client meetings) should be logged to the relevant job.
Once labor logging is consistent, re-run your bid-to-actual analysis on labor by cost code. You'll likely find that actual labor hours are consistently higher than estimated — and now you'll know which specific categories are the gap, which lets you correct the template rates and improve future estimates.
If these patterns resonate — scope creep going unbilled, extras being absorbed, overhead allocation working against you, labor disappearing from your cost reports — the place to start is a direct conversation about where your specific business is leaking. A strategy call gets specific fast: 45 minutes to map your current margin structure and identify the highest-dollar fixes.
Stop Guessing Where Your Profit Is Going
Download the Profit Leak Checklist used by 300+ builders. Find the exact cost codes, billing gaps, and overhead mistakes hiding in your numbers — free, instant download.
Get the Free Checklist →Frequently Asked Questions
Four mechanisms account for most of this pattern: (1) scope creep — work that gets added after contract signing that never gets formally documented or billed; (2) unbilled extras — small additions that get absorbed as goodwill without tracking what that absorption actually costs; (3) overhead mis-allocation — applying a flat overhead percentage to all jobs regardless of how much overhead each project actually consumes, which understates the true cost of complex, high-coordination work; and (4) labor leakage — real labor hours (drive time, setup, troubleshooting, owner project management time) that get consumed but never logged to the job. Each mechanism is individually manageable. Together they can represent 8–12 points of margin erosion on projects that appear to be going well from an execution standpoint.
The framing that works: position change orders as a transparency tool, not a billing trap. Tell clients at contract signing that any addition beyond the contracted scope gets a written change order before work starts — because you want them to know the cost of every decision upfront rather than encounter unexplained charges at project close. Most clients who are genuinely engaged in the project respond positively to this framing. The ones who resist it are signaling how billing conversations will go throughout the project. A standing rule: any scope addition requiring 30+ minutes of labor or $200+ in materials gets a change order. Below that threshold, you can exercise PM-level discretion on a per-project goodwill budget.
Overhead mis-allocation happens when overhead is distributed across jobs as a flat percentage of revenue, regardless of how much overhead each job actually consumes. A complex renovation with 12 subcontractors, intensive client management, and extended PM involvement consumes far more overhead (PM hours, administrative time, coordination cost) than a simpler project at the same revenue level. Flat-rate allocation credits both jobs with the same overhead burden, making the complex job appear more profitable than it is and the simple job appear less profitable. Over time, this steers estimating and job selection toward complex work that looks good on paper but is actually eating overhead at a higher rate than the flat allocation captures. Tracking PM hours by project type and adjusting overhead allocation by complexity tier produces more accurate profitability data.
Start with a non-negotiable daily log requirement: every crew member logs hours by job and cost code at the end of each day. Mobile PM apps (JobTread, Buildertrend, Procore) make this a 3-minute process. The cost codes matter — log framing labor to framing, finish carpentry to finish carpentry, troubleshooting to a coordination code. Generic labor codes produce a total number but no diagnostic information. For owner time: log at minimum the major time blocks on each project — full-day site visits, estimating sessions, extended client meetings — at your actual burdened cost. After 90 days of consistent logging, run your bid-to-actual analysis on labor by cost code. The comparison between estimated and actual hours by category tells you exactly where your template labor rates need to be corrected.
A goodwill budget is a per-project allowance that gives project managers discretionary authority to absorb small costs without formal change orders — to cover genuine relationship-building gestures without creating billing friction on every minor item. A typical structure: $500–$1,500 per project depending on project size, at PM discretion, with anything above the threshold requiring owner or principal approval. The benefit is that it makes goodwill spending intentional and bounded: you know exactly what you're investing in client relationships per project, you can track whether the pattern is reasonable, and you have a ceiling that prevents unlimited absorption. Without a goodwill budget, small-item absorption is a default behavior with no measurement or limit — which tends to cost significantly more than a structured goodwill program would.