Ask anybody who has been at this a while about their worst jobs and the story is almost never about the work being hard. It is about the work taking three times as long as the number they gave.
Bad estimates are rarely arithmetic errors. They are optimism about categories of time that never make it onto the page.
The hours that disappear
Take a normal eight hour day and count what actually happened.
Drive to the job. Unload. Set up, which includes drop cloths, protection, extension cords, and moving the customer's furniture. Talk to the homeowner, because you always talk to the homeowner. Discover the thing you did not know about. Drive for the part you did not know you needed. Work. Clean up, which takes longer than anyone plans. Load out.
The swinging-a-hammer portion of that day might be four and a half hours. Estimates written from memory count the four and a half and quietly assume the rest is free.
The fix is not working faster. It is putting those hours on the page where they belong, because they are real work and they get paid for either by you or by the customer.
Track what actually happened
The only reliable source of estimating data is your own finished jobs.
This does not require software. A note on your phone at the end of each day with the job name and hours, plus a line about what went sideways, produces something genuinely useful within two months. After a year you stop guessing about entire categories of work, because you know what a bathroom floor took the last four times.
Memory is unreliable in a specific direction: it remembers the good day and forgets the two hours spent chasing a mismatched part. Written numbers do not do that.
Estimate in pieces
Guessing at a whole job produces a number shaped by mood. Breaking it into tasks produces a number shaped by the work.
List every task, including demo, protection, disposal, and finish work. Put hours on each one. Add travel and material runs as their own lines. Sum it. The total will usually be higher than your instinct said, and the instinct is usually the one that is wrong.
The other benefit is that when a customer asks why the number is what it is, you can show them the list instead of defending a total.
Name the unknowns
Every remodel has a section behind a finish that nobody has seen. Pretending otherwise is the most common way estimates blow up.
Instead of padding the number invisibly, write the unknown down: if the subfloor under the tile is damaged, replacing it is this much additional time and material. If the wiring is two-wire with no ground, this is what it takes to address it.
Two things happen. The customer understands what they are buying, and the later conversation about a change order is a reference to something you already told them rather than a surprise. Surprises are what damage relationships, not costs.
Buffer honestly
A contingency is not dishonesty. Padding an hourly rate to hide it is.
For work in known conditions, a small allowance covers ordinary friction. For older houses and unknown conditions behind finishes, the allowance needs to be substantial and it should be stated. A customer who is told the range up front and lands in the middle of it is satisfied. The same customer given a low number and a later bill is not, even if the final price is identical.
The discipline part
- Write down actual hours at the end of every day
- Count setup, travel, material runs, and cleanup as work
- Estimate by task and add it up
- List the specific unknowns and their cost
- Compare estimate to actual on every finished job
The last one is what makes the rest compound. An estimate you never check against reality is a guess you keep repeating. An estimate you review is training.
Honest estimating is slower to produce and much faster to live with.