Most roofing companies review a job only when it goes badly: a customer disputes the invoice, a crew runs two days over, or the owner sees a thin month on the P&L. By then the lesson is mixed in with 15 other jobs. A short closeout review on every completed job, done the same way each time, shows where the estimate and the field disagree while the details are still fresh.
What an Estimate-to-Actual Gap Looks Like
All figures below are illustrative. Use your own job reports. Assume a $13,200 reroof priced from $9,900 of estimated direct cost, with $1,980 of overhead recovery (20% of direct cost) and a 10% net profit target, as in our overhead recovery guide.
| Cost line | Estimated | Actual | Variance |
|---|---|---|---|
| Materials | $4,600 | $5,050 | +$450 (9.8%) |
| Crew labor (burdened) | $3,400 | $3,950 | +$550 (16.2%) |
| Disposal | $850 | $1,010 | +$160 (18.8%) |
| Permits and inspections | $350 | $350 | $0 |
| Equipment and fuel | $700 | $790 | +$90 (12.9%) |
| Total direct cost | $9,900 | $11,150 | +$1,250 (12.6%) |
The price was $13,200. After $11,150 of actual direct cost and $1,980 of overhead, the job leaves $70: a 0.5% net margin instead of the planned 10% ($1,320). No single line looks alarming. Each one drifted by a few hundred dollars, and together they erased the profit.
Scale it. If 40 jobs a year slip by the same $1,250, that is $50,000 of profit that never reaches the bank. A P&L shows the total after the fact. A closeout review shows which line caused it.
How to Run the Closeout Review
- Wait for the numbers to settle. Review within 30 days of the final inspection, after every supplier bill, dump fee and crew timesheet is posted to the job. A review on incomplete costs flatters the result.
- Pull estimated versus actual by cost line. Use the same lines as the estimate: materials, labor, disposal, permits, equipment. If your books cannot report by job and cost type, that is the first fix. The true cost of a roofing job covers the setup.
- Flag the exceptions. Set a rule, such as any line more than 10% or $250 over. Only flagged lines need an explanation, which keeps each review under 15 minutes.
- Assign one cause per flagged line. Use a short list so the data can be counted later: takeoff error, waste above plan, decking or hidden damage, return trips, crew productivity, supplier price change, or scope added without a change order.
- Check for unbilled scope. If the extra $450 of materials was decking the customer agreed to replace, the problem is not the estimate. It is a missing change order, and that money may still be collectable. See change order pricing for roofing contractors.
- Log the result in one place. A simple sheet with job number, price, estimated margin, actual margin and cause codes is enough.
- Change an assumption after a pattern, not a single job. When the same cause appears on 4 or 5 of your last 10 jobs, adjust the waste factor, labor hours per square or disposal allowance. One bad job is noise. Repeats are a pricing error.
What the Pattern Tells You
After a quarter, sort the log by cause code. If labor is over on most jobs, compare crews using labor hours per square. If disposal is over, your dump allowance is stale. If materials run over only on tear-offs of older homes, price decking risk into those jobs. If the overruns are scattered with no repeat cause, the process is sound and the variance is normal.
Also track the average gap. In this example, actual direct cost ran 12.6% above the estimate. If your average is closer to 3%, the estimate is sound and a 10% target is realistic. If it is 12%, either fix the estimate or raise the price. Do not accept a lower margin by default.
Common Mistakes
- Reviewing only the jobs that felt bad. Good-looking jobs hide drift too, and you need a baseline.
- Comparing price to cost and stopping. A job can be profitable overall while one line is a repeat loser.
- Keeping the actuals away from the estimator. The person who built the number should see the result. Without that feedback, the same error returns on the next bid.
- Skipping the review when the schedule is full. That is when drift is most expensive, because it repeats across more jobs.