Skip to content
Using Zeus

Did That Job Actually Make Money?

The final payment felt good. Whether the job made money is a different question, and the answer lives in hours, receipts, and one report.

Mireille Saintil

8 min read

A contractor sorting a handful of paper receipts at an open truck tailgate at dusk

The short answer: the final payment feeling good tells you nothing. Whether a job made money is hours against what you quoted, plus every receipt that belonged to it, compared with the profit you priced in. Your gut is wrong about this more often than not, because the hours nobody logged are exactly the hours that ate the margin.

The final payment landed while you were loading the truck. You saw it come in (tailgate down, drop cloths half folded, the last of the daylight going), and you did the tally every contractor does at that moment. Good client. No callbacks. The tile went in clean. Felt like a good one.

"Felt like" is carrying a lot of weight in that sentence, because the feeling has no receipts in it. It does not remember the second supplier run on day four, or the Saturday morning your helper spent re-hanging a door that swung wrong, or the plumber's extra half day you nodded through because the schedule was slipping. The feeling remembers the handshake and the deposit. Everything between those two events is fog.

Somewhere in that fog is the answer to the only question that decides whether your business works: did the job make money, or did it just make revenue?

Why is your gut wrong about job profit?

If gut feel were randomly wrong, the errors would average out and you could keep using it. It is not random. It is biased toward yes, and the bias has a mechanism.

You remember revenue precisely, because you wrote it down. It is on the invoice, it landed in your account, it has a number attached. Costs arrive as fragments: a receipt in the cupholder, an hour here, a dump fee there, a subcontractor invoice that shows up two weeks after the job closed. Nobody's memory adds forty small numbers correctly, so the brain substitutes a story. The story gets built from the parts of the job that were visible and social (the client was happy, the work looked good), and those parts have nothing to do with margin.

Run the honest version of a job that felt good. You quoted a bathroom at $12,400 and the client paid every dollar. Materials came to $4,830 across eleven receipts. You and your helper put in 148 hours between you; at what those hours actually cost in wages, including a real wage for yourself, call it $5,180. The plumbing subcontractor billed $1,350. Dump run, blades, and the small stuff nobody tracks: $260. Total cost, $11,620. The job that felt like a good one cleared $780. That is a 6% margin: not a loss, just three weeks that paid everyone's wages and left almost nothing for the business that carried the risk.

You cannot feel the difference between that job and one that cleared $2,800. On paper, the difference is instant.

The markup vs margin calculator converts one into the other and shows the price and profit behind both.

Turn the number on before you need it

In Zeus, job costing lives behind a feature toggle, and the toggle ships off. If you have never seen cost numbers on your jobs, that is the first thing to check. Go to Settings, open App Features, and switch on Project Cost, the toggle labeled "Receipts, job costs & supplier tracking." It stays out of the way by default because plenty of crews only want scheduling and invoicing, but nothing in this article works until it is on. The second thing to check is your plan. Labor hours and Price Book materials are costed on any plan, but receipt scanning and Company Expenses are part of Zeus Pro, so on the free plan those two streams stay locked and the app tells you so when you open them.

Turn it on today, not at the end of the job you are currently wondering about. A profitability report is only as good as what got captured while the job was running. Numbers reconstructed afterward from memory are the same old storytelling, just wearing a spreadsheet.

What goes into a job's profit number?

Job profitability is four cost streams set against one revenue line. Each stream has a capture habit attached, and the habits are the whole game.

Labor hours, from time tracking. Everyone on the job clocks in and out, and the hours land on per-job timesheets. Two honesty rules here. First, cost hours at what they cost, not what you charge. A $38 wage is not a $95 charge-out rate, and using the wrong one flatters every job you run. Second, count your own hours at a realistic wage. The oldest self-deception in the trades is "free" owner labor; it is exactly how a job that lost money gets remembered as a winner. One caveat worth stating plainly: Zeus counts the hours, but it is not payroll. Paying people happens wherever it already happens.

Materials, from the Price Book. Lines pulled from your Price Book onto the job carry their costs with them, so everything you quoted is costed the moment the estimate is built.

Receipts, from the supplier counter. The stuff you bought that was never on the estimate (the extra vapor barrier, the third tube of the good caulk) gets photographed before the truck leaves the parking lot. Zeus turns the photo into an expense by reading the receipt, and you assign it to the job. The parking-lot timing matters: a receipt that rides in the cupholder for a week has roughly a coin-flip chance of ever being recorded.

Subcontractor costs. The sub's invoice gets recorded against the job it belongs to on the day it arrives, not when you happen to pay it and not never.

Against all of that sits invoiced revenue: what you actually billed, extras included. Not the quote. If the client asked for three extras that never made it onto an invoice, the report will show a labor overrun that is really a billing failure. That, too, is an answer worth having.

A hand photographing a crumpled paper receipt laid flat on a truck seat

Keep overhead out of the job

There is a strong temptation to dump every business cost into whichever job was open that week: the truck payment, the insurance renewal, the new ladder. Resist it. Those are overhead, and they belong in Company Expenses, which Zeus keeps as its own bucket, deliberately separate from job costs.

This is not accounting fussiness. Smearing overhead across random jobs corrupts both numbers at once. The job that happened to catch the insurance bill looks like a disaster it was not. Meanwhile your true overhead, the amount your rates have to recover across every job you do, stays unknown. A job's margin tells you whether that job was priced right. The gap between all your job margins and what is actually left in the bank tells you whether your rates carry the business. You need both signals, which means the two piles stay separate.

