Most service businesses know whether the year was good. Very few know which jobs made it good — and those are entirely different questions. This piece covers what job costing actually assigns, the labor burden calculation that most companies get wrong by 70% or more, the dividing line between job cost and overhead, the four-field system that survives a busy week, the five patterns that appear in every company, how to compare crews without starting a war, and a full year in numbers.
In this article
- What job costing is, and why the P&L cannot replace it
- Labor burden: the number most companies get wrong
- What to assign to a job, and what belongs to overhead
- The lightweight way to start
- Reading the report: five patterns that always appear
- The decisions job costing unlocks
- A year in numbers
- Comparing crews without starting a war
- Feeding the numbers back into estimating
- Doing this without buying software
- Six mistakes that make job costing useless
- Five numbers to track
- Frequently asked questions
What job costing is, and why the P&L cannot replace it
Most service businesses know whether the year was good. Very few know which jobs made it good. The profit and loss statement tells you what happened in aggregate; job costing tells you where it happened — and those are entirely different questions.
Job costing means assigning to each individual job the revenue it produced and the costs it consumed: labor with real burden, materials, subcontractors, equipment time and the specific costs that job caused. What comes out is the gross profit of that job, and — far more useful — the pattern across dozens of them.
The pattern is where the money is. Almost every service company discovers the same three things when it starts: one job type is subsidizing another, one crew produces materially different results on the same work, and the jobs the owner enjoys most are frequently not the profitable ones.
Labor burden: the number most companies get wrong
The single most common job costing error is using the hourly wage as the labor cost. The real cost of an employee hour includes payroll taxes, workers' compensation, general liability tied to payroll, benefits, paid time off, training, and — critically — the difference between hours paid and hours billable.
A worked example. A technician earning $28 per hour, with payroll taxes and insurance adding 22%, benefits adding $3.10 per hour, and 2,080 paid hours per year of which 1,560 are billable due to holidays, training, meetings and drive time between jobs:
- Wage cost: $28.00 × 2,080 = $58,240
- Taxes and insurance at 22%: $12,813
- Benefits: $3.10 × 2,080 = $6,448
- Total annual cost: $77,501
- Divided by 1,560 billable hours: $49.68 per billable hour
That is 77% above the wage. A company costing jobs at $28 per hour believes it is making 40% gross margin while actually making single digits — and it will keep discounting, because the numbers on the estimate say there is room.
Keep reading — free
The rest of this article is worth the 20 seconds
Tell us where to send it and the full piece unlocks right here, along with everything else on this blog.
Rather just talk? Message us on WhatsApp.
What to assign to a job, and what belongs to overhead
Job costing breaks down when everything gets pushed into jobs or when nothing does. The dividing line is causation: if the cost exists because that job happened, it belongs to the job.
- Direct labor, at burdened rate, including drive time to and from that job.
- Materials and equipment rental specific to that job, including waste and returns.
- Subcontractors hired for it.
- Permits, disposal, specialty consumables caused by it.
- Rework, which must be costed to the original job rather than treated as a new one — this is the single most revealing practice in the entire method.
Overhead is everything that exists whether or not that job was sold: office rent, software, the owner's administrative time, advertising, insurance not tied to payroll, accounting. It is recovered through pricing, not assigned to individual jobs.
The lightweight way to start
Companies fail to implement job costing because they try to build the perfect system. The version that survives contact with a busy week has four fields, captured for every job:
- Job identifier and type.
- Hours by person, including drive time.
- Materials and subcontractor cost.
- Invoiced amount.
That is enough to produce gross profit per job, gross profit percentage, and gross profit per labor hour — which is the most useful of the three for a service business, because labor hours are what the company actually sells.
Two practical rules make it stick. First, the crew captures hours the same day, not weekly, because reconstructed hours are fiction. Second, the numbers are reviewed with the crews rather than hidden from them; teams that see the gross profit of their own jobs behave differently, and defensively hoarding those figures wastes the biggest benefit of the exercise.
Reading the report: five patterns that always appear
After thirty or forty jobs, the same patterns emerge in nearly every service company:
- The subsidized job type. One category that looks busy and produces very little gross profit per hour — usually the one with heavy drive time or unbilled diagnostics.
- The small-job penalty. Fixed setup and travel spread over a short job destroy margin, which is why minimum charges exist.
- The estimator gap. Two estimators quoting the same work with materially different outcomes, invisible before job costing.
- The customer who is not worth it. Specific accounts with chronic scope creep, slow payment and repeat callbacks.
- The hidden winner. A job type nobody prioritizes that produces the best gross profit per labor hour — and that marketing has never targeted.
The decisions job costing unlocks
Data changes nothing by itself. These are the four decisions it makes possible, in the order they usually pay off:
Reprice or exit the subsidized work. Not necessarily by dropping it — often a minimum charge, a travel component or a scope change is enough.
Aim marketing at the hidden winner. Most companies advertise what they are known for rather than what pays best; correcting that is free.
Fix the estimating gap. Usually training and a checklist, not a personnel problem.
Set a defensible minimum. Once the cost of leaving the shop is known, the floor stops being a guess and becomes policy that the office can enforce without asking the owner.
A year in numbers
A twelve-person service company implementing job costing with four fields and a burdened labor rate.
- Q1: baseline. Revenue $1.42M annualized, gross margin believed to be 38%, actually 26% once burden was applied correctly.
- Q2: two findings acted on — a minimum charge introduced for small service calls, and rework costed to original jobs, revealing $31,000 of annualized rework concentrated in one job type.
- Q3: marketing shifted toward the highest gross-profit-per-hour category; the subsidized category repriced with a travel component.
- Q4: gross margin at 33%, on nearly identical revenue.
Seven points of gross margin on $1.42 million is roughly $99,000 of additional gross profit, achieved without new customers, new trucks or a price increase across the board. The changes were surgical because the data said exactly where to cut.
The most uncomfortable finding was the most valuable: the job type the owner considered the company's specialty ranked fourth of five in gross profit per labor hour. It was kept, repriced, and stopped being the focus of the marketing budget.
Comparing crews without starting a war
The most sensitive output of job costing is the comparison between people. Handled badly, it produces defensiveness and gamed timesheets; handled well, it is the fastest quality improvement available to a service company.
Four rules make the comparison honest:
- Compare like jobs only. A crew assigned the difficult accounts will look worse on any raw average, and everyone in the company knows it.
- Use a rolling window of at least ten jobs. One bad job proves nothing and one good one proves less.
- Separate what the crew controls from what it does not. Material price increases, estimating errors and customer-caused delays are not crew performance.
- Present it as a question, not a verdict. "These two jobs took four hours longer — what did you run into?" produces information; an accusation produces a story.
The frequent discovery is that the slower crew is doing something the faster one skips — and sometimes that something is the reason the faster crew generates the callbacks. Job costing that includes rework catches this; job costing that ignores rework rewards the wrong behavior and quietly degrades the company.
Feeding the numbers back into estimating
Job costing that never reaches the estimate is an accounting exercise. The loop closes when actuals become the basis of the next quote, and three habits make that happen:
Keep a live table of actual hours by job type. Not the hours you believe the work takes — the hours it has actually taken across the last ten instances, with the range as well as the average. The range matters more than the average when quoting fixed price.
Quote from the range, not the best case. Most estimators quote near the fastest job they remember. Pricing at or slightly above the median, with the spread understood, is what stops a busy quarter from being an unprofitable one.
Review lost bids too. If the jobs you lose are consistently the ones you priced correctly, the problem is not the price — it is the proposal, the positioning or the market segment being targeted. That distinction is impossible to make without the cost data underneath it.
A company that does this for a year stops arguing about whether prices are too high. The conversation becomes specific: this job type needs a different price, that one needs a different scope, and the third should be marketed harder — which is exactly the level of specificity that job costing exists to provide.
Doing this without buying software
Software helps, and it is not the obstacle. Every service company already has the two inputs job costing requires: someone records hours for payroll, and someone records what was invoiced. The missing piece is usually a single column that ties both to a job number.
A practical path that costs nothing:
- Give every job a number at the moment it is scheduled, and write it on the timesheet, the material receipt and the invoice.
- Use one spreadsheet with one row per job and the four fields. Thirty rows is enough to start seeing patterns; three hundred is enough to run the company by.
- Reconcile weekly, not monthly. A week of missing hours can be recovered from memory; a month cannot.
- Move to software when the spreadsheet hurts, not before — and choose it based on whether crews will actually enter time in the field, because a system nobody feeds produces confident numbers built on nothing.
The companies that struggle here are almost never the ones with weak tools. They are the ones where the job number never makes it onto the timesheet — which is a five-second habit that determines whether any of this works.
Six mistakes that make job costing useless
- Using the wage instead of the burdened rate. Every conclusion after that is wrong in the same direction.
- Ignoring drive time. In a service business it is a real, large and unevenly distributed cost.
- Treating rework as a new job. It hides the cost of the exact problem you most need to see.
- Pushing overhead into jobs. It makes every job look bad and provides no guidance.
- Collecting data nobody reviews. A report that is not read monthly is a chore, not a system.
- Hiding the numbers from the crews. The people who influence job cost most are the ones kept furthest from it.
Five numbers to track
Five metrics carry the whole method. Gross profit per labor hour, by job type, which is the single most decision-useful number in a service company. Gross margin percentage by job type, tracked over time rather than as a snapshot. Estimated versus actual hours, by estimator and by job type, which finds the pricing gap. Rework cost as a percentage of revenue, costed to original jobs. And billable hour utilization — billable hours divided by paid hours — because that ratio sits underneath the burdened rate and every price the company charges.
Find out which of your jobs are actually profitable
Send us thirty recent jobs with invoiced amount, hours by person including drive time, materials and subcontractor cost. We will run gross profit per labor hour by job type, apply a proper burden rate and show you which work is subsidizing the rest.
Frequently asked questions
How do you calculate labor burden correctly?
By dividing the total annual cost of an employee by the hours that employee is actually billable, not by the hours paid. The total cost includes wages, payroll taxes, workers compensation, general liability tied to payroll, benefits, paid time off and training. A worked example: a technician at $28 per hour over 2,080 paid hours costs $58,240 in wages; taxes and insurance at 22% add $12,813 and benefits at $3.10 per hour add $6,448, for a total of $77,501. If only 1,560 of those hours are billable after holidays, training, meetings and drive time, the true cost is $49.68 per billable hour — 77% above the wage. A company costing jobs at $28 believes it is earning 40% gross margin while actually earning single digits, and it will keep discounting because the estimate says there is room.
What costs belong to a job and what belongs to overhead?
The dividing line is causation: if the cost exists because that job happened, it belongs to the job. That includes direct labor at burdened rate with drive time to and from the site, materials and equipment rental specific to the job including waste and returns, subcontractors hired for it, and permits, disposal and specialty consumables it caused. It also includes rework, which must be costed back to the original job rather than opened as a new one — the single most revealing practice in the whole method. Overhead is everything that exists whether or not the job was sold: office rent, software, the owner's administrative time, advertising, insurance not tied to payroll and accounting. Overhead is recovered through pricing, not allocated into individual jobs, because pushing it into jobs makes every job look bad and provides no guidance.
What is the simplest way to start job costing?
Four fields per job: job identifier and type, hours by person including drive time, materials and subcontractor cost, and invoiced amount. That is enough to produce gross profit per job, gross margin percentage and gross profit per labor hour — the last being the most decision-useful number in a service business, because labor hours are what the company actually sells. Two rules make it stick. Crews capture hours the same day rather than weekly, because reconstructed hours are fiction. And the numbers are reviewed with the crews rather than hidden from them, since teams that see the gross profit of their own jobs behave differently. Companies fail at job costing by trying to build the perfect system; the four-field version is the one that survives a busy week.
What does job costing usually reveal?
Five patterns appear in nearly every service company after thirty or forty jobs. A subsidized job type that looks busy and produces very little gross profit per hour, usually because of heavy drive time or unbilled diagnostics. A small-job penalty, where fixed setup and travel spread over a short job destroy margin — which is why minimum charges exist. An estimator gap, with two people quoting the same work and producing materially different outcomes. A customer who is not worth it, with chronic scope creep, slow payment and repeat callbacks. And a hidden winner: a job type nobody prioritizes that produces the best gross profit per labor hour and that marketing has never targeted. The most uncomfortable finding is common — the work the owner considers the specialty is frequently not the work that pays best.
How do you compare crews without creating conflict?
With four rules that keep the comparison honest. Compare like jobs only, because a crew assigned the difficult accounts looks worse on any raw average and everyone in the company knows it. Use a rolling window of at least ten jobs, since one bad job proves nothing. Separate what the crew controls from what it does not — material price increases, estimating errors and customer-caused delays are not crew performance. And present the finding as a question rather than a verdict: asking what they ran into produces information, while an accusation produces a story. The frequent discovery is that the slower crew is doing something the faster one skips, and that the skipped step is the source of the callbacks — which only shows up when rework is costed back to the original job.