Job Costing: The Number-Tracking Habit That Separates Profitable Operators
- TradesKraft

- Jul 10
- 10 min read
A mobile heavy duty mechanic in the Fraser Valley had been running his own operation for six years. Four employees. Four fully equipped service trucks on the road every day. Steady contracts with construction and agricultural equipment operators across Abbotsford, Chilliwack, and the surrounding area. From the outside it looked like exactly what a successful trades business is supposed to look like.
At the end of year five his accountant showed him the net. It did not match the activity. He had been generating solid revenue across three service categories; breakdown response, scheduled maintenance, and hydraulic repairs. Two of the three were running at a loss. The breakdown response work; his highest volume category; had been covering parts and labour wages but not the truck costs, not the dispatch time, not the diagnostic hours his lead tech was giving away on site, and not the callbacks on jobs that had to be revisited.
Four trucks burning diesel every day. Four wages on the payroll. Parts inventory spread across four service bodies with no consistent tracking of what went on which machine. And no visibility into which jobs were profitable and which ones were quietly erasing the margin from the ones that were.
He had been busy building a business that was losing money on its most common work. He did not know because he had never tracked what any individual job actually cost him to complete.
What job costing is
Job costing is the practice of tracking the actual cost of every job; labour, materials, and overhead allocation; against what was quoted or invoiced. It produces one number per job that tells you whether that job made money, lost money, or broke even.
Most trades operators know their total revenue and their total expenses in broad terms. They can tell you what they invoiced last month and roughly what they spent. What they cannot tell you is which jobs inside that month produced margin and which ones consumed it. The total looks fine right up until it does not, and by then the pattern has been running for a long time.
For a mobile heavy duty operation with four employees and four service trucks, the stakes are higher than they are for a sole operator. Every layer of complexity; multiple techs, multiple vehicles, parts inventory spread across four service bodies, travel time between calls; is a layer where margin can leak without a single flagged expense. Job costing is what connects the revenue on the invoice to the actual cost of producing it.
The three things job costing measures
Every job in a mobile trades operation has three cost components. Tracking all three is what makes the exercise useful.
Labour. The hours each technician spent on the job, multiplied by the true cost of that labour. For an operation with four employees, that means wages plus payroll burden; CPP contributions, EI, vacation pay, and WorkSafeBC premiums. Every hour that touched the job belongs in the number, including the lead tech's diagnostic time on site, the drive time to and from the call if it is being absorbed rather than billed, and any time spent sourcing parts for a specific machine.
The gap between quoted hours and actual hours across four technicians is where most mobile shops leak margin systematically. One tech who consistently runs over on similar jobs is a training or efficiency problem. All four techs running over on the same job type is a quoting problem. Without per-job tracking across the team, neither pattern is visible until the bank account reflects the damage.
Labour efficiency across a four-person team is also not uniform. In a shop with employees, some technicians work faster, some are better diagnosticians, some generate more callbacks. Job costing by technician tells you which jobs each tech completed, how long they took, and how those hours compared to what was quoted. That information is the foundation of any performance conversation and the only way to identify who needs support and what kind.
Materials. What was pulled from each truck for a specific job, what was ordered and installed, and what appeared on the invoice. For a mobile operation with four service bodies each carrying thousands of dollars in parts inventory, this is the most difficult component to track and the most costly to ignore.
Parts pulled from truck stock that do not get invoiced to the job are a direct cost that produced no revenue. Parts ordered for one machine that end up on another without being transferred on the work order are a margin leak that compounds across four vehicles and dozens of jobs per month. Consumables that get used freely without per-job allocation; oils, filters, fittings, shop supplies; accumulate into a meaningful gap between what the business spent on materials and what it recovered.
The fix starts with a discipline: parts pulled for a job get recorded on that job's work order before the truck moves to the next call. Every tech. Every job. Every time. On paper if there is no digital system yet. The habit matters more than the platform.
Overhead allocation. This is the component most mobile operators miss entirely, and for a four-truck operation it is the largest single gap between perceived and actual profitability.
Four company-owned service trucks means four loan or lease payments, four commercial ICBC policies, four sets of tires and maintenance schedules, four fuel accounts, and four fully equipped service bodies that depreciate every day they are on the road. As we broke down in what it actually costs to run a trades business in BC, the vehicle line item alone runs $8 to $14 per billable hour for a single working truck. Multiply that across four service trucks and the overhead per billable hour is one of the heaviest cost loads in the trades.
Every job that runs through the operation consumes a share of those fixed costs. Take total monthly overhead; all four truck costs, insurance, payroll administration, software, phone, and any other fixed expenses; divide by your realistic billable hours across the four-person team for the month, and you have an overhead cost per billable hour. That number gets applied to every job based on hours consumed. A job that does not recover its overhead contribution plus its labour and materials is not a breakeven job. It is a loss.
The Fraser Valley mechanic's breakdown response category was generating enough revenue to cover wages and parts. It was not covering its share of the truck overhead. Four trucks burning fuel, accumulating wear, and requiring insurance coverage on every breakdown call; and none of that cost was being allocated to the jobs that caused it. The breakdown category looked like a high-volume revenue stream. It was functioning as an overhead subsidy, paid for by the maintenance and hydraulic work.
Why operators do not track it
The standard answer is time. A four-person mobile operation is busy. The owner is dispatching, quoting, managing the team, handling client relationships, and in many cases still working calls himself. Adding a job costing step to an already full operational load feels like paperwork for its own sake.
The real answer is that most operators have never been shown what the information is worth. When you do not know what job costing reveals, it looks like administrative burden with no clear payoff. When you see it reveal that your highest-volume service category has been subsidizing itself for eighteen months, it looks like the most important habit in the business.
The simple version does not require software. It requires a one-page tracker per job with five fields: tech name, quoted hours, actual hours, materials cost, and materials invoiced. Filled in by the tech at job close before the work order is submitted. Four minutes per job. Across a month of work across four technicians, it produces a picture of where margin is being made and where it is being lost that no amount of end-of-year accounting can replicate.
What the information does for pricing
Job costing is not just a diagnostic tool. It is the feedback loop that makes quoting accurate over time across a multi-tech operation.
Most mobile HD operators price jobs based on the owner's experience; a rough sense of how long similar jobs have taken and what parts usually cost. That process worked when the owner was doing all the work himself. It fails systematically when four different technicians are completing jobs at different efficiency levels, on different equipment, across a service area that adds variable travel time to every call.
A Fraser Valley operator who has tracked eighty breakdown calls and knows they average 4.8 hours of billable labour across his team against a quoted 3.5 has the data to fix the quote. Not to raise prices arbitrarily; to price accurately. The client is paying for equipment that works. An accurate quote that reflects what the job actually costs to deliver is more professional than a low quote that requires absorbing two hours on every call.
This connects directly to what the Real Rate Calculator produces for a multi-person operation: the floor rate that every billable hour across the team has to clear before the business has paid itself a dollar. Job costing applies that floor to individual jobs and tells you whether each one cleared it, and which tech completed it at what efficiency.
Travel time: the mobile operation's hidden cost
This one is specific to mobile trades and it is where a significant amount of margin goes unaccounted for in most operations. Every call a Fraser Valley mobile HD shop takes involves drive time. Drive time from the previous call to the new call. Time spent waiting at a gate or a yard while someone finds the foreman. Time spent at the end of a call loading parts back into the service body and documenting the work order.
That time has a cost. Four technicians absorbing an average of forty-five minutes of non-billed travel and admin time per call, across eight calls per day across the team, is three hours of paid labour per day that produced no revenue. Across a twenty-two-day working month that is sixty-six hours. At a fully loaded labour cost of $55 per hour that is $3,630 per month in absorbed costs that are not appearing on any invoice.
Job costing makes this visible because actual hours per job, tracked consistently, reveals where billed and unbilled time diverge. Some of that travel time belongs in the overhead calculation. Some of it is recoverable through service call minimums, travel charges, or zone pricing. None of it can be addressed until it is measured.
Margin drift across a team
One of the most valuable things job costing reveals in a multi-person operation is margin drift; the gradual erosion of profitability on specific job types, specific clients, or work done by specific technicians.
Margin drift across a four-person team happens for reasons that are not visible at the business level. One technician's efficiency on a job type declines as their workload increases. Parts costs on a specific equipment brand creep up and quotes do not adjust. Scope grows on a regular client's jobs because the relationship makes pushback uncomfortable and change orders do not happen consistently. Each of these individually produces a small gap. Together, tracked over six to twelve months without job costing data, they move profitable categories into loss positions without a single visible event that flags the change.
An operator tracking job costs monthly across four technicians sees the drift before it becomes a financial problem. A materials cost percentage creeping up on one truck's work orders tells you something about parts management or pricing on that vehicle. Labour hours per job trending upward on one tech's calls tells you something about efficiency or workload distribution. Without job costing, neither signal exists until the bank account reflects the damage.
The connection to the broader financial picture
Job costing is one layer of the financial system that the Recalibrated financial diagnosis work builds out in full. If you have read the cash flow post, you already understand that profit on paper and cash in the account tell different stories. Job costing adds a third layer: it tells you which jobs and which service categories produced the profit that appeared on paper, and which ones quietly consumed it.
The operators who work through Business Recalibrated and run the full financial diagnostic almost always find at least one service category or job type running below where they assumed. The Profit 911 diagnostic that opens the program was built specifically to surface those gaps; the labour leakage, the materials shrinkage, the overhead that is not being recovered per job. Job costing is the habit that prevents those gaps from reopening after the correction is made.
For a four-person operation at the stage where a full KPI scorecard makes operational sense; labour efficiency by technician, materials cost percentage as a monthly tracked metric, margin drift as a leading risk indicator across service categories; the measurement systems built in the Journeyman program go further. The per-job habit feeds the business-level scorecard. The scorecard makes the decisions that the Fraser Valley operator was making blind.
Starting without software
Job costing does not require a system until it does. For a four-person mobile operation, a shared spreadsheet or a paper work order with five tracked fields per job is enough to start producing useful data within thirty days.
The five fields that matter: tech name, job type, quoted hours, actual hours, materials cost, materials invoiced. Submitted by each tech at job close. Reviewed by the owner weekly.
As volume grows and manual tracking becomes the constraint, trades-specific field service platforms; Jobber, ServiceTitan, Simpro, and similar tools; have job costing built into the work order and dispatch workflow. Parts can be assigned directly to jobs from a parts list, tech hours are logged against job numbers, and margin is calculated automatically. The Journeyman program covers the digital tools stack specifically for operations at this stage. The habit comes first. The software scales the habit.
What the Fraser Valley operator changed
Once the breakdown response losses were visible, the correction was direct. The quote model was rebuilt against actual average hours across the team, not the owner's solo experience from five years earlier. Overhead allocation was made explicit; every job carried a per-hour truck cost based on total fleet overhead divided by monthly billable hours. A parts discipline was introduced; parts pulled for a job were logged on that job's work order before the tech drove away, on every truck, every time.
Within two quarters, breakdown response was profitable. The maintenance and hydraulic categories, which had been carrying the full weight of the operation's overhead, improved their apparent margins because the overhead was now being distributed correctly. He had been running a capable operation for six years. The four trucks were well maintained, the techs were skilled, the clients were loyal. The problem was not the operation. The problem was that the financial information was incomplete, and incomplete information produces decisions that look reasonable and are not.
Job costing did not fix the business. It fixed the information the business was making decisions with. If you want to know where your numbers are telling the wrong story, the discovery call is where that conversation starts.





Comments