Reading the report

With Project Cost on and the capture habits running, the job profitability report stops being a form and becomes a verdict. Three habits for reading it well.

Look at margin percent, not profit dollars. $900 of profit on a two-day service job is a good living. $900 on a three-week renovation is a slow-motion emergency. Percent is what makes jobs comparable.

Compare like with like. Bathrooms against bathrooms, panel upgrades against panel upgrades. Service work and project work run different margins by nature, and mixing them hides both signals.

Find the stream that ate the margin. A thin job is thin for a locatable reason: labor hours far past what you priced, a materials line that crept, a subcontractor who cost more than the allowance, or revenue that landed under quote because extras were never billed. Each of those has a different fix, which is the entire point of looking.

One loser is tuition. A pattern is a decision.

A single bad job is information you paid for. Read it, find the stream that failed, write what you learned in a Note on the job, and move on. Bad luck is real; hidden rot or a brutal access problem can sink one job without meaning anything about your pricing.

Three losers of the same type is not luck. It is a pattern, and a pattern demands one of three responses.

Reprice. The next quote for that job type gets built from the real hours, not the optimistic ones. That usually means a number noticeably above your old price, and saying it to a returning client takes a script:

"I'll be straight with you: my price on this kind of job has gone up. The last few we've done, the prep has run a full day longer than it used to, and I'd rather quote you the real number now than surprise you at the end."

Clients absorb that sentence far better than contractors expect. What they do not absorb well is the surprise version, delivered as a final invoice.

Refuse. Some job types cannot be repriced into profit in your market, because the going rate was set by people who have never done this math. Declining work that reliably costs you money is not shrinking your business. It is deleting the part that was quietly eating the rest.

Fix the process. Sometimes the price was right and the execution leaked: extras done on a handshake and never billed, materials floated for a month because you took no deposit, two supply runs a day because nobody staged materials. Check which stream failed before choosing this door or the reprice door. Raising prices to cover a process leak makes you expensive and leaves you leaky.

The five-minute habit

None of this needs an admin evening. When a job closes, open its number the same week, while you still remember why it went the way it went. Once a month, sort finished jobs by margin and sit with the bottom three for a few minutes. That is the entire ritual, and it slowly replaces "felt like a good one" with knowing.

The feeling at the tailgate is still worth having. It is just not a financial statement.

Where Zeus fits

The fog between the handshake and the deposit is made of costs nobody wrote down at the moment they happened, and the writing down has to happen where the spending happens.

Hours clock to the job from the phone on site, against the job they were worked on. Materials pulled from your Price Book carry their cost onto the job as the quote is built. At the supplier counter you photograph the slip, Zeus reads the merchant, the total and the tax off it, you check what it read, and you book the expense to the job it belongs to. The subcontractor invoice goes on the same record. Each of those writes lands on the phone first, in a lot with no bars, and joins the server when you are back in range. Costs and expenses are counted on the job that caused them, which is the arithmetic underneath running the job itself.

The same job holds the quote, the photos and the invoiced revenue those costs get set against, along with everything else the app keeps on a job. The starting size costs nothing and does not run out; you can read what each size includes on the pricing page. If you want the verdict on your next job rather than your last one, the capture starts the day you put the app on your phone.

Go back to the tailgate at dusk, drop cloths half folded, the payment landing while the light goes. That moment does not change. What changes is that by the time you are home the feeling has a number sitting beside it, built out of hours and receipts you captured while they were still true.

Frequently asked questions

What hourly rate should I use for my own time?

A realistic wage for the work you actually do, roughly what you would pay someone competent to swing the tools you swing. Not your charge-out rate, and never zero. The exact figure matters less than using the same one on every job, so margins stay comparable across time.

Do I really have to capture every small receipt?

A $6 tube of caulk will not change a verdict, but "small stuff" on a real job quietly runs to hundreds of dollars, and the scan takes seconds at the counter. Make the rule "every receipt, before the truck moves." A rule with a dollar threshold is a rule you will negotiate with at the end of a long day, and the threshold always wins.

My jobs all show profit, but my bank account disagrees. How?

Job margin is what remains after job costs. It still has to cover everything in Company Expenses (insurance, truck, phone, software) plus your own pay. If the jobs look healthy and the account does not, your overhead and draw are larger than your combined margins. That is a rates problem, and you can only diagnose it because the two buckets were kept separate.

Project Cost was off for my last ten jobs. Should I backfill them?

You can add receipts and hours after the fact, but numbers rebuilt from memory are soft, and soft numbers invite exactly the storytelling you are trying to retire. Turn the toggle on now, capture the jobs that are live, and let the trustworthy dataset start today.

Filed under

About the Author

Mireille Saintil

Senior Editor, Money and Bookkeeping

Mireille has spent fifteen years keeping the books for construction clients around Montréal, most of whom found her after a tax year went badly sideways. Born in Montréal to Haitian parents and working in both French and English, she built her practice around the handful of things small trade businesses get wrong again and again: holdbacks nobody ever invoices, input tax credits left unclaimed, and progress payments that quietly stop matching the work on site. She writes about money for the Zeus Resource Center, and she is entirely unmoved by the argument that you will sort it all out at year end.

Stop running the job out of four different places

Quote it, photograph it, track the hours, invoice it: from the driveway, with no signal. The free plan does not expire and never asks for a card.