You can have the busiest year of your life and end it with less money than you started. Every contractor who has been out on his own for more than a couple of years has had that year. The trucks were moving, the phone rang, the crew was booked solid, and somehow December came and the account was flat.

The reason is almost never a mystery once you look. It is that some of the work was losing money and nothing in the business was set up to tell you which work. Revenue hides it. A $9,000 month feels like a good month whether it earned you $2,200 or cost you $400.

Job profitability is the number that ends the guessing. This guide covers what it actually means, how to calculate it without an accounting degree, and what to do once you can see it.

What job profitability actually means

Job profitability is what is left from a single job after every real cost that job caused. Not after materials. Not after materials and wages. After everything.

Job profit = Revenue − Loaded labor − Materials at cost − Allocated overhead

Three of those four are straightforward and most contractors already track them in some form. The fourth is where the money disappears.

NumberWhat it isWhere contractors go wrong
RevenueWhat the customer actually paidUsing the quoted price instead of the collected price
Loaded laborHours on the job × true cost per hourUsing the wage instead of the loaded rate
MaterialsWhat you paid the supply houseUsing the marked-up invoice line instead of the receipt
Allocated overheadThis job's share of running the businessLeaving it out entirely

Loaded labor is not the hourly wage

If you pay a journeyman $34 an hour, that man does not cost you $34 an hour. He costs you the wage plus the employer side of FICA, plus unemployment, plus workers comp, plus any benefits, plus the hours you pay for that are not billable.

Workers comp alone is brutal in the electrical trade and worse in roofing. Depending on your state and your experience modifier, you can be paying anywhere from eight to twenty five dollars per hundred dollars of payroll.

ComponentPer hour
Base wage$34.00
Employer FICA (7.65%)$2.60
Federal and state unemployment$0.95
Workers comp (at $12 per $100)$4.08
Health contribution$3.50
Paid time off, spread across worked hours$1.70
Loaded cost$46.83

That is 38 percent over the wage, and these are not aggressive assumptions. If you have been costing jobs at $34 an hour, every single job in your history is wrong by roughly $13 for every hour anybody touched it. On a 40 hour job that is $520 you thought you made and did not.

If you have not run this number for your own shop, the true cost of an employee calculator does it in about two minutes.

Allocated overhead is the one everybody skips

Overhead is everything you pay for whether or not you turn a wrench that week. Truck payments, fuel, insurance, phone, software, the accountant, tools, the yard, and your own pay for the hours you spend quoting and chasing money instead of installing.

That money has to come out of jobs, because jobs are the only thing that brings money in. The question is how much of it each job carries.

The simplest honest method is to allocate by billable hour. Add up annual overhead, divide by annual billable hours, and you have an overhead rate per hour that you apply to every job.

A one truck shop with $62,000 of annual overhead and 1,600 billable hours carries $38.75 of overhead per billable hour. A two man shop with $104,000 of overhead and 3,100 billable hours carries $33.55.

Two jobs that look identical and are not

Here are two 200 amp service upgrades from the same month. Same price, same scope on paper.

Job A, Maple StJob B, Hancock Ave
Collected revenue$3,070$3,070
Field hours8.013.5
Loaded labor at $46.83$374.64$632.21
Materials at cost$485$605
Overhead at $38.75 per hour$310.00$523.13
Job profit$1,900.36$1,309.66
Margin61.9%42.7%

Both made money, so neither one hurts. But Job B took five and a half more hours for the same check, and the reason is worth knowing. Maybe the panel was in a finished basement. Maybe the POCO rescheduled the disconnect. Maybe the homeowner stood in the doorway asking questions for an hour.

Track twenty jobs and the pattern stops being anecdotal. You find out that finished basement services run four hours long every time, and you either price them differently or stop selling them at the same number.

What good looks like

After loaded labor, materials at cost, and allocated overhead, most healthy small shops land somewhere between 15 and 25 percent net margin per job. Service calls usually run higher because the overhead per hour is spread across a short visit. Big installs usually run lower because material is a bigger share and material carries less margin than labor.

If you are consistently under 10 percent, the problem is almost always price, not efficiency. Contractors tend to attack this from the cost side because that feels controllable, but you cannot buy copper cheap enough to fix a bad price.

If you are consistently over 35 percent, check that you really included everything. Unpaid owner labor is the usual missing piece.

How to actually do this without hating your life

The system only works if entering a job takes a minute. Six fields, entered the day the job closes:

  1. Customer and date
  2. Collected revenue
  3. Field hours, all hands
  4. Material cost from the receipt
  5. Job type, so you can compare like with like
  6. One line of notes about anything unusual

Your loaded labor rate and overhead rate are set once, at the top of the sheet, and the math runs itself. The full build is covered in how to track job profitability without buying software.

Enter the job the day it closes. Not Friday, not month end. Friday you will not remember whether Hancock Ave was thirteen hours or eleven, and a tracker full of guesses is worse than no tracker because you will trust it.

What to do once you can see it

The first run is usually unpleasant. Most contractors find that somewhere between a fifth and a third of their jobs lost money, and that the losers cluster. Same job type, same customer, same referral source.

Three moves, in order of how fast they work:

Reprice the losing job type. If finished basement service upgrades run four hours long every time, they are not a $3,070 job, they are a $3,600 job. You are not raising prices, you are correcting one.

Fix the hours, not the price, where the hours are the problem. If a job type runs long because you are staging material twice or going back for parts, that is a process problem and repricing it just makes customers pay for your truck stock.

Let the bottom go. Every shop has a customer or two who generate work that never clears cost. Keeping them busy feels safer than an empty week, but an empty week costs you less than a job that loses $300.

None of this requires software, a consultant, or a change to how you run jobs. It requires knowing the number. Most contractors never do, which is exactly why the ones who do pull away.

Frequently Asked Questions

What is the difference between job profitability and gross profit?
Gross profit is revenue minus direct costs, usually just labor and materials. Job profitability goes further and subtracts the job's share of overhead as well. A job can show healthy gross profit and still lose money once the truck, insurance, and office time it consumed are accounted for. Gross profit tells you whether the work paid for itself. Job profitability tells you whether it paid for the business.
How do I calculate job profitability if I am a one man shop?
The same way, with one adjustment. Pay yourself a market wage as a labor cost on every job you work, using what you would pay a journeyman of your skill. Then allocate overhead per billable hour as normal. What is left after both is real business profit, separate from your wage. If there is nothing left, you own a job, not a business, and your pricing needs to change.
What overhead costs should be allocated to jobs?
Everything that is not a direct job cost: vehicle payments and fuel, general liability and commercial auto insurance, phone and internet, software, accounting and legal, tool replacement, licensing and continuing education, yard or shop rent, advertising, and the owner's non-field time. Add the annual total, divide by annual billable hours, and apply that rate per job hour.
How many jobs do I need to track before the data is useful?
Twenty is usually enough to see pattern rather than noise, which for most small shops is four to eight weeks. You will spot the first obvious problem well before that, often in the first five, but resist repricing anything off a sample of three. One bad job can be a bad day.
Should warranty callbacks be charged against the original job?
Yes, if you want honest numbers. A job that needed a two hour return trip cost you those two hours. Charging them back to the original job is what reveals that a particular install type or a particular crew is generating rework. If you book callbacks as their own zero revenue jobs instead, your margins look fine and the pattern stays hidden.
Does job profitability tracking work for new construction and bid work?
It works and it matters more, because the jobs are bigger and a bad one hurts longer. The only change is that you track against the bid rather than against a flat rate price, and you want phase level hours rather than one total, so you can see which phase blew the estimate. The arithmetic underneath is identical.