Painter's Log Blog
You bid it at 8 hours. Your crew clocked 10. Here's what that job really cost.
You bid the job at 8 hours. The crew clocked 10. The customer paid the quoted price and was happy. So you won, right?
Not quite. That 2-hour gap is the single most common place painting profit dies, and it's nearly invisible because nothing about the day feels like a loss. No angry customer. No unpaid invoice. Just a job that took a little longer than you said it would — like they all do.
Let's put a real number on those two hours, because the number is bigger than painters expect, and it explains a lot about why busy years don't turn into bank balances.
The gap costs more than the wage
Say you pay $30/hour. Two extra hours feels like $60 — annoying, not fatal. But $60 isn't what those hours cost you.
An hour of labor doesn't cost you the wage. It costs the wage plus your labor burden — payroll taxes, workers' comp, insurance, vehicle and downtime — which runs 15–25% on top for most painting businesses. So at $30/hour with a 20% burden, an hour actually costs you about $36. Two hours: $72.
And here's the part that turns a rounding error into a real problem: you collected nothing extra for it. The customer paid the 8-hour price. Those two hours came straight out of your margin. On a small job where you'd priced in $200 of profit, a $72 overrun just erased more than a third of it — on a job that, by every outward sign, went fine.
Now scale it to a real job
Two hours on a tiny job is the gentle version. Watch what the same 20-25% overrun does on a job with real size to it:
Bid: 80 hours
Actual: 96 hours (+16, a 20% overrun)
Loaded cost per hour: $45 (wage + ~20% burden)
─────────────────────────────────────
Unpriced labor overrun: 16 × $45 = $720 gone
$720 of profit, evaporated on one job — and you found out, if you found out at all, weeks later when something felt off about the month. The customer was thrilled. The check cleared. You still lost three quarters of a grand against your own plan, and nothing in the day told you so.
This is why "the customer paid in full" is a dangerous measure of success. Payment tells you the price was accepted. It tells you nothing about whether the cost stayed inside the price.
Why the gap is invisible (and how to make it visible)
The estimate-vs-actual gap hides for one reason: the two numbers live in different worlds. The estimate lives in a quote you sent and forgot. The actual hours live in a crew's memory, a paper timesheet, or a guess you make at the end of the month. Nobody ever sets them side by side on a specific job, so the variance never gets named.
The fix is almost mechanically simple — you just have to capture the actual as it happens and park it next to the estimate:
- Lock the estimate. Whatever you bid the job at — hours and dollars — is your baseline. Write it down.
- Capture real hours as the job runs. Crew clocks in and out per job, on the phone, on site. No after-the-fact reconstruction, because reconstruction is where the honesty leaks out.
- Compare the day it ends. Bid hours vs. clocked hours. The difference, times your loaded cost per hour, is your overrun in dollars.
Do that on every job and the gap stops being a vague feeling and becomes a line you can watch — and act on. Maybe that customer's "quick repaint" always runs 25% long and needs to be bid accordingly. Maybe one crew consistently beats the estimate and another consistently blows it. You can't manage any of that until the variance has a number.
Where the measuring happens by itself
Capturing actual hours per job is exactly the chore that's easy to start and hard to keep up by hand. That's the gap Painter's Log closes: crews clock in and out per job from their phones, so real hours accumulate against the right job automatically, and the estimate's already in the system — so estimated-vs-actual sits there as a number instead of an afternoon of detective work. The whole point is that you find out about the 16-hour overrun while you can still do something about the next one, not at tax time.
Measure your last job tonight
You don't need anything but the number you bid and the hours your crew actually worked. Subtract, multiply by your loaded cost per hour (wage + ~20%), and you've got the real cost of your last estimate-vs-actual gap. The “Did I make money?” calculator will fold it into the full job margin for you in a minute.
Then, when you want those actual hours to capture themselves going forward, start free on Painter's Log — free forever for small shops, 1% on payments while you're free, 0% on Pro, no trial countdown.
A job that runs two hours long isn't a disaster. A business that runs every job a little long and never measures it is — slowly, quietly, and entirely fixably.
Want to see what every job actually costs?
Start free — no credit card