Job costing for contractors: which jobs actually make money

Busy isn't the same as profitable. A plain-English guide to job costing, why labor is where margin leaks, and a 15-minute weekly check for every open job.

Ask most contractors which of last year’s jobs made the most money and you’ll get a confident answer. Ask them to show you the numbers and it gets quiet.

That’s not a knock. Most owners run on gut and a bank balance, and for a while that works. But a full schedule and a healthy account can hide jobs that quietly lost money. You only find out at tax time, when the year looks thinner than it felt.

Job costing is how you stop guessing.

What job costing actually is

It’s simple to say: for every job, compare what you estimated to what you actually spent, line by line.

Not one big number per job. Line by line, by cost code. Demo, framing, plumbing, electrical, drywall, finish, and so on. Labor and materials and subs tracked separately.

Why bother splitting it up? Because “the Johnson kitchen came in over” tells you nothing. “The Johnson kitchen came in over on finish carpentry labor” tells you exactly what to fix on the next bid, or the next crew assignment.

Labor is where the money leaks

Materials are usually easy to track. There’s a receipt, a supplier invoice, a PO. Subs send a bill.

Labor is different. It’s spread across days, crews and jobs. Someone forgets to clock to the right job. Someone works through lunch on Job A and logs it to Job B. A punch list drags on for two extra days and nobody notices because the hours land on the timesheet as “general.”

That’s why labor is where we see most estimates drift. Not because anyone’s lazy, but because labor hours that aren’t coded to a job and a cost code are invisible. If your crew clocks in and out without picking a job, you’re not job costing labor. You’re guessing.

Fixing this is mostly a habit, not a software problem: every hour gets a job and a cost code, every day.

Why month-end is too late

A lot of contractors look at job profit once, at the end. Or once a month, when the bookkeeper closes the books.

Here’s the problem. Say you’re on a six-week bathroom remodel and labor is running hot in week two. If you catch it in week two, you can talk to the crew, adjust the schedule, or have a change-order conversation with the homeowner while it still makes sense. If you catch it at month-end, the job is half done. If you catch it at closeout, it’s history.

Job costing is only useful while you can still do something about it. That means weekly, on every open job.

WIP, in plain English

You’ll hear bookkeepers and lenders talk about a “WIP report.” WIP means work in progress. It answers one question for each open job: how much of the work is done, and does the money match?

Say a job is priced at $100,000 and you’ve spent $40,000 of an expected $80,000 in costs. You’re about 50% done by cost. If you’ve only billed $30,000, you’re underbilled; you’ve done more work than you’ve been paid for, and you’re financing the job. If you’ve billed $70,000, you’re overbilled, which feels great until you realize that cash has to cover work you haven’t done yet.

Those numbers are made up, but the idea isn’t. WIP keeps you from mistaking customer deposits for profit. Exactly how you report it (especially for taxes, loans or bonding) is a conversation for your CPA.

Where software helps

Tools like JobTread let you build a budget from the estimate, code costs to the job as they come in, and see estimated vs. actual on each job. That’s the foundation. If your books live in QuickBooks, connecting the two matters, which is what our JobTread + QuickBooks stack is about.

Software won’t fix uncoded time or receipts sitting in a truck. It just shows you the gap faster.

Where to go from here

You don’t need a new system to start. You need 15 minutes a week and the discipline to look.

The 15-minute weekly job-cost check. Every Monday, for every open job, pull these five numbers:

  1. Labor hours: budgeted vs. used so far. Your earliest warning. If hours are burning faster than the work is moving, you’ll see it here first.
  2. Percent complete (your honest guess) vs. percent of budget spent. If you’re 40% done and 60% of the budget is gone, you have a problem worth a phone call today.
  3. Material and sub costs vs. budget, by cost code. Look for any one code running over. One bad line is easier to fix than a bad job.
  4. Unbilled change orders. Extra work that’s done or agreed but not written up and billed. This is money you’ve earned and haven’t asked for.
  5. Billed to date vs. percent complete. Your WIP gut check. Are you ahead, behind or about even on billing?

Then color each job:

  • Green: spend is at or below percent complete, change orders are written up, billing is roughly even with progress. Leave it alone.
  • Yellow: one number is drifting. Any cost code a bit over, or billing a bit behind. Talk to the PM or lead this week.
  • Red: labor or total cost is clearly ahead of progress, or unbilled change orders are piling up. Owner looks at it today, before another week of cost goes in.

Write the colors on a whiteboard or a shared sheet. After a month, you’ll start seeing patterns: which job types, which crews, which estimators. That’s what tightens your next bid.

If you’d like that Monday report waiting for you instead of building it by hand, pulling straight from your job software and books, book a free 30-minute call. We’ll show you how we’d set it up in the tools you already use and give you a written plan with a fixed price. No commitment until you’ve seen it.

Tell me the job you hate.

You'll get a reply within one business day, a 30-minute call, and a written plan with timeline and price.