Roof Intel
Case Study · Field-tested in Hamilton County, TN

Door-to-door roofing leads, ranked by what's actually failing.

Roof Intel pulls county parcels, building permits, NOAA storm reports, FEMA flood maps, and Google Solar geometry into one ranked list — then verifies every top lead with material-aware AI vision before your team knocks the door.

Built for sales teams · · Mobile-first · · No double-knocks
353
Active leads scored right now
234
Properties cross-referenced with building permits
6
Roof materials AI distinguishes (asphalt → slate)
3
Image angles per lead (street + 2 aerial zooms)
Live look

This is what your reps see.

The actual UI from the deployed app. Addresses and scores below are synthetic — real customer data isn't shown on a public page.

roof-intel.vercel.app · anonymized preview
Roof Intel
Leads Map Route Pipeline
353 active
45 HOT
308 WARM
$2.1M est. pipeline
100
HOT
•••• SAWYER PIKE Signal Mtn
Built 1998 · Asphalt arch. · AI 3/10 condition · ~2y remaining
vision-verified permit nearby storm 18mo ago
98
HOT
•••• HIXSON PIKE Hixson
Built 1984 · Asphalt arch. · AI 4/10 condition · ~3y remaining
vision-verified permit nearby
73
WARM
•••• ROCKY LEDGE RD Soddy Daisy
Built 1965 · Asphalt arch. · AI 6/10 condition · ~8y remaining
vision-verified vision override: roof newer than build
52
WARM
•••• BROW LAKE RD Signal Mtn
Built 2014 · Metal standing seam · AI 8/10 condition · ~45y remaining
metal · 60-yr lifespan demoted by material
→ Real app shows live street view, aerial detail, permit history, and disposition controls per lead.

Addresses redacted with “••••”. Card data, scores, and remaining-life figures are illustrative; AI condition reads on real leads use the same 0–10 scale and the same material catalog shown here.

How it works

Find. Verify. Knock.

Three stages — every lead earns its way onto the HOT list with evidence, not guesses.

01 · DISCOVER

Pull every parcel in your territory

County assessor records, building-permit history, FEMA flood zones, Census tract income, and recent NOAA storm hits — all merged on the parcel ID so you start with the full picture.

02 · SCORE

Material-aware AI verification

Claude vision reads street view + two aerial angles per top lead and identifies the actual roof material. A 25-year asphalt roof at year 22 scores HOT — a 75-year metal roof at year 30 does not. No more "old house = sale."

03 · ROUTE

Optimized turn-by-turn from your GPS

Build a multi-stop route from your current location, hand it off to Google or Apple Maps, and capture dispositions on the way. Worked leads drop out of the queue so the team never double-knocks.

The interesting parts

Things this build solved that most lead tools don't.

Each of these came out of a real field test — and most of them changed something fundamental about how the score is computed.

Permit coverage went from 5 → 234 leads

Hamilton County has two separate permit databases with inconsistent abbreviations (RD vs ROAD). A canonical-address sweep with multi-source merge surfaces every recent re-roof, so a property with a 3-year-old permit auto-demotes before a rep ever looks at it.

The metal-roof problem, solved

Generic AI scoring kept flagging 75-year metal roofs as urgent. A material catalog (asphalt 3-tab, architectural, standing seam, corrugated, tile, slate, TPO/EPDM) normalizes age against each material's actual lifespan before ranking.

Vision evidence beats vintage data

If AI sees a 7/10 roof, year-built gets capped at 5 — no more "1965 build, must be old." Unverified high scores get an unverified cap at 79 (WARM) until vision or a permit confirms the read.

Active vs. Worked, automatically

Any disposition, status change, or pipeline move sends a lead from the main board to a separate Worked tab. Enrichment skips Worked leads, so the team never reprocesses houses they've already knocked.

Field truth tunes the model

Reps capture observed roof condition + material + free-text notes from the door. The yellow callout in the detail panel shows AI vs. truth side-by-side, so disagreements are surfaced for prompt-tuning instead of buried.

Cost per lead, optimized

Satellite tiles cached in Vercel Blob (free repeats). Google Solar API deferred to detail-open. Background enrichment gated by score threshold. Total enrichment cost runs roughly $0.005–0.01 per lead.

Under the hood

Built lean on serverless and good public data.

Data sources

County parcels AAR / Chattanooga permits NOAA Storm Events FEMA NFHL flood zones U.S. Census ACS Google Solar API Google Static Maps Google Street View

Stack

Claude Sonnet 4 vision Node + Express Vercel serverless Vercel KV Vercel Blob Leaflet + markercluster Google Maps Routes Apple Maps deep-link scrypt + HMAC sessions

Want to look inside the app?

The tool is gated to authorized users. If you're reviewing the case study, ping Dylan for a walkthrough — otherwise sign in below.

Sign in →