Most contractors lose money on jobs not because they do bad work — but because they estimated wrong. Too low and you're working for free. Too high and you don't get the call back. A solid estimating process is the difference between a business that grows and one that grinds.
Here's a practical breakdown of how to put together a construction estimate that covers your costs, wins the job, and actually pays you.
The four parts of every construction estimate
Every estimate — whether it's a roof replacement, a bathroom remodel, or a new HVAC install — has the same four cost buckets:
| Cost bucket | What it includes | Typical % of job |
|---|---|---|
| Materials | All physical materials: lumber, shingles, pipe, wire, fixtures, concrete, etc. | 30–50% |
| Labor | Your crew's hours × their loaded hourly rate (wages + payroll taxes + insurance) | 25–40% |
| Overhead | Your share of truck payments, tools, insurance, office costs, software | 10–15% |
| Profit margin | What you actually keep after all costs — your business's growth fund | 15–25% |
Always add a contingency buffer of 5–10% on top of materials and labor. Unknown conditions — rotted sheathing under the shingles, pipes behind the wall — are a when, not an if.
Step 1: Do a real site walk
You can't estimate what you haven't seen. Every job that blows up on cost has a missed site walk at its root. Walk the job with fresh eyes. Photograph every angle. Note anything that looks off — water damage, previous patch work, non-standard framing. These are your unknowns, and unknowns are where margin goes to die.
For roofing: check decking condition, count penetrations (vents, pipes, skylights), measure all planes. For HVAC: check duct condition, existing equipment specs, attic and crawlspace access. For plumbing: trace the existing lines, check for cast iron vs. PVC vs. copper — each changes your labor math significantly.
Step 2: Calculate materials from real quantities
The biggest estimating mistake small contractors make is rounding up "from memory" instead of calculating from measurements. For anything over $500 in materials, do the math from actual dimensions.
- Roofing: Roof area in squares (100 sq ft = 1 square) × material cost per square, plus 10–15% waste factor
- Flooring: Room square footage × 1.1 (10% waste) × material cost per sq ft
- Framing: Linear feet of wall × stud spacing factor × lumber cost, plus plates, headers, hardware
- Concrete: Volume in cubic yards (L × W × depth ÷ 27) × delivered concrete price
- Painting: Wall area (perimeter × height, minus openings) ÷ coverage rate per gallon × paint cost
Get current pricing from your supplier — material costs move constantly. A lumber quote from two months ago is not a lumber quote for this job.
Step 3: Estimate labor with loaded rates
Your crew's hourly wage is not your labor cost. Your loaded rate includes wages, employer payroll taxes (FICA, FUTA, SUTA), workers' comp, and any benefits. A $25/hr employee costs $32–$38/hr loaded, depending on your state and comp rate.
Estimate labor hours per task, not per day. Breaking it down — demo: 4 hrs, frame: 6 hrs, drywall: 8 hrs — forces you to think through the actual scope and surfaces scope creep before it surprises you on the job.
Rule of thumb: If you've done 10 jobs of this type, your average actual hours are your estimate. If you haven't done 10 jobs of this type, add 20% to your best guess and call it a learning tax.
Step 4: Add overhead
Overhead is the cost of running your business that isn't tied to any one job: truck payment, fuel, tools, insurance, licenses, accounting software, your phone bill, the time you spend on admin. Most small contractors underestimate overhead by a factor of two.
Calculate your total monthly overhead, divide by your average monthly billable hours, and that's your overhead rate per labor hour. A contractor with $8,000/month in overhead and 160 billable hours carries $50/hour of overhead. Add that to every labor hour you estimate.
Step 5: Add your profit margin on top
Profit margin goes on after all costs — materials, labor, overhead. It is not baked into labor rates. It is not the leftover. It is a deliberate line item.
Most residential specialty contractors should target 15–25% net margin. General contractors typically run 10–20%. If you're running below 10%, you have no cushion for a bad month, a slow week, or a client who doesn't pay on time.
To apply a 20% margin to your cost: divide total cost by 0.80 (not multiply by 1.20 — those give different numbers, and the division method is correct for a margin percentage).
Step 6: Present it professionally
A written, line-item estimate closes more jobs than a verbal number. Clients who see the breakdown understand what they're paying for. It also protects you — if scope changes, you point to the estimate and write a change order. No estimate means no paper trail.
At minimum, your estimate should include: client name and job address, date and expiration date (pricing is only valid for 30 days), line-item breakdown, subtotal, tax, and total. A payment schedule and start date estimate help too.
Skip the spreadsheet — generate your estimate on the job site
QuoteSnap is a free AI estimating app for contractors. Snap a photo of the job, describe the scope in a sentence, and get a full line-item estimate with labor, materials, quantities, and tax in under 60 seconds. Works for roofing, HVAC, plumbing, electrical, and general contractor work — no download required.
Try QuoteSnap free →Common estimating mistakes that kill margin
- Not accounting for mobilization time. Loading the truck, driving to the job, setup, and cleanup are real labor hours. Add them.
- Using last year's material prices. Lumber, copper, and PVC prices shift monthly. Always get a fresh quote.
- Estimating best-case labor. Estimate for a normal day, not your best day. Things go wrong. It rains. The dumpster is late.
- Forgetting disposal costs. Dumpster rental, haul-away, and landfill fees add up fast on demo-heavy jobs.
- No contingency line. Every estimate should have a 5–10% contingency. Clients expect it. It is professional, not greedy.
- Scope creep with no change order. If the client asks you to add work after you've started, write a change order before you start the extra work. Not after.
What about estimating software?
Dedicated construction estimating software — Jobber, Buildertrend, CoConstruct, Stack — can help larger operations manage complex bids with assemblies and price databases. For small contractors doing 5–20 jobs a month, the overhead of learning and maintaining full FSM software often isn't worth it.
The faster path for most small contractors is a simple line-item template (Excel or Google Sheets works fine) plus a tool for generating the initial estimate fast. QuoteSnap handles that second part — you walk the job, take photos, describe the scope, and have a draft estimate before you get back in the truck. Then adjust the numbers, export to PDF, and send it to the client before you leave the driveway.
The fastest way to lose a job: a slow estimate
Speed matters. If a homeowner calls three roofers and you're the only one who sends a written estimate the same day, you have a massive advantage. Most contractors take 3–5 days to turn around an estimate — sometimes longer. Same-day estimates close at a dramatically higher rate because the client hasn't had time to shop elsewhere and your work is still fresh in their mind.
Whatever system you use — spreadsheet, software, or AI — build a workflow that gets you from site walk to sent estimate in under 24 hours. That alone will beat most of your competition on every job.