A full schedule feels like success. It isn't the same thing as a profitable one. Plenty of contractors are booked out for months and still can't say where the money went — because the quote was set once, at the start, and never checked against what the job actually cost to run.

Why "cost plus a bit" isn't a pricing strategy

Most quotes get built the same way: guess the materials, guess the days, multiply by a day rate, add a bit for luck. It works fine until lumber prices jump, a scope change the client "forgot" to mention, or a job that just runs long. Proper pricing starts from what a job genuinely costs — including the costs that don't show up until you're tracking them job by job — then adds a margin that's a deliberate decision, not whatever's left over.

The costs that get missed at quoting stage

  • Waste and off-cuts — nobody uses 100% of what they buy. Pricing exactly to the board foot leaves no room for reality.
  • Travel between sites — truck running costs add up fast across a spread-out schedule.
  • Disposal and bin costs — easy to forget until the job's underway and there's nowhere to put the debris.
  • Your own admin time — quoting, invoicing, chasing payment. It's real time, rarely priced in.
  • A contingency line — not padding, just an honest allowance for older builds rarely going exactly to plan.

Quote in ranges where the job genuinely is uncertain

Fixed-price quoting works well for jobs you've done a hundred times. For anything with unknowns — what's behind that wall, what state that framing's really in — a fixed price either builds in so much contingency it's uncompetitive, or it's a guess that becomes an argument later. A day-rate-plus-materials structure, or a quote with an explicit "if we find X, it's extra" clause, protects margin without inflating every quote to cover a risk that might not happen.

Check the job against the quote while it's still running

The single biggest fix here isn't a smarter quoting formula — it's knowing, mid-job, whether you're tracking to the number you quoted. A job that's already 30% over on materials in week one is a job you can still have a conversation about. The same job discovered over-budget after invoicing is just a loss, with no window to act. Tagging every receipt and cost to the job as it happens is what makes that mid-job check possible — see our job costing guide for the full mechanics.

A rough worked example

Quote a fence and deck repair at $4,000, with $1,400 budgeted for lumber and hardware. If costs are tagged to the job as they're bought, by the halfway point you can see materials already sitting at $1,250 with half the job still to go — a clear early signal to flag before the job's finished, not a surprise discovered when the final invoice barely covers gas for the month.

Mistakes that quietly wreck a healthy margin

  1. Quoting from memory instead of last time's actual costs for a similar job.
  2. No contingency line on anything involving existing structure, wiring or plumbing.
  3. Never revisiting the quote once a job's underway, even when the scope visibly changes.
  4. Absorbing "small" extras for free to keep a client happy, without noticing how often "small" adds up.
  5. Pricing every job the same regardless of how well-understood the work actually is.

FAQ

Should I always quote fixed price?

Not for anything genuinely uncertain. A day-rate or "subject to inspection" structure protects margin better than an inflated fixed price that's uncompetitive, or an accurate-looking one that quietly assumes nothing goes wrong.

How much contingency should I add?

There's no universal number — it depends on the trade and the job. The habit that matters more than the exact percentage is checking actual cost against quote while the job's still running, so a thin contingency gets caught early rather than discovered as a loss.

Does this replace proper job costing?

No — it depends on it. Pricing decisions are only as good as the real cost data feeding them. Track job costs properly first; better pricing follows from actually knowing what jobs cost, not the other way round.