The Job Costing Gap: How Service Businesses Lose 15% Margin on Jobs That Look Profitable on Paper
A residential electrical contractor in Nashville bids an average of 47 jobs per month. The owner, who has run the business for eleven years, estimates his profit per job at 22%. At the end of 2025, he ran a full job cost analysis for the first time. Actual average margin: 6.8%. Not on some jobs — on the entire portfolio. Fifteen percent of his profit was disappearing into costs he was not tracking. The business made $47,000 less than he thought it did, for the entire year.
The owner did not lose those jobs. He completed every one. The customers paid. The work was done to code. The employees got paid. But when he accounted for unpaid overheads (the owner's own time on estimates and troubleshooting, material waste from bulk orders that did not get itemized to specific jobs, truck mileage that was expensed but never allocated, and rework on jobs that passed inspection but required a second visit), the "profitable" jobs were barely breaking even. And the unprofitable ones were losing money that the profitable jobs had to cover.
This is the job costing gap: the difference between what you think a job costs and what it actually costs. In most service businesses under $5 million, that gap is between 8% and 18% of revenue. It is the single largest source of invisible margin erosion in field service operations — and almost nobody measures it.
The Four Layers of Hidden Cost
Job costing in a service business is not complex accounting. It is a matter of categorizing everything that happens on and around a job into four cost layers. Most businesses track layer one. Almost nobody tracks layers three and four.
| Layer | What It Includes | Do Most Businesses Track It? |
|---|---|---|
| Layer 1: Direct materials and subcontractors | Parts, supplies, specialty materials, third-party trades. | Usually — invoices exist |
| Layer 2: Direct labor | Technician wages for hours spent on the job, plus payroll tax and workers' comp burden. | Sometimes — if they track time per job |
| Layer 3: Job-attributable overhead | Travel time to and from the job, vehicle costs per mile, equipment usage, admin time for permit applications, material pickup trips, dump fees, and waste disposal. | Rarely |
| Layer 4: Failure and rework costs | Return visits for issues that passed initial inspection, materials wasted from measurement errors, callbacks for customer complaints, re-estimating time on change orders, and owner time spent troubleshooting. | Almost never |
The gap between estimated margin and actual margin is almost always in layers three and four. These are costs that happen, that are real, and that never get assigned to the job that caused them. Instead, they get buried in a general overhead bucket where they quietly erode the average — and the worst jobs look better than they should while the best jobs subsidize the worst.
The Portfolio Effect: How Profitable Jobs Carry the Losers
When you average costs across all jobs instead of tracking them per job, you create a dangerous dynamic. Consider a plumbing company that runs three types of jobs:
- Standard service calls (faucet repairs, drain cleaning, toilet replacements) — average ticket: $285. Fast to complete, predictable scope, low material cost.
- Mid-size installs (water heater replacements, toilet upgrades, garbage disposals) — average ticket: $1,200. Two to four hours, clear scope, known materials.
- Large remodels (bathroom repipes, kitchen plumbing) — average ticket: $4,800. Multi-day, complex, high risk of scope creep and rework.
Without per-job costing, the owner sees a blended margin of roughly 18% and assumes the business is healthy. But when we pulled the actual numbers for one such company, the picture was dramatically different:
- Standard calls: 26% margin — the company's best product, subsidizing everything else.
- Mid-size installs: 14% margin — acceptable but thinner than assumed, due to permit delays and pickup trips for forgotten parts.
- Large remodels: 3% margin — essentially break-even when you account for owner time spent on troubleshooting, rework from measurement errors, and the 20% of jobs that required a follow-up visit.
The owner had been losing money on 30% of his revenue for three years without knowing it. He was not growing his profit by taking large jobs. He was growing his revenue while shrinking his margin — a classic growth trap that per-job costing exposes immediately.
The Six-Step Job Costing Audit
You do not need accounting software or a CFO to run a job costing audit. You need a spreadsheet, the last three months of job data, and about half a day. Here is the framework:
- Pull every job for the last 90 days. List each job by customer, date, total revenue, and estimated margin at bid time.
- Add actual labor hours. For each job, record the actual hours logged by every employee who worked on it, including time spent at the shop preparing materials, travel to and from the site, and any return visits. Multiply by the fully burdened labor rate (wage + payroll taxes + insurance + PTO). This is your true labor cost.
- Itemize materials per job. Pull invoices for each job and add a 5-10% waste factor for materials that were purchased but not used, or for "grab bag" supplies that get pulled from truck stock without being tracked.
- Add job-specific overhead. For each job, estimate vehicle cost (use the IRS mileage rate or your actual per-mile cost), equipment cost (if you rented or used specialized tools), permit fees, dump fees, and any admin time spent on that specific job (estimating, permit applications, customer follow-up calls).
- Add rework and callback costs. This is the hardest but most important step. For each job, did the crew return for a reason related to this scope? Did a customer call back with a complaint that required a free visit? Did a measurement error cause materials to be reordered? These costs belong to the original job, not to overhead.
- Calculate actual margin per job. Total revenue minus total actual cost. Sort from highest to lowest. You will almost certainly find that the bottom 20-30% of jobs by margin are profitable on paper but not in reality.
The goal of the audit is not to produce perfect numbers. It is to discover the shape of your cost leakage. If you find that 80% of your margin comes from 50% of your jobs, you know exactly where to focus your pricing and operational improvement.
Three Operational Fixes That Close the Gap
Once you have run the audit, the fix is not to raise prices across the board (though some prices may need adjusting). The fix is to change how you estimate, execute, and review jobs so that the cost gap stops appearing in the first place.
1. Build a Cost Template Per Job Type
Most service business estimates start with a rough guess: "This looks like a four-hour job with $200 in materials." That guess is almost always wrong because it ignores layers three and four. Instead, build a cost template for each job type you run frequently. A cost template includes:
- Estimated labor hours with a 15% buffer for pickup trips, setup, and cleanup
- Travel time (round trip from the shop or last job)
- Vehicle cost computed automatically at your per-mile rate
- Material cost with a 10% waste factor built in
- Admin time allocation for the office tasks this job type generates
- A rework reserve (start with 5% of the total, adjust as you get real data)
A template takes about 30 minutes to build per job type. Once built, it becomes your floor price. You can still compete on value, speed, or service quality — but you never price below the real cost floor again.
2. Time Tracking at the Job Level (Without Making Technicians Hate It)
The single biggest obstacle to good job costing is that technicians do not want to track time per job. It feels like paperwork, and in many businesses, it is. The fix is to make time tracking a natural part of the workflow rather than an after-the-fact data entry task. Options include:
- A simple start/stop button on the dispatch app they are already using
- A two-field text message: "JOB-4382: 2.5h on site, 0.5h travel" that someone enters into the system
- GPS-based arrival and departure logging that auto-fills job time from location data
The best approach for most businesses is the one that requires the fewest extra steps from the technician. It does not matter if the time data is rough (within 15 minutes per job). What matters is that it is tracked for every job, not estimated at the end of the month.
3. The Weekly Margin Review (15 Minutes, Friday Afternoon)
Job costing is not a quarterly exercise. It is a weekly operations discipline. Every Friday, the owner or operations manager reviews the jobs completed that week, compares estimated vs. actual costs, and looks for patterns. The review has three questions:
- Which jobs came in under estimate, and what went right? (Reinforce that.)
- Which jobs came in over estimate, and why? (Fix that.)
- Are any job types consistently outside the cost template? (Update the template.)
This 15-minute habit is the single highest-ROI operational rhythm a service business owner can install. Over six months, it will close 50-70% of your job costing gap by making cost awareness part of your daily operations rather than an annual surprise.
The Estimation Trap: Why Accuracy Beats Speed
There is a persistent belief in service businesses that fast estimates win more jobs and that detailed costing slows you down. This is true only if you are competing purely on price. If you are competing on value, reliability, and trust, a detailed estimate that shows the customer exactly what they are paying for and why is a competitive advantage — not a liability.
A detailed cost estimate serves two purposes that a rough estimate cannot. First, it forces you to think through the job before you start, which reduces surprises, change orders, and rework. Second, it sets the customer's expectation correctly, which reduces disputes when the final bill arrives. Customers who receive a detailed line-item estimate are 40% less likely to dispute the final invoice, according to data from a mid-size electrical contracting association.
The best service businesses do both: they give the customer a simple, clean price up front (because customers hate complexity), but they build that price from a detailed internal cost template that accounts for every layer. The customer sees: "Total: $1,850." The business knows that breaks down to $720 labor, $340 materials, $210 travel and vehicle, $95 admin and permit, $35 rework reserve, and $450 gross margin. That internal clarity is what makes the difference between a business that knows its numbers and one that discovers them at tax time.
/assets/job-costing-iceberg.webp.
When You Know Your Numbers, You Control Your Business
The job costing gap is not a failure of accounting. It is a failure of operational visibility. The business generates the data that would reveal the gap — timesheets, material invoices, vehicle logs, callbacks — but nobody connects the dots. The data is scattered across different systems and mental models, and the cost of connecting it feels higher than the cost of not knowing.
That feeling is wrong. The cost of not knowing is 8-18% of your margin, every year, silently eroding the business you built. The cost of knowing is a half-day audit and a 15-minute weekly habit. The businesses that make that investment find themselves in a fundamentally different position: they can price with confidence, turn down unprofitable work, invest in their best job types, and grow profit faster than revenue. They stop guessing and start knowing.
The Nashville electrical contractor from the opening story ran his job costing audit, discovered the 15% gap, and made three changes: he built cost templates for his top five job types, implemented simple per-job time tracking, and started the Friday margin review. In twelve months, his actual margin went from 6.8% to 14.2% — an improvement of $68,000 on the same revenue. He did not raise prices on everything. He just stopped losing money on the jobs that were costing him more than he knew.
Where UnitAxon Fits (And Where It Does Not)
The job costing gap is fundamentally an operations visibility problem: cost data is generated every day but never connected to the specific jobs that created it. UnitAxon's Client Dashboard helps consolidate operational metrics, including job-level data tracking and trend visualization over time. For businesses using structured intake through our Smart Front Desk, the estimate-to-completion pipeline becomes more transparent, making it easier to flag jobs that diverge from expected costs. Our Lead Capture Agent and Follow-up Automation reduce the admin time layer by automating the front-end of the customer lifecycle, which is one of the hidden costs in layer three.
However, UnitAxon does not currently offer a dedicated job costing module that automatically allocates labor, materials, and overhead to individual jobs and produces per-job margin reports. The audit and cost template work described in this article is manual work that the business owner or office manager must do. We also do not integrate with QuickBooks, JobNimbus, or ServiceTitan at the job costing level — our current integrations focus on lead capture and communication workflows rather than back-office accounting. These are gaps we are aware of and exploring, but they are not available today.
Stop guessing what your jobs cost.
UnitAxon handles the front-end admin that inflates your job costs. Free up your operations time for the 15-minute margin review that protects your profit.
Explore UnitAxon ServicesRelated Reading from Signal Desk
- The Invisible Price Change: Why Scope Creep Destroys Your Margins (and What Works Instead) — Protecting margins on complex jobs through structured change order management.
- The Tools Sprawl Tax: How Five Disconnected Apps Cost Your Service Business More Than Their Subscriptions — How disconnected systems create invisible overhead that inflates every job cost.
- The Owner Bottleneck: How Being Indispensable Keeps Your Service Business Stuck at Its Current Size — Why owner time on estimates and troubleshooting is a hidden job cost that never gets allocated.
- The Payment Friction Loop: How Slow Billing Chokes Your Cash Flow — How delayed payments compound the cost gap by creating admin overhead per job.
- The Inventory Blind Spot: Missing Parts and Materials Hidden Costs in Service Businesses — How material waste from poor inventory management inflates per-job costs.