How to estimate a contracting job without underpricing it

A good estimate isn't a guess dressed up with a dollar sign. It's a short, repeatable process — and skipping a step in that process is usually where the money disappears.

Start with the site walk, not the number

It's tempting to price a job off a phone description so you can get a number back to the customer fast. But the details that change a price — access, condition behind a wall, whether the old work is up to code, how much has to move before work can start — almost never come through in a phone call. A short walk-through before you commit to a number catches the surprises before they become your problem instead of the customer's.

If a walk-through genuinely isn't possible, say so in the estimate itself: note that the price is a range based on a phone description and may change once you see the job. That one sentence protects you from being held to a number you only had half the information for.

Break the job into line items before you total anything

One lump number is hard to defend and even harder to adjust when the scope changes mid-job. Pricing a job as a list — demo, materials, labor, disposal, permit if one applies — makes the estimate easier to explain to the customer and easier to revise later without starting over.

Materials: price what the job needs, not what's in the truck

Estimate materials from the actual scope, not from habit. It's easy to round up "to be safe" or round down because a similar job last month came in under budget — both habits drift your estimates away from what a job actually costs over time. Price each material line at what you expect to pay plus your markup, the same way you would on an invoice, so the number holds up if the customer asks what it's made of.

Labor: estimate the hours honestly, then apply your rate

Labor is where most underpricing happens, because it's tempting to estimate the hours a job "should" take rather than the hours it actually will — especially once you factor in setup, cleanup, and the parts of the job that never go as smoothly as the easy half. Estimate hours based on how the job has actually gone before, not how it goes in the best case, and multiply by a rate you've actually set rather than one that feels right for the size of the job.

Build in a contingency for what you can't see yet

Even a careful site walk can't catch everything — what's inside a wall, under a slab, or behind an old panel stays a guess until the job is open. A standard contingency, applied consistently rather than guessed at per job, covers that uncertainty without turning every estimate into either a lowball number or a padded one. The goal isn't to price in every worst case; it's to have language and a number ready so a surprise doesn't turn into a free change order.

Know when an estimate needs to become a firm quote

An estimate is a starting number, not a commitment — but at some point before work begins, the customer needs a firm price they can actually say yes to. If you're not clear on where that line sits for your own jobs, the difference between an estimate, a quote, and an invoice is worth getting straight before you send either one. Converting a walked-through, line-item estimate into a quote should be quick — the pricing work is already done, the quote just needs to lock in the number and go out before the customer's attention moves elsewhere.

Second Shift is built around that same line-item approach — you talk through the job, it's captured as materials and labor priced at your own rate, and that same estimate turns into a quote without re-pricing anything from scratch. See the full feature list, or try it free for 7 days.

Try Second Shift free for 7 days

Available now on the App Store. Free for 7 days, then $29.99 CAD/month. Cancel anytime.