Step 1 — Capture the conditions, not just the measurements
Photos, measurements, access notes, existing damage, and anything unusual about the site. The estimate is built from this record, and if a revision is needed later it is built from the same record. Estimating from memory a day later is where the first errors enter.
Step 2 — Itemize materials
List quantities and unit costs with a defined waste factor rather than a single lump sum. Lump sums cannot be checked, cannot be revised cleanly, and cannot be compared against what the job actually consumed.
Step 3 — Price labor at burdened cost
Burdened cost includes payroll taxes, workers' compensation, insurance, benefits, paid time off and non-productive hours. A crew member costing an hourly wage on paper costs meaningfully more per productive hour in reality, and estimating at wage guarantees the margin is smaller than it looks.
Step 4 — Add the costs everyone forgets
- Permits, inspections and any required engineering.
- Disposal, dumpsters and haul-away.
- Equipment rental and delivery fees.
- Travel time and vehicle cost for multi-day work.
- Subcontractor quotes, with their own markup applied.
- Warranty and callback allowance for the work type.
Step 5 — Allocate overhead, then apply markup
Overhead is a real cost of doing the job and should be allocated per job on a consistent basis. Markup is applied on top of full cost to produce profit. Confusing markup with margin is the most common arithmetic error in contractor estimating — a 20% markup does not produce a 20% margin.
Step 6 — Write the exclusions before the total
List what is not included: unforeseen structural repair, code upgrades, hazardous material handling, landscaping restoration, work outside the stated area. Writing exclusions before the total forces you to notice the assumptions you were about to price invisibly.
Step 7 — Close the loop after the job
Compare estimated cost to actual cost on completed jobs and look at the variance by category. Estimating improves when the feedback is specific — 'labor runs 12% over on tear-offs' is actionable; 'we need to charge more' is not.