Roof scope packetPhotos + adjuster estimate → scope, 3-option proposal, items to verify, follow-up draft

Before

  • After the inspection the owner rebuilds the estimate from photos and notes at night. One owner on a contractor forum describes "spending like an hour per estimate" and losing bids to slow turnaround.
  • Quoting is a top time drain for 37% of home-service owners (Jobber survey), and only about half of $1M+ roofing firms follow up open estimates within 15 days (ServiceTitan, 1,020 owners).
  • Roofing had the lowest live-answer rate of 15 trades, 28.1% of 3,604 calls, in 99 Calls' client data (not a national census). The owner is on roofs, not at a desk.
  • Checking an adjuster estimate line by line against the measured roof is slow, so gaps are easy to miss.

After

  • Photos and the measurement become a scope summary: squares, pitch, layers and damage per photo callout.
  • A good / better / best proposal is priced from the contractor's own price book, with lines to untick.
  • The adjuster estimate is compared to the scope, giving a list of possible missed items, each with a reason and marked for the owner to verify. A follow-up draft is ready to edit. Nothing goes out on its own.
Sample jobs (loads photos, job note and estimate together)
Roof photos (sample photo sets are labelled illustrations)
In production a vision model tags each photo. This demo does not analyse uploads: your photos are shown here only, never read, and they stay in your browser.
Pick a sample job or paste a note.

Price book (fictional)

How the packet is built

  1. Read. The job note becomes structured JSON: homeowner, address (which picks the contractor), loss type and date, stories, layers and timing. Each sample photo set carries pre-read facts: the measurement (area, pitch, ridge, hip, valley, eave and rake lengths) and the damage callouts per photo. The adjuster estimate is split into line items and each line is mapped to a scope item. This page uses deterministic rules; production uses a vision model for photos, PDF text extraction for the estimate and an LLM for the note, all held to the same JSON schema, with the rules kept as a fallback and as test checks.
  2. Scope. Squares come from the measured area, with a waste factor by roof style (gable 10%, gable with valleys 12%, hip 14%; the owner can change it). Pitch sets steep-slope labor, stories set the two-story charge, and each photo tag adds its line (second layer, chimney, skylight, dish, decking).
  3. Price. Good, Better and Best are built from the same scope with different shingle, underlayment, ventilation and warranty lines. Optional lines such as gutters start unticked.
  4. Compare. Rules check the estimate against the scope: quantities (tear-off, shingles with waste, ridge cap, drip edge length, pipe jacks, decking) and items with no line at all (starter, drip edge, valley membrane, ridge vent, flashing, steep or two-story charges, permit, O&P when several trades are involved). Each difference becomes a possible item with a reason and the photo it comes from. These are prompts for the owner to check, not findings about the estimate.
  5. Review. The owner sees one packet, unticks lines, edits the message and decides what to send. Nothing is sent from this page.

Production architecture

Architecture: photos, measurement report, adjuster estimate and job note go through intake, validation, a scope and rules layer with the price book, then outputs reviewed by the owner before hand-off