Here's a pattern we see constantly: a contractor grows from $5M to $12M, works harder than ever, and takes home roughly the same money. Revenue nearly tripled. Profit didn't move.
Nobody stole it. It bled out — a point here, a half-point there — through leaks that a standard P&L is almost designed to hide.
The usual suspects
1. Jobs priced on old costs. Material jumped 8% in March, labor jumped in June, and your pricing sheet is from last year. Every job you sell at old prices locks in a margin cut you won't see until the job closes — months later.
2. Unbilled change orders. The customer asked for "one small thing" mid-job. The crew did it, because your crews are good people. Nobody wrote it up. On a $40K job, two unbilled change orders can quietly take a 45% gross margin to 38%.
3. The jobs you shouldn't have taken. Every shop has a job type — or a customer — that loses money every single time. Without job costing that can be trusted, those jobs hide inside the averages, and you keep winning more of them because you're "competitive" there. You're competitive because you're the only one dumb enough to do it at that price.
4. Slow production. The estimate assumed the crew turns the job in six days. It's averaging eight. That's not a scheduling nuisance — it's a 33% overrun on the largest line in your cost of goods. Speed is margin.
5. Warranty, rework, and "we'll make it right." The right instinct, badly measured. If callbacks aren't tracked by crew and by cause, you can't fix the root — you just keep paying for it.
6. Overhead creep. The office hire, the software subscription, the second yard. Each one defensible; together they move your break-even up quietly, so the same gross margin now produces less bottom line.
Why the P&L hides all of this
A standard P&L answers one question: what happened in total, last month? Every leak above lives inside the totals — by job, by crew, by service line, by customer type. If your reporting stops at "Cost of Goods Sold," the leaks are invisible by construction.
Margin doesn't disappear in the income statement. It disappears in the jobs — and only job-level numbers can find it.
How to find yours
This is exactly what our assessment does in the first weeks of an engagement, and you can start the same way:
- Get job costing you can trust. If labor isn't hitting jobs accurately, fix that first. Everything else depends on it.
- Rank every job from the last 12 months by gross margin. The bottom 10% will tell you a story — usually about a job type, a customer, or an estimator assumption.
- Compare estimated vs. actual on your last 20 jobs — hours, material, days to complete. The recurring gaps are your leaks.
- Reprice against today's costs, not the costs you remember.
- Put a number on each leak. "We lose margin on change orders" changes nothing. "Unbilled change orders cost us $214K last year" changes behavior the same week.
What it's worth
At $10M of revenue, finding three points of gross margin is $300,000 a year — every year, compounding as you grow. On our founder's watch as an operating CFO, disciplined margin work like this added 3.5 points at a national platform — over $8M a year at that company's scale.
Same playbook. Smaller numbers, same math.
Want to know where your margin is going? That's the first question our assessment answers — in dollars, job by job. See how the system works.
Want this level of clarity on your own numbers? That's what the LeeFO system does, every month.
Book a Free Consultation