BuildPricing Get Estimate

Compare contractor quotes

Enter three quotes for the same project and we'll flag the outliers, the missing line items, and the eight red flags that distinguish honest pricing from sales tactics.

Quote 1

Quote 2

Quote 3

The eight red flags worth a follow-up call

  1. No itemization. "Roof replacement — $11,500 turnkey" is not a quote. It's a number. Ask for a written breakdown of materials, labor, tear-off, permit, and margin. A contractor who won't provide it is hiding something — usually labor margin or skipped scope.
  2. Permits unclear. Most jurisdictions require permits for the work the calculator covers. A quote that doesn't specify who pulls the permit (you or the contractor) and who pays is a dodge. Standard practice: contractor pulls and pays, charges $150–$500.
  3. Warranty under 1 year on labor. Industry norm is 1–10 years on labor depending on trade. Less than 1 year is a workmanship red flag.
  4. 50%+ deposit requested. Standard deposit is 10–30% with milestone payments. 50%+ up front is high-risk for the homeowner if the contractor disappears.
  5. Materials line under 30% of total. Suggests labor markup is hiding equipment or material delivery. A typical roofing job is 40% material / 50% labor / 10% other; HVAC is 50/40/10.
  6. Quote expires in 24 hours. Pressure tactic. A real quote stays valid 30–90 days.
  7. Door-to-door storm chaser. Out-of-state contractors after major storms are responsible for the bulk of roofing fraud. Always verify state license and physical office.
  8. "Manager will approve a discount today only." Used by branded window/roof/solar sales programs. The discount is real — but it's available next week too. Take 48 hours.

How to audit yourself

The quickest way to validate a quote is to compare it to our calculator estimate for the same scope. If our calculator says $12,500 ± 15% and your quote is $19,200, that's a meaningful gap to ask about. The reasons may be legitimate (custom materials, complex access) or not. Either way, getting an answer is the goal.