A construction estimate is two documents wearing one name. One is what the job will cost you: labor, materials, subs, the dumpster, the permit. The other is the price the client signs. Most estimates that lose money don't fail on the second one. They fail on the first: a line priced from memory, a cost nobody wrote down, a markup that was really a smaller margin than it looked.
This guide walks through an estimate the way a small remodeler or trade contractor can build one in an evening, with a worked bathroom remodel at the end of each step. Disclosure: we make Obra, which writes estimates; it comes up once, near the end, and everything before it works on paper or in a spreadsheet.
Two numbers on every line
Every line on a good estimate carries two numbers: what it costs you and what the client pays. Keep them apart from the first line. If you only write the price, you can't tell later whether a job lost money because the estimate was wrong or because the job went wrong, and you can't fix the next estimate either way.
The cost side stays private. The client sees the price, the scope and the terms; they never see your cost, your markup or your margin.
1. Write the scope before any number
Walk the job with a notebook or your phone. Take photos, take measurements, and write the scope in plain words, room by room or phase by phase, specific enough that a stranger could check the work was done. "Remodel bathroom" is not a scope. "Remove tub, tile and vanity; new curbless shower with tile to ceiling; new vanity, toilet and mirror; new fan and two GFCI outlets" is.
Write down what you are not doing in the same pass. Exclusions written now are arguments you don't have in week six: painting outside the bathroom, moving the window, anything behind the walls you can't see yet.
2. Break it into sections and lines
Group the work into sections that follow how the job is built: demolition, plumbing, electrical, tile, fixtures, general conditions. Under each, one line per thing you buy or pay for, as quantity times unit cost: 40 hours of tile labor at $45, 110 square feet of tile at $9.
Use the same categories you'll track costs in once the job starts. If your cost codes are Demolition, Plumbing, Electrical and so on, the estimate's sections should be the same words. That's what lets the accepted estimate become the job's budget instead of a PDF nobody opens again.
3. Price each line from your own costs
Where a unit cost comes from decides whether the estimate is right. In order of trust:
- What it cost you on your last jobs. Actual cost from a finished job of the same kind beats any price list, because it includes your crew's real speed and your real suppliers.
- A written quote from this week. For subs and big material orders, get the number in writing with what's included, and keep it with the estimate.
- A supplier's price list or a cost book. Fine for materials you rarely buy; check the date.
- A reference price you looked up. A starting point, labeled as one, until you confirm it.
Three things to get right while pricing:
- Labor at its real cost. A $30 wage costs you more than $30 an hour once payroll taxes, workers' comp, insurance and paid time are on it. The labor burden calculator gives you the burdened rate; our example uses $45.
- Waste. Tile, flooring, drywall and lumber get cut. Add the waste factor to the quantity (10% is common for tile), not as a vague pad at the bottom.
- Sales tax on materials is your cost. Put it in the unit cost.
4. The items estimates forget
These are the lines that turn up as receipts with no line to land on:
| Often forgotten | Why it matters |
|---|---|
| Dumpster, haul-off, dump fees | Every demo job has one; nobody remembers to price it |
| Permits and inspections | Plus the trip to pick them up |
| Delivery and fuel | Lumber delivery, the second trip to the supply house |
| Protection and cleanup | Floor protection, dust walls, the final clean |
| Equipment rental | The tile saw, the lift, the dehumidifier |
| Disposal of old fixtures | The old tub doesn't leave on its own |
| Punch list and callbacks | A day at the end that every job uses |
Read the list against every estimate before it goes out. If a line doesn't apply, skip it on purpose rather than by accident.
5. Add overhead and profit
Direct costs are only the job. Your truck, phone, insurance, office, software and your own salary are overhead, and every job has to carry a share of it before anything is left as profit.
Say last year's numbers put overhead at 20% of revenue, and you want 10% left as profit. The price has to leave a 30% gross margin above direct cost. To get there, divide cost by 0.70; don't multiply it by 1.30. On $9,800 of cost, a 30% markup gives $12,740: a 23% margin, which pays the overhead share and leaves about $390 of profit instead of $1,400. The markup vs. margin guide has the full table; the markup and margin calculator does the conversion.
6. Handle what you can't know yet
Three tools, and each has a place:
- Allowances for what the client hasn't chosen: a $1,800 fixture allowance at cost, with the rule written down that anything over it is billed as a change. The allowance overages guide covers the wording.
- Exclusions with a unit price for hidden conditions: "rotted subfloor, if found, replaced at $35 per square foot." That turns a surprise into a change order the client already saw a price for.
- Contingency for real unknowns you can't price as a unit, like an old house with no drawings. Name it as a line so it can be explained, not hidden inside every other price.
The worked example: a bathroom remodel
Here's the cost side for the scope in step 1:
| Section | Line | Quantity | Unit cost | Cost |
|---|---|---|---|---|
| Demolition | Demo labor | 16 hours | $45 | $720 |
| Demolition | Dumpster, 10-yard | 1 | $450 | $450 |
| Plumbing | Plumber's quote: valve, drain, set fixtures | 1 | $2,400 | $2,400 |
| Electrical | Electrician's quote: fan, GFCI outlets, lights | 1 | $850 | $850 |
| Tile | Tile and setting materials, 10% waste included | 110 sq ft | $9 | $990 |
| Tile | Tile labor | 40 hours | $45 | $1,800 |
| Fixtures | Vanity, toilet and mirror (allowance) | 1 | $1,800 | $1,800 |
| General | Permit | 1 | $430 | $430 |
| General | Floor protection and final cleanup | 8 hours | $45 | $360 |
| Total cost | $9,800 |
At a 30% gross margin the price is $9,800 ÷ 0.70 = $14,000: $4,200 above cost, which is a 42.9% markup. Hidden rot is excluded at $35 per square foot, and a heated floor goes on the page as an optional item the client can add.
7. Write the page the client signs
The client document is short, and every part of it prevents a specific argument:
- Scope and exclusions from step 1, in the same plain words.
- The price, by section if the client wants to see where the money goes, never with your cost.
- Allowances, with the amount and the overage rule.
- Optional items priced separately, so the client says yes to extras now instead of in week four.
- Payment schedule: a deposit, then draws tied to milestones, so the client's money stays ahead of your costs. The progress billing guide has a schedule that works for remodels.
- Valid until, usually 30 days, because material prices move.
- How changes work: written, priced and approved before the work.
- A signature line. On paper, or electronic: a typed name with a clear consent statement can be an electronic signature under the US ESIGN Act and UETA. For large contracts, check what your state and your contract require.
8. After the yes: the estimate becomes the budget
The estimate's cost side is now the job's budget, by the same sections. As receipts and bills arrive, they land against those lines, and you see each one drift while there's still time to do something about it. When the job is done, compare each section's estimate with what it really cost. That comparison is where the next estimate's unit costs come from, and it's why step 3 starts with your own jobs: an estimate gets better only if the last job's real numbers feed it.
The job costing spreadsheet guide sets that up in a sheet; committed costs covers the bills you know are coming before they arrive.
Doing it in Obra
Obra keeps every line's cost and price apart and shows the gross margin as you price. Lines come from your price book, a CSV or XLSX import, or by hand. Give the estimate a kind of work and it shows what your financially closed jobs of that kind spent per category, next to this estimate. Draft with AI turns a description, a recorded voice note or a photo of the job into proposed lines, each with a reference cost labeled as not your cost until you change it; it can also list what estimates like this one commonly forget.
Issue it and the client gets a PDF and a private link with no account, where they tick the optional items they want and sign by typing their name. Obra sends reminders 3, 7 and 14 days after you email it if they haven't answered. When the client accepts, the project opens with the estimate's total as its contract and its cost per category as its budget, and the crew's receipts land against it from WhatsApp, email or a photo. Estimates are on every plan, including Free; Pro is $12 per user a month.
Questions people ask
What's the difference between an estimate, a quote and a bid? In everyday use, an estimate is your best price for the work, a quote is a fixed price you'll hold, and a bid is a price submitted when several contractors are asked for one. What decides it legally is the wording on the page, so say whether the price is fixed and for how long.
How much should I mark up? Enough to cover your overhead and leave the profit you want, as a margin on the price. With overhead at 20% of revenue and 10% profit, that's a 30% margin, or a 42.9% markup on cost. Start from your own overhead number, not a rule of thumb.
How detailed should the client see it? Detailed enough that the scope can be checked, and no more. Many contractors show sections with subtotals and keep line-level pricing internal.
How long should an estimate be valid? Thirty days is common for residential work; shorter when material prices are moving.
Get the template
Once the estimate is signed, the free job costing spreadsheet keeps the job honest against it: one sheet per job, the contract and change orders in one section, costs in the other. Enter your email and the download starts right away.