A foundation and waterproofing company was selling $338,000 a month. Its crews were producing $160,000. Nobody had connected those two numbers until Stuart Trier pulled up a Builder Prime report on an advisory call and started asking questions nobody had thought to ask.
The gap between those two figures had nothing to do with sales effort or crew capacity. The business had no job-level data — no way to see what a completed job actually cost in labor, materials, and subcontractor time, and no way to know which foreman was running tight crews and which was quietly bleeding margin. Builder Prime tracked leads, proposals, and deposits, while production data — what happened after the crew left the lot — lived nowhere.
We'll call the company Crestline Foundation & Waterproofing and the owner Victor — he's asked us to keep the details anonymous, but the numbers are real. Victor had brought in Danny, a former salesperson, to take over production management and finally get a handle on what the field was actually doing. The consequences of flying blind were stacking up in ways Victor could feel but couldn't yet quantify.
Crestline's fiscal year runs from October to September. By April, the company was slightly behind its $3 million annual target — close enough that a strong busy season would get them there, but close enough to be uncomfortable. Victor had sold $338,000 the prior month. Stuart's next question was simple: how much did you produce?
The answer was $160,000.
"If sales are hitting $300,000 a month, production can't be stuck at $160,000. You'll be booked out eight weeks, and customers will stop waiting."
To hit $3 million on a fiscal year starting in October, Crestline needed to average $250,000 a month in production. They were running at $160,000. The busy season would help, but the production gap ran deeper than seasonality: the business had no way to measure what production actually was, which meant Danny had no way to know whether the gap came from not having enough work scheduled, not having enough crew capacity, or not executing efficiently on the jobs they did have.
Stuart's framing was direct. The production number doesn't tell you why the gap exists. But it creates the decision tree. Danny could look at the number and ask: can we improve how much we're booking for the crews? If the schedule is the problem, that's one conversation. If sales isn't generating enough pipeline, that's a different one. Without the number, every week starts from scratch.
Stuart has a line he uses when explaining why job-level data matters more than monthly totals.
"You can die in a lake that averages two feet deep. You just need to know where it's six feet deep — that's where you're going to drown."
Averages hide the depth. A contractor who knows their monthly gross profit percentage but has never looked at it on a job-by-job basis is working from an average. And somewhere in that average are jobs running at a 13% margin — jobs where, once you add rent, insurance, and fixed overhead on top of direct costs, the business paid to do the work.
Hassy Jamal, Clear Results' Director of Financial Strategy, put it plainly on the same call:
"Once you add rent, insurance, and everything else it costs to run the business, they paid to do that job. They lost money on it."
At Crestline, nobody had looked at job-level margin because nobody had built the system to track it. Builder Prime showed invoices. It didn't show which crew did the job, what materials they used, how many days they were on site, or what the actual labor cost was after accounting for overtime and burden. The monthly gross profit number looked fine. Somewhere inside it were jobs that were quietly bleeding.
The goal Stuart and Hassy set for Danny was specific: build a job-level costing sheet that tracked every completed job against five buckets — commission, materials, direct labor, subcontractor costs, and finance fees. Total those costs, subtract from the job revenue, and you have gross profit per job. Divide gross profit by the number of crew days on site, and you have gross profit per day. Tag the foreman, and you have a foreman scorecard.
"I'd rather build the system and hand it to you — so you have the data and you're tracking whether the crews are consistently hitting the right output per week, per month."
The mechanics weren't complicated. Stuart had built the same sheet for other clients and estimated it takes about ten minutes to cost a job once the system is running. The hard part was getting clean inputs — specifically labor, which required pulling hours from ExactTime and multiplying by the fully burdened rate.
Hassy was direct about what "fully burdened" actually means:
"Paying $25 an hour doesn't cost you $25. It's more like $45 to $50 an hour once you factor everything in."
When two crew members drive an hour to a job site, that's $100 in labor cost before a shovel touches the ground. Most owners know this in the abstract. Almost none of them have it showing up on a job-level costing sheet.
Direct labor percentage is the share of a job's revenue that goes to paying the people who did the physical work — not including materials, subcontractors, commissions, or overhead.
The formula: total crew wages for the job divided by total job revenue, expressed as a percentage.
If a $10,000 job took four crew days at a fully burdened cost of $400 per day, direct labor was $1,600, and direct labor percentage was 16%.
The reason this number matters at the job level rather than the monthly average: the same business can have foremen running at 17% direct labor on some jobs and 21% on others. A 4-point difference looks small. On a $200,000-a-month production volume, it's $8,000 in margin, every month. The foreman scorecard turns that invisible difference into a manageable one.
Target range for most foundation and waterproofing contractors: 15%–20% direct labor. Above 22% on a recurring basis signals a crew efficiency problem worth investigating.
Stuart's pitch for why foreman-level tracking matters was diagnostic, not disciplinary.
""Their number is their direct labor percentage. If you have 15 jobs, the foreman's name, and the direct labor percentage for each one, you can see the pattern: every time a certain foreman runs a job, direct labor comes in at 21%, while everyone else is at 17%. That's the conversation — not because he's a bad foreman, but because we don't know yet. That's exactly what we're trying to find out."
Victor's crews had a structural problem that made this harder: when production slowed, crew members bounced between jobs, sometimes sending four different crews to the same site in a single week, each doing their specialty. That made it nearly impossible to assign accountability to a single foreman. The fix was straightforward in principle — tag every completed job to the crew lead who ran it, not to every person who touched it — but it required discipline in the CRM that didn't currently exist.
Kayla, the office administrator, was manually reconstructing material usage after jobs closed because field crews weren't consistently filling out material sheets. That's a data integrity problem sitting directly upstream of the costing sheet. Danny's job was to close that loop: get the labor hours from ExactTime, get the materials from Sage and the field sheets, and enter both into the costing sheet within a week of job completion. Not a monthly financial autopsy — a rolling weekly picture.
Stuart pulled up a completed costing sheet from another client on the same call to show Victor what the output looks like when the system is running. The gross profit percentages on recently completed jobs: 55%, 60%, 47%, 52%, 70%.
"By March, there were no jobs in the 30s. Everything was coming in at 55% or higher gross profit. That's what a working feedback loop looks like — that's how you dial up production."
The contrast with a 13% job was immediate and concrete — the difference between a job that contributed to the business and a job the business paid to complete. Knowing which jobs are which and why makes the feedback loop possible. A job that came in at 42% instead of the expected 50% gets a conversation: what went wrong? Sometimes the answer is a crawlspace that was tighter than the estimate allowed for, and no action is required. Sometimes it's a crew that consistently underperforms on waterproofing installs, and a training conversation is overdue. Without the data, neither conversation happens.
Victor had one more structural problem the costing sheet would eventually surface: commercial subcontractor work. Crestline was running $300,000–$500,000 in commercial jobs per year, drawn by the top-line revenue. The margins on that work were demonstrably worse than those for direct-to-homeowner residential work.
"Contractor work doesn't pay quite as well — the profits aren't as good. So we're trying to do more of that big stuff directly for homeowners."
Job-level costing would let Victor see exactly how much worse, job by job, and make a deliberate decision about whether the volume was worth the margin compression — rather than running the commercial work because it felt like growth.
The job-level costing problem isn't specific to foundation repair. Any trade running hourly crews on project-based work has the same blind spot.
HVAC installation and replacement: A contractor running three installation crews knows their monthly gross profit margin. They don't know that one crew lead consistently runs 4% higher on direct labor than the other two, or that jobs in a specific zip code run long because of older duct configurations. The monthly average hides both patterns. A job-level costing sheet exposes them within a quarter.
Roofing: A roofing company knows which months are profitable. They don't know which job types are. Tear-off and replace on a 30-square shingle roof looks identical in the monthly revenue line to a 30-square standing seam metal install — but the labor cost, material cost, and crew hours are completely different. Without job-level tracking, the company prices both the same way and wonders why some months don't pencil out.
Plumbing: A residential plumbing company running service calls and remodel work has two revenue streams with different margin profiles. Service calls are high-margin, high-volume, low-revenue. Remodel work is lower-margin, lower-volume, higher-revenue. If both are pooled into a single monthly gross profit figure, the business has no way to know which stream is actually driving profitability — or which sales rep is quoting remodel work too thin.
Electrical: An electrical contractor doing commercial tenant improvements alongside residential panel upgrades faces the same commercial-versus-residential margin compression Victor was seeing. The $200,000 commercial TI job looks great in the revenue line. The job-level costing sheet reveals that the 14-week timeline, the subcontractor coordination, and the change order disputes brought it in at 31% gross profit. The residential panel upgrades it displaced were running at 58%.
The diagnostic is the same across all of them: pull the last 20 completed jobs, cost each one against labor, materials, and subcontractors, calculate gross profit and gross profit per day, tag the crew lead. What you find in the first pass almost always changes something about how the business prices, schedules, or assigns work.
If your monthly numbers look fine but the bank account tells a different story, the job-level costing sheet is the first thing to build — not the last.
The free diagnostic identifies your primary constraint across all five systems in five minutes, including whether Visibility is where to start.
Client details have been anonymized at the company's request. All figures are drawn from the engagement record. Individual results vary; this article describes one client's situation and is not a guarantee of future results.
I track gross profit monthly. Why do I also need it by job?
Monthly gross profit tells you the average depth of the lake. Job-level costing tells you where it's six feet deep. A healthy monthly average can coexist with several jobs per quarter that are running below breakeven — and those jobs will never surface in a monthly report. The job-level sheet is what lets you have the right conversation with the right foreman about the right project, rather than making general adjustments that may or may not address the actual problem.
Read More: Job Costing for Contractors: How to Stop Losing Money on Profitable Jobs →
What's the minimum I need to track per job to make this useful?
Five buckets: commission paid to the sales rep, materials used, direct labor (hours × fully burdened rate), subcontractor costs, and any finance fees. Add job revenue, calculate gross profit and gross profit percentage, note how many crew days were on site, and tag the foreman. That's the complete picture. You don't need software beyond a spreadsheet in the first pass — the goal is clean data, not a complex system.
Read More: The Weekly Scorecard: How to Know If Your Business Is Healthy in 5 Minutes →
My crews don't log materials consistently. How do I fix the data problem before building the costing sheet?
Make the material sheet a condition of job close-out, not a courtesy. The foreman doesn't mark a job complete until the material log is submitted. If the office has to reconstruct material costs manually, the foreman gets a reminder and then a documented conversation. The behavioral change usually takes two to three pay periods once it's tied to something the field team cares about — like a performance bonus that requires clean job data to calculate.
Read More: Profit Leakage: The 5 Places Home Service Businesses Lose Money →
How do I handle jobs where multiple crews touched the same site?
Tag the job to the crew lead who was on site the most days, or the foreman who had primary accountability for the outcome. The goal isn't to perfectly allocate labor across four crew members who bounced through — it's to establish a pattern over time. One messy job doesn't tell you anything. Twenty jobs tagged to the same foreman, all running 4 points high on direct labor, tells you something actionable. Start with the foreman who ran the most work in the last 90 days and build from there.
Read More: How to Build Accountability Without Micromanaging →
We do a mix of residential and commercial work. Should I track them separately?
Yes, from day one. Commercial subcontractor work and direct-to-homeowner residential work have different margin profiles, different sales costs, and different production rhythms. If they're pooled in the same costing sheet without a job-type tag, the monthly average will obscure which revenue stream is actually driving profitability. Run the same five-bucket costing model for both, but filter your monthly summary by job type so you can see the margin difference clearly.
Read More: How to Price Home Service Jobs for Real Margin (Not Just Revenue) →
What direct labor percentage should I be targeting?
For most foundation repair and waterproofing contractors, 15%–20% is a healthy range. Above 22% on a recurring basis across a foreman's jobs is a signal worth investigating — either the jobs are being underquoted, the crew is running inefficiently, or drive time and setup overhead are eating into productive hours. The number will differ by trade: HVAC installation crews typically run higher than service call technicians, and roofing tear-off runs differently than commercial flat work. The benchmark that matters most is your own historical average, once you have enough jobs costed to establish it.
Read More: Strategic Planning for Home Service Businesses: A Step-by-Step Framework →