OPEN BOOKCONTRACTOR Request a call

How to know which of your jobs actually make money

Revenue tells you how busy you were. It tells you nothing about whether the work was worth doing. Here is the version that does.

Ask most contractors which of their jobs made money last year and you get a revenue figure. Ask which specific jobs made money and the room goes quiet.

The short answer: you cost each job after it closes, and compare the result against the margin you bid it at. Not against revenue, not against a company-wide average, and not against a feeling. Actual cost versus bid margin, job by job. If a job comes back more than five points under what you bid it at, that is a pricing or estimating problem rather than bad luck.

That sounds obvious written down. Almost nobody does it, and the reason is not laziness.

Why the numbers you already have do not answer this

Your accounting software gives you a profit and loss statement. The P&L is a real document and you should read it, but it answers a different question. It tells you how the whole company did over a period. It cannot tell you that the job on Elbow Drive lost you money while the one on 14th made more than you thought.

Averages hide exactly the information you need. A company running at 28% gross margin across forty jobs might be running at 40% on twelve of them and 12% on the rest. Those two businesses look identical on the P&L. They are not remotely the same business, and they require completely different decisions.

The other problem is timing. By the time a month closes and the bookkeeper finishes, the job is six weeks gone. The crew has moved on, the invoices are filed, and nobody remembers the two extra days. The learning evaporates.

What actually goes into a job cost

Getting this right is mostly about refusing to leave things out. Four buckets, and a fifth that people skip.

Labour, fully burdened. Not the hourly wage. The wage plus payroll taxes, workers' compensation, benefits, vacation accrual, and the real cost of any vehicle and phone that person uses. In most trades businesses fully burdened labour lands somewhere between 1.25 and 1.6 times the base wage. If you cost jobs at base wage you will be wrong on every single one, in the same direction, forever.

Materials, as invoiced. Not as estimated. Include the second delivery, the return trip, the waste, and the bin.

Subcontractors, as invoiced. Including whatever you agreed to on the phone and never wrote down.

Equipment. Rental is easy because there is a receipt. Owned equipment is where people cheat. If you own a lift and use it for nine days on a job, that job should carry nine days of what the lift costs you to own and run.

Overhead. The one everybody skips, and the reason so many "profitable" jobs are not. Rent, insurance, the office, software, the estimator, your own salary, the truck that never goes to site. That money gets spent whether or not a particular job exists, and every job has to carry a share of it.

Leave overhead out and you are calculating gross margin while calling it profit. The gap between those two numbers is where trades businesses quietly die.

The comparison that matters

Once you have the actual cost, put it beside the bid. One line each.

Bid Actual Variance
Labour hours 240 291 +51
Labour cost $12,000 $14,550 +$2,550
Materials $18,400 $19,910 +$1,510
Subs $6,000 $6,000
Overhead applied $9,600 $9,600
Total cost $46,000 $50,060 +$4,060
Contract value $59,000 $59,000
Gross margin 22.0% 15.2% −6.8 pts

That job still made money. Most owners looking at it would call it fine. It came back nearly seven points under bid, which means either the estimate was wrong or the field did not run the way it was supposed to. Both are fixable. Neither gets fixed if nobody looks.

Points, not dollars, is the right unit here. A $4,000 miss on a $59,000 job is a different problem from a $4,000 miss on a $400,000 job. Percentage keeps jobs of different sizes comparable.

The five-point rule

Here is a threshold worth adopting: if actual margin lands more than five points below bid margin, treat it as a signal rather than noise.

Five points is roughly the width of normal variance — weather, a slow day, a delivery that came late. Past that, something systematic is wrong, and it will almost always be one of four things:

  1. The estimate was optimistic. Hours were guessed from a good day rather than a typical one.
  2. The scope moved and nobody charged for it. Covered in more detail in the piece on unapproved extras.
  3. Production was slower than assumed. Crew, access, sequencing, supervision.
  4. Overhead is undercharged. If your overhead rate is wrong, every job is light by the same amount, and it will look like a pricing problem when it is an arithmetic problem.

The useful part is that each cause has a different fix, and you cannot tell them apart without job costing.

Doing this without new software

You do not need a system to start. You need a spreadsheet and a rule.

The rule: every job gets costed inside two weeks of closing. Not at month end, not at year end. Two weeks, while someone still remembers what happened.

The spreadsheet: one row per job. Columns for contract value, bid cost by category, actual cost by category, bid margin, actual margin, variance in points. Twelve rows in and the pattern starts showing. Thirty rows in and you will know things about your business you have been guessing at for years.

What tends to show up, in roughly this order:

  • One job type is consistently worse than the others, and it is usually the one you thought was your bread and butter
  • One crew or one foreman runs consistently over on hours
  • Small jobs carry proportionally more overhead than you charged them
  • The jobs you won easily are the ones running thin

That last one is worth sitting with. Easy wins are often easy because you were cheapest.

Start with the jobs you already suspect

You do not have to go back through the year. Take the three jobs from the last quarter that felt wrong — the ones where you had a nagging sense something got away from you — and cost those properly.

You will be right about at least one of them, and being right with a number in your hand is different from being right with a feeling. It changes how you bid the next one.

Then take the three that felt great. Cost those too. This is where people get surprised, because "felt great" usually means it ran smoothly, and smooth has very little to do with profitable. A job can run perfectly and still be priced 10% too low.

What changes once you can see it

Job costing is not an accounting exercise. It changes decisions:

You stop bidding work that does not pay. Not all of it — some work is worth taking for other reasons — but you start doing it on purpose rather than by accident.

You find out what your real capacity is worth. If one job type runs at 34% and another at 16%, an hour of crew time is not fungible. Filling the schedule stops being the goal.

Your estimating gets better on its own. Feed actual hours back into the next estimate and it self-corrects. Without that loop you repeat the same optimistic number indefinitely.

You get a reason to raise prices that you can defend. "I need more margin" is a feeling. "This job type has run at 14% across the last nine we did, and I need 25%" is a decision.

The uncomfortable part

Most owners who do this for the first time discover that somewhere between a fifth and a third of their jobs are making far less than they assumed, and a handful are losing money outright.

That is normal. It is also the entire point. Every one of those jobs was already unprofitable — the only thing that changes is that now you know, and knowing is what lets you fix the pricing, the estimate, or the decision to bid it at all.

The alternative is another year of being busy and wondering where the money went.

The 10 Numbers I Check Every Monday

One page. Ten minutes, every Monday. Every number has a line next to it that tells you when to act.

Get the sheet — free

Common questions

How often should I cost my jobs?

Within two weeks of a job closing, while people still remember what happened. Monthly or quarterly costing tells you what went wrong long after you could have done anything about it, and nobody can explain a variance from six weeks ago. Two weeks is soon enough that the foreman still recalls the day the delivery was late.

Do I need job costing software to start?

No. A spreadsheet with one row per job and columns for bid cost, actual cost, bid margin and actual margin will show you the pattern inside thirty jobs. Software helps once you are costing consistently and want the data captured automatically, but buying software before you have the habit usually produces an expensive system nobody updates.

What if my jobs are too small to cost individually?

Cost them by category instead. Group similar small jobs — service calls, repairs, single-day work — and cost the group monthly. You will still see whether that category carries its share of overhead, which is the question that matters. Small jobs are also the ones most likely to be under-priced, because setup and travel do not shrink with the invoice.

← All articles