An audit of where margin actually leaks across a typical export const REPORT_POSTS: Post[] = 0M roofing operation — and the 12 leaks that account for 90% of the loss.
Across the operators we work with at $5M–$20M revenue, gross-margin variance between best-in-class and median runs 8–12 percentage points. The variance is rarely from one big problem. It's from 12 specific leaks, most of them invisible to the owner, that compound across a year.
This report catalogs those 12 leaks. Operators reading this can use it as a self-audit checklist. The leaks below are ordered by typical dollar magnitude across our customer base.
Leak 1: Estimate under-bidding (6.2% median)
Documented in our 1,000-estimate audit. Hand-built estimates under-bid by a median 6.2% against AI re-estimates. On a $10M operator with 30% gross margin, this leak is roughly $186K annually.
Leak 2: Material over-orders (3–7% material waste)
Hand take-offs round up. The crew over-orders to avoid running short. The leftover material gets buried in shop inventory and gradually written off.
On $3M annual material spend, the leak is $90K–$210K annually.
Fix: deterministic take-offs from the aerial measurement, with explicit overlap and waste factors. Inventory reconciliation monthly, not annually.
Leak 3: AR cycle drift
Most $10M operators have AR DSO of 38–55 days. Disciplined cadence gets to 22–32 days. The cash-flow impact is direct; the margin impact is the bad-debt write-offs that come from claims aged past 90 days.
Median bad-debt write-off across our customer base before AR automation: 1.4–2.8% of revenue. After: 0.4–0.8%. On $10M revenue, the recovered margin is $100K–$200K annually.
They are typical-case from our customer base. Operators with strong existing processes will have smaller leaks; operators with weaker processes will have larger ones. Run the audit on your data to find out.
How do I do my own margin-leak audit?
Pull 60 days of jobs. Compute gross margin per job. Identify the lowest-margin quartile. Look for patterns: specific closers, specific job types, specific suppliers, specific crews. The patterns tell you where to look first.
Which leak is hardest to fix?
Closer discounting (Leak 5), because it requires changing closer behavior. Software can't fix this; management has to.
Can I fix all 12 leaks at once?
No. Pick 3–4 to focus on per quarter. Trying to fix everything simultaneously dilutes attention and produces shallow fixes.
How do I know if a fix is working?
Job-level margin attribution, surfaced weekly. The patterns shift visibly when a leak fix is working. The patterns don't shift when the fix isn't taking hold.
Stale productivity assumptions cause systematic under-bidding on complex roofs. The crew runs over budget; the gross margin variance lands on the operator.
Typical impact: 1.5–3% gross margin variance, or $45K–$90K annually on $10M revenue.
Fix: per-pitch, per-complexity productivity tracking. The data is in your CRM if you collect crew hours by job; surface it.
Leak 5: Closer discounting outside policy
Closers giving discretionary discounts to close deals. Each discount feels small in the moment ($300 off here, free upgrade there). Aggregated across a year, the leak is 1–2% of gross margin.
Fix: pricing policy with explicit closer authority limits. Discounts above the limit require sign-off. The pricing exception log makes the pattern visible.
Leak 6: Insurance restoration supplement gaps
Initial carrier scopes are routinely incomplete. Operators who don't file supplements consistently leave significant revenue (and therefore margin) on the table.
Median supplement-filing rate across operators we audit: 64%. Best-in-class: 95%+. Revenue gap on restoration work: 12–25%.
Operators who automate permit-driven outreach typically shift 15–30% of their lead mix to the cheaper channel. The CAC savings flow directly to margin.
Material price increases that the operator absorbs because their estimating template hasn't been updated. Common when prices step up — the operator's quotes stay at the old prices for weeks.
Typical impact: 0.8–1.6% of revenue annually.
Fix: live supplier API pricing, refreshed weekly minimum.
Leak 9: Crew labor cost drift
Crew labor costs creep up over time without corresponding price increases. Inflation, market shifts, internal raises. Operators who don't recalibrate hourly costs against current market rates discover the gap during margin reviews.
Typical impact: 0.5–1.5% of revenue.
Fix: quarterly review of crew loaded cost against market rates (BLS local data is the reference).
Leak 10: Warranty claim cost absorption
Warranty claims handled informally — the crew goes back to fix something, no clear accounting of cost, no recovery from supplier or manufacturer when material defects are at fault.
Typical impact: 0.4–1.0% of revenue annually.
Fix: documented warranty claim process with supplier/manufacturer recovery cadence. Track warranty cost by job and surface patterns.
Leak 11: Production downtime
Idle crew days from material delivery slips, weather, scheduling errors, or supplier issues. The crew is paid; no revenue is generated.
Typical impact: 6–14 idle crew days per crew per year at $10M operator. At median crew loaded cost, this is $30K–$80K annually.
Closers and project managers giving free upgrades (premium underlayment instead of standard, premium ventilation, full gutter package) to maintain customer satisfaction. Each one feels small; the aggregate is large.
Typical impact: 0.5–1.5% of revenue annually.
Fix: clear spec rules and a pricing tier structure (good/better/best) that channels the upgrade conversation into a paid path instead of a free one.
What the cumulative leak looks like
Conservatively stacking all 12 leaks: 8–14 percentage points of gross margin variance. On a $10M operator, that's $800K–$1.4M of margin not captured.
Most operators won't have all 12 leaks at their typical-case levels. But every operator we've audited has had at least 6 of them at meaningful magnitude. The first audit usually surfaces the top 3–4 in your specific shop.
Where to start
Lowest-hanging fruit by typical impact and ease of implementation:
AR cycle (Leak 3) — 30-day implementation, large dollar return.
Estimate under-bidding (Leak 1) — 60–90 days, largest single-leak return.
Closer discounting (Leak 5) — process change, near-instant, requires no software.
Spec creep (Leak 12) — process change, requires closer training.