Why You Don't Know Your Real Job Margin

The Phantom Margin Problem
Here's a number that should alarm every contractor: across the operational data I've reviewed from 2,200+ contractors representing $13.25 billion in job revenue, 91% of jobs show margins above 80%.
That sounds incredible. It's not. It means costs aren't being tracked.
When I break it down, the picture is stark: over 1.1 million jobs totaling $12.4 billion in revenue have essentially zero cost data recorded against them. No labor hours tagged. No materials allocated. No subcontractor costs assigned. The system shows revenue of $10,000, cost of $0, and a margin of 100%. It looks great on a report. It's completely meaningless.
What Real Margins Look Like
Among the jobs where contractors actually tracked both revenue and costs — roughly 110,000 jobs across the dataset — the margin distribution tells a very different story:
| Margin Band | Jobs | Avg Job Revenue | Total Revenue |
|---|---|---|---|
| Severe loss (below -50%) | ~650 | $4,700 | $3M |
| Losing money (-50% to 0%) | ~1,300 | $7,000 | $9M |
| Thin margins (0-20%) | ~17,300 | $6,100 | $105M |
| Below average (20-35%) | ~24,700 | $6,100 | $150M |
| Healthy (35-50%) | ~14,100 | $5,600 | $79M |
| Strong (50-65%) | ~16,000 | $7,600 | $122M |
| Very strong (65-80%) | ~37,900 | $4,400 | $168M |
The real median job margin, when costs are actually tracked, centers around 20-50% — not the 80-100% that most contractor dashboards display. The healthy band of 35-50% aligns with what well-run HVAC, plumbing, and electrical companies achieve when they price correctly and track costs religiously.
Why This Happens
Cost tracking breaks down at three levels, and most contractors have all three problems simultaneously.
1. Labor Isn't Tagged to Jobs
This is the most common failure. Technicians show up, do the work, get paid — but their hours aren't allocated to the specific job in the system. The payroll goes out, the revenue comes in, and the job shows revenue with no labor cost.
In the data I've reviewed, the companies that run within 90-100% of budgeted hours are consistently the most profitable. The ones running 200-800% over budgeted hours? Their estimating is broken, their scope management is broken, or they simply aren't tracking at the job level. One contractor in the dataset budgeted $837 per job and spent $2,339 — a 179% cost overrun. They didn't know because individual job costs weren't visible.
2. Materials Aren't Assigned to Jobs
Parts come off the truck. Materials get ordered from the supply house. The PO goes against the vendor account, but nobody tags it to the job number. At month-end, the P&L shows $80K in materials expense across the company. But which jobs consumed those materials? Unknown.
This is especially common with HVAC contractors running service work. The tech uses a capacitor from their van stock, installs it, bills the customer $180, but the $40 cost of the part sits in general inventory expense. The job shows 100% margin. The company's overall margin tells a different story.
3. Subcontractor Costs Disappear
General contractors and mechanical contractors who use subs frequently have the biggest blind spots. The sub invoices come in, get paid through AP, but never get linked back to the job. Revenue of $50K, sub costs of $35K that aren't visible at the job level. On paper, a home run. In reality, a 30% margin job that barely covers overhead.
The Real Cost of Flying Blind
When you don't know your real job margins, three things happen — all of them expensive:
You underprice your most complex work. If your estimating team thinks jobs run at 60% margins (because that's what the dashboard shows), they'll bid aggressively. But if real margins are 30%, every job you win at "competitive" pricing is eroding your bottom line.
You can't identify your most profitable service lines. Maybe your planned maintenance contracts run at 45% margins while your project work runs at 15%. Without job-level cost tracking, you can't see this split. You treat all revenue as equal when it's not even close.
You reward the wrong behavior. If you incentivize your team on revenue and don't track margins, you're encouraging them to chase volume at any price. The salesperson who brings in a $500K job at 8% margin gets celebrated. The one who brings in a $200K job at 40% margin gets ignored. Meanwhile, the second deal generated more gross profit.
How to Tell If You Have This Problem
Run this check right now in your QuickBooks or accounting system:
- Pull a job profitability report for the last 12 months
- Sort by gross margin, highest to lowest
- Count how many jobs show margins above 70%
If more than half your jobs show 70%+ margins, you almost certainly have a cost-tracking gap. Real 70%+ margins happen on some service calls and T&M work, but they shouldn't be your default.
Also look at the other end: if you have zero jobs showing negative margins or margins below 15%, that's another red flag. Every contractor has some bad jobs — warranty work, callbacks, misquoted projects. If your system doesn't show them, it's not because they don't exist. It's because the costs aren't landing in the right place.
What Good Looks Like
The contractors in the dataset who track costs properly share a few characteristics:
They tag every transaction. Labor time, materials, subcontractor bills — everything gets a job number. This is table stakes. If your field service software doesn't enforce job coding on time entries, fix that first.
They review job margins weekly, not quarterly. Monthly is too slow to catch a job going sideways. Weekly reviews let you see cost overruns while there's still time to adjust scope or flag the customer.
They budget before the job starts. The median contractor in our data comes in 20% under budget — meaning most budget conservatively, which is fine. But you can't be under or over budget if you never set a budget. Every job above $5K should have budgeted labor hours and materials cost before work starts.
They separate labor from materials from subs. Aggregate cost data is almost useless. You need to know that the labor ran $8K over budget while materials came in $2K under. That tells you the crew was slow, not that the parts were expensive. Very different fix.
When Phantom Margins Don't Matter
A few honest caveats:
Under $1M in revenue, formal job costing creates more overhead than it's worth. If you're running 3-5 techs and you can eyeball profitability per job, the tracking infrastructure has negative ROI. Focus on pricing and utilization instead.
Pure T&M work with disciplined billing is inherently tracked. If you're billing every hour and every part at markup, your invoice IS your job cost report. The phantom margin problem is mostly a fixed-price and project-based issue.
If you're already tracking costs and your margins genuinely are 50%+, congratulations — you're in the top quartile. Just make sure you've checked your collection rate too, because high margins with low collection is a different kind of expensive.
The Bottom Line
The median contractor has no idea what their real job margins are. Not because the data doesn't exist, but because costs aren't tagged to jobs. When you fix that — when every hour, every part, every sub invoice lands against the right job number — the dashboard stops lying to you.
For most $3-30M contractors, the real median job margin is somewhere between 20-50%, not the 80%+ that most dashboards display. Knowing the real number isn't demoralizing. It's the first step toward fixing the jobs that shouldn't be done at any price, repricing the ones that are too thin, and doubling down on the ones that actually make money.
Q: How does Level help with job cost tracking? A: We connect to your QuickBooks and field service software (BuildOps, ServiceTitan, Jobber) and map every transaction to a job. For contractors with existing data, our first step is a profitability audit that shows your real margins by job, service line, and customer — often revealing a very different picture than the dashboard shows. The first audit is free.
Q: How long does it take to fix? A: For most contractors, getting clean job cost data flowing takes 2-4 weeks of process changes. The bigger shift is cultural — getting your team to tag every transaction takes consistent reinforcement for 30-60 days. Once the habit sticks, the data becomes the most valuable asset in your business.
Q: What if my margins really are high? A: If your margins are genuinely above 50% after proper cost allocation, you're in great shape. But verify it by checking that labor burden (benefits, workers comp, payroll taxes — typically 25-35% on top of base pay) is included in your job costs. Most contractors who show high margins are missing the labor burden allocation, which can swing a 55% margin to a 35% margin.
About the author
Sam Young
Founder of Level. Former PE investor at Vector Capital and investment banker at Credit Suisse. Built AI-powered accounting products at BuildOps, working directly with over 1,000 contractors across HVAC, plumbing, electrical, and mechanical trades. Co-founded Overline, where his team has analyzed over $1B in real estate assets. Currently advises PE-backed contractor portfolios. Stanford MBA.
LinkedInReady to see where your money is going?
Get a free job profitability audit in 48 hours.
Get Your Free Audit