You might be scaling losses right now and have no idea.
Not because you're bad at business. Because most remodeling contractors never break down their P&L by job type. They see revenue. They see a busy crew. They see cash coming in. What they don't see is that two of the job types they take most often are quietly bleeding the company dry — one invoice at a time.
I know a $5 million remodeling business. The owner reviewed revenue every month and felt good about it. Five million dollars. Growing year over year. Plenty of activity. Then we broke down the P&L by job type — emergency repairs, small punch-list work, a couple of trade-specific offerings — and found something he wasn't expecting. Two of his primary service lines were losing money on every single sale. Not thin margins. Negative margins — after true labor and overhead allocation, he was paying out of pocket to complete the work.
He'd been doing it for 18 months.
He didn't know — because he'd never looked at it this way. The top line looked fine. The individual job types did not.
Why contractors take the bad jobs
Here's what he told me when we found it: "I knew those jobs weren't great, but I needed the cash flow."
That's the answer almost every time. The contractor isn't taking the losing job because they think it's profitable. They're taking it because the pipeline is dry and something has to come in. Emergency calls, small repairs, favor-sized scopes — these are the jobs you say yes to when you're not sure what else is coming.
Cash flow desperation has a cause. In his case: 40% of his inbound leads were going unanswered. Homeowners were calling, leaving a message, and moving on to the next name on the list. His pipeline looked thin because it was thin — not because demand was low, but because he was losing leads before they ever became jobs. So when anything did land, he grabbed it. No margin discipline. No job-type filter. Whatever came in went on the schedule.
The losing jobs weren't the root problem. They were the symptom. The root was the leads slipping through.
What the industry data shows
NAHB published 2024 benchmark data for remodeling contractors. The average gross margin is 29.9%. Average net margin: 6.3%. Cost of sales eats 70.1% of every dollar before you touch overhead.
That 6.3% net is the highest since 1996 — and it still means your entire profit lives in a window barely six points wide. One bad estimate. One job where labor ran long. One scope that crept past the fixed-bid ceiling. The year's profit is gone.
That's the average. The contractors below average — grinding out 3% and 4% nets — aren't worse at the work. They're running the same business but without leverage. No leverage means no ability to say no. No ability to say no means they're taking jobs at whatever margin the customer will tolerate — or whatever margin gets the invoice out the door.
The $5M contractor wasn't an outlier. He was doing exactly what the bottom half of the industry does: taking the cash, skipping the math, and hoping volume covers the gaps. It doesn't.
How to find your loss leaders
The problem isn't that the math is hard. It's that most contractors never run it at the job-type level. They look at total revenue and total costs. They don't allocate.
Here's the exercise: for every job type you took last quarter, assign true costs — not your estimate, actuals. That means:
- Labor at full cost — not just hourly rate. Loaded cost: payroll taxes, insurance, benefits, the share of a crew that drove 45 minutes each way for a two-hour punch-list. Emergency call-outs usually look worse here than anyone expects. - Materials with waste — what you actually used, including leftovers and returns. Small jobs often have proportionally higher waste because you're buying in quantities sized for larger scopes. - Overhead allocation — what share of your fixed costs did this job consume? Rent, insurance, vehicles, admin time, your own hours. Small jobs eat a disproportionate share of overhead per revenue dollar because overhead is roughly fixed. - Rework and callbacks — emergency jobs and rush repairs have higher callback rates. That labor doesn't show up on the original invoice. It shows up as unbilled hours six weeks later.
When you've done this for each job type, sort by gross margin percentage. Not gross margin dollars — percentage. You're looking for the categories where margin is under 20%. Flag them. Those are your candidates for repricing, minimums, or elimination.
The $5M contractor found his two loss leaders in about an hour. He'd suspected one of them. The second one surprised him — it was a job type he'd been taking for years because it felt reliable and repeatable. It was reliable. It was also reliably losing money.
The fix isn't the pricing. It's the pipeline.
You could raise prices on your worst job types today. That's the obvious move — and it's the right one for jobs you're going to keep taking. But the deeper fix is making it so you don't need those jobs.
The desperation cycle runs one direction: missed leads → pipeline dry → say yes to anything → no margin control → cash stays tight → repeat. The exit is at the front of that loop, not the middle. When you're capturing every lead and responding fast enough to actually win the inquiry, you have options. You can look at a small emergency repair and say no — or say yes at a price that actually covers the cost.
The contractors running 40% gross margins in the same markets aren't working smarter job-site tricks. They're never desperate. Their phones get answered. Their pipeline stays full. When a low-margin job comes in, they can let it go — because three other jobs are behind it.
That's not a pricing strategy. That's a lead strategy.
Your assignment
Pull last quarter's jobs. Break them down by job type — not by client, by type. Allocate true labor (loaded), materials (with waste), overhead share, and callbacks. Calculate gross margin percentage for each category.
Flag any job type where gross margin is under 20%. Those are your loss leaders. For each one, decide: reprice with a minimum, restructure how you deliver it, or stop taking it.
Then ask why your pipeline was thin enough that you needed those jobs in the first place.
That answer is usually the same answer. And it's fixable.