Skip to main content

How to Measure Roof Replacement Demand by Neighborhood

Michael Torres, Storm Damage Specialist··32 min readRoofing Sales & Growth
On this page

Most roofers pick where to work by feel. Somebody closed a job on Maple Street, the crew liked the neighborhood, the houses looked the right age, so the canvassers go back to Maple Street. That instinct is not worthless. A good salesperson who has knocked ten thousand doors has a real model in their head. But it is a model of one street, built from a handful of conversations, and it does not scale past the person who holds it.

Measuring replacement demand by neighborhood means turning that gut feel into something you can put on a map, hand to a green canvasser, and defend when you spend money on mail. It is not magic and it is not a single number you buy. It is a handful of data layers, stacked, that together tell you where the roofs are old enough, beat up enough, and owned by people stable enough to actually pull the trigger on a re-roof.

Below is the method I would use if I were handed a new market tomorrow and told to figure out where to point the trucks. It is built for residential asphalt shingle work, which is where most of you live, and it accounts for the parts everyone gets wrong: confusing year-built with roof age, treating a storm map as if it were a damage map, and ignoring the homeowner-economics layer that decides whether a worn-out roof actually becomes a sold job.

What "demand" actually means for a re-roof

Before you measure anything, get precise about what you are measuring. Roof replacement demand at the neighborhood level is the count of homes that are simultaneously:

  1. Physically due — the roof covering is at or past the back half of its service life, or it has taken storm damage that justifies replacement rather than repair.
  2. Economically able — the owner can finance or insure the work, and intends to keep the house long enough to care.
  3. Reachable — you can actually get a person at that address to say yes (owner-occupied, not a rental managed by an absentee LLC three states away, not a house already under contract with the guy down the street).

A neighborhood full of 28-year-old roofs where 70% of the homes are rentals owned by out-of-state investors has high physical demand and almost no addressable demand. A subdivision full of 9-year-old roofs has the opposite problem. The goal is to find the overlap of all three, street by street, and rank it.

That framing matters because it tells you which data layers you need. You are going to build a score out of three buckets — age and wear, homeowner economics, and competitive saturation — and the neighborhoods that win are the ones that score on all three, not the ones that spike on one.

The five data layers, ranked by how much they move the needle

Here is the stack, in priority order. You do not need all five to start. Layers one and two get you most of the way; the rest sharpen the edges.

Layer What it tells you Where it comes from Effort to get
1. Build-year cohort Roughly when the housing stock went up — your single best proxy for roof age at scale County assessor / parcel data, U.S. Census ACS Low–medium
2. Storm history Which streets have taken hail or damaging wind, and how recently NOAA Storm Events, SPC storm reports, IBHS Low
3. Actual roof age range The roof, not the house — catches the re-roofs the build year hides Aerial imagery analysis, permit pulls, RoofPredict Medium
4. Owner-occupancy & tenure Whether the person who answers can and will buy Census ACS, assessor homestead flags Medium
5. Competitive saturation How many crews are already working the area Yard-sign counts, permit data, your own win rate Medium–high

The rest of the piece walks each layer, then shows you how to combine them into one score and act on it.

Layer 1: Build-year cohort — your cheapest, highest-leverage signal

The age of the housing stock is the foundation of every neighborhood demand model, because most roofs in a subdivision were built within a year or two of the houses, and asphalt shingle roofs have a predictable service life. A neighborhood platted and built in 1998 will see a wave of original-roof failures roughly two decades later, give or take, depending on shingle grade, slope, ventilation, and climate.

The roof-age service-life window you should be using

The National Roofing Contractors Association is clear that the marketing "lifespan" on a shingle wrapper is not a guarantee of in-service performance. Real-world asphalt shingle service life clusters like this:

  • 3-tab / builder-grade asphalt: commonly 15–20 years in service
  • Architectural / laminate asphalt: commonly 20–30 years in service
  • Premium / designer laminate: can push past 30 under good ventilation and a moderate climate

Those are in-service ranges, not the number stamped on the bundle. Hot, sun-baked southern exposures, poor attic ventilation, and steep south- and west-facing slopes pull the low end of that window forward by years. A north-facing roof in a mild climate runs long.

What this means for measurement: if you know a tract was built around 1999 and it is mostly 3-tab — common for late-90s tract housing — then by today a large share of those original roofs are at or past end of service life. That is a hot cohort. A tract built in 2014 with architectural shingles is a cold cohort for original-roof demand, no matter how nice the neighborhood looks.

How to pull build-year data yourself

Two sources, and you want both:

County assessor / parcel data. Nearly every county publishes parcel records that include year_built per address. Many have a GIS portal where you can download the whole layer as a shapefile or CSV. Search [your county] parcel GIS open data or [your county] assessor data download. This is parcel-level — one row per house — which is exactly the granularity you want.

U.S. Census American Community Survey (ACS). The ACS publishes "Year Structure Built" (table B25034) and median year built (B25035) down to the block-group level, which is usually a few hundred households — often a single subdivision or a slice of one. It is free at data.census.gov. Block groups are coarser than parcels but they are clean, standardized, and great for a first-pass heat map across a whole metro.

A practical workflow:

  1. Download the assessor parcel layer for your county.
  2. Filter to single-family residential.
  3. Bucket every parcel by build decade: pre-1980, 1980–1989, 1990–1999, 2000–2009, 2010+.
  4. Map it. Color the 1995–2005 cohort hot — those are the homes most likely sitting on a first or second roof that is now due.

You now have a metro-wide first draft of where physical demand concentrates, for the cost of an afternoon.

The trap: year built is not roof age

Here is the single biggest mistake in neighborhood demand analysis, and it is worth stating bluntly: year built tells you when the house was built, not when the roof was last replaced. Zillow, the assessor, and Google all show year built. None of them show re-roofs.

Think about what that hides. A 1996 subdivision should be a hot cohort. But if a hailstorm rolled through in 2019 and half those homes got insurance-funded re-roofs, half that neighborhood is now sitting on five-year-old roofs while the assessor still says 1996. Knock those doors on a build-year model and you will burn gas and stamps on roofs that just got done — and you will look uninformed to the homeowner whose roof is obviously new.

The reverse happens too. A 2003 tract that missed every storm and used cheap 3-tab might be failing early at 21 years, ahead of where the build-year cohort alone would predict.

Build year is the foundation, but it is a noisy proxy. Layers 2 and 3 exist to correct that noise. Never sell a neighborhood on build year alone.

Layer 2: Storm history — where roofs got aged in an afternoon

A hailstorm or a damaging wind event can take a 12-year-old roof that had eight years of life left and end it in twenty minutes. Storm history is the layer that explains why two neighborhoods of identical build year can have completely different demand. The one under the 2022 hail swath is full of compromised roofs; the one a mile north is fine.

Free, authoritative storm data

You do not need a paid hail-report subscription to start. The government publishes the raw events:

  • NOAA Storm Events Database (ncdc.noaa.gov/stormevents) — searchable by county and date, with event type (hail, thunderstorm wind, tornado), hail size, and wind speed. Downloadable as bulk CSV going back decades.
  • NOAA Storm Prediction Center storm reports (spc.noaa.gov) — daily reports of hail and wind with rough lat/long, good for recent events.
  • Local NWS Weather Forecast Office storm summaries and Local Storm Reports for your area.

Pull the last 10–15 years of hail and wind events for your counties. For each event you care about, note the date, the hail size, and the rough footprint. Hail at or above 1 inch is the threshold where shingle damage becomes plausible; 1.5 inches and up is where it becomes likely and widespread. Damaging straight-line wind generally starts mattering for shingles around 50–60 mph, with real loss potential as you climb toward severe-thunderstorm and tornado thresholds.

The trap: a storm map is not a damage map

Now the second big mistake, and it is the mirror of the year-built trap. A hail map shows where it hailed. It does not show which roofs the hail actually wore out. Those are different questions.

Within a single reported hail swath, the actual damage varies enormously house to house. It depends on:

  • Stone size and density at that specific address (swaths are not uniform; a county-level "1.75 inch" report might have been golf-ball-sized over one subdivision and pea-sized two streets over)
  • The angle the stones fell and the wind that drove them, which determines which slopes got hit
  • The roof's slope and orientation relative to the storm's direction of travel
  • How old and brittle the shingles already were — a 4-year-old roof shrugs off hail that totals a 16-year-old one

This is why two roofs on the same block, under the same reported storm, can be in completely different shape. A storm map drawn at the county or even ZIP level smears all of that together. If you canvass a whole ZIP because "there was a storm," you are knocking a lot of doors where nothing meaningful happened, and you are skipping the worst-hit street because it sat just outside the reported polygon.

So treat free storm data as a candidate filter, not a target list. It tells you which neighborhoods are worth a closer look. To rank doors inside the swath you need the next layer.

Layer 3: Actual roof age and per-roof storm wear

This is where you separate from the roofer who is still working off the assessor's year-built field. The two layers above give you cohorts and storm footprints. This layer gives you the roof itself.

Reading roof age from aerial imagery

A roof's age leaves visual evidence from above. Granule loss shows up as tonal mottling and lighter, washed-out patches. Older roofs lose their crisp shadow lines as shingles cup and curl. Streaking, patched sections, and mismatched repairs all read in high-resolution aerial and oblique imagery. None of this gives you an exact install date — and you should never claim it does — but it gives you a defensible range: this roof reads as roughly 18–22 years, that one reads as 5–8.

A range is the honest unit here, and it is enough. You are not appraising one roof; you are ranking ten thousand of them. Knowing a roof is "old" versus "recent" with reasonable confidence, at scale, is exactly what turns a build-year heat map into a knock list.

You can do a version of this by hand. Pull up high-res imagery, look at a sample of roofs in a target tract, and sanity-check the build-year cohort against what the roofs actually look like. If the 1998 tract is full of crisp, dark, uniform roofs, somebody re-roofed the neighborhood and your cohort model is wrong. That five-minute check has saved a lot of wasted mail.

Permit pulls — the ground truth nobody uses

Many jurisdictions require a permit for a re-roof and publish those permits. A re-roof permit is the cleanest possible signal that a specific address already got a new roof and is out of your demand pool for 20-some years. Pull your municipality's permit data (search [city] building permit search or open-data portal), filter for roofing permits over the last decade, and you have a list of addresses to exclude. This is the single best correction to the year-built trap and almost nobody bothers to do it.

Permit coverage is uneven — some areas barely enforce roofing permits, some homeowners skip them — so it is a subtractive filter, not a complete census. But every confirmed re-roof you remove from a target list is gas and postage you keep.

Where RoofPredict fits this layer

Doing layer 3 by hand across a metro is slow. Eyeballing imagery for ten thousand roofs and cross-referencing permits is a project, not an afternoon. This is the part of the stack RoofPredict was built to automate.

RoofPredict scans the homes in an area from aerial imagery and returns, per address, a roof-age range plus a per-roof model of the storms that roof has actually taken — hail and wind scored on that roof, accounting for the storm's path and the roof's slope and orientation, rather than only whether the address fell inside a county-level hail polygon. It pairs the age signal and the storm signal into a single read so you can rank a street from "most likely due" to "skip it," and it can enrich a list you already own — your CRM, an old estimate file, a mailing list — with those signals so you are not buying anybody's leads.

Honest about the limits, because that is the only way this is useful: the age is a range, not an install date, and the storm model gives you odds that a roof was worn out, not proof of damage. It does not replace a physical inspection, and it does not tell you a specific roof will fail on a specific date. What it does is take the layer-3 work that would otherwise eat a week of someone's time and turn it into a ranked map you can hand to a crew the same day. If you want to do this layer manually, the methods above work. If you want it done at scale across your whole footprint, that is the tool's job.

Layer 4: Homeowner economics — can the door actually buy?

A worn-out roof on a house nobody can or will pay to fix is not demand. This layer is the difference between physical demand and addressable demand, and it is the one analytical roofers skip most often because it feels like a marketing problem rather than a roofing one. It is not. It decides your close rate.

Three sub-signals, all free from the Census ACS at block-group level, plus the assessor:

Owner-occupancy rate. Renters do not buy roofs; their landlords do, and absentee landlords are slow, cheap, and hard to reach. Census table B25003 (Tenure) gives owner-vs-renter occupancy per block group. A neighborhood at 90% owner-occupied is a fundamentally easier sell than one at 45%. You can also get a homestead-exemption flag from many assessor datasets, which is a per-parcel owner-occupancy signal.

Tenure / how long owners have stayed. Someone who just bought is not re-roofing next month; someone who has owned for 12 years and plans to stay is a far better prospect for a discretionary repair. ACS reports year-householder-moved-in (B25038). Longer-tenure block groups convert better on non-emergency replacements.

Income and home value, used carefully. You are not looking for the richest neighborhoods — the truly wealthy often have property managers and the cheapest neighborhoods may struggle to finance. You are looking for the broad middle where a homeowner can either write a check or qualify for financing for a five-figure job. ACS median household income (B19013) and assessor market values get you there. Map it as a band, not a "higher is better" gradient.

The practical move: take your hot age-and-storm neighborhoods and down-weight the ones that are majority-rental or very-recent-turnover, and keep the stable, owner-occupied, middle-market tracts even if their build cohort is a notch younger. A stable 2004 owner-occupied subdivision often out-converts a 1996 tract that has gone half-rental.

Layer 5: Competitive saturation — how crowded is the street?

The last layer is about your yield, not the raw demand. A neighborhood with high demand that already has six crews working it and a yard sign on every other lawn is a worse use of your trucks than a slightly cooler neighborhood nobody is touching.

Ways to read saturation without buying anything:

  • Drive it and count yard signs and dumpsters. Crude, fast, real. Five competitor signs in two blocks tells you the area is fished out or about to be.
  • Permit velocity. If you are already pulling permit data for layer 3, look at the rate of recent re-roof permits in a tract. A spike means competitors are actively converting it — demand is being consumed in real time.
  • Your own historical win rate by area. If you have any CRM history, your close rate by ZIP or subdivision is gold. Areas where you win cheap are areas to double down; areas where you bid a lot and close little are telling you something — wrong price point, entrenched competitor, or a demographic mismatch you can see in layer 4.

Saturation is the layer with the least clean public data, so weight it lighter and lean on your own numbers and a windshield survey. But do not ignore it — it is the difference between a market that has demand and a market where you can capture it.

Sizing the demand in dollars, not only in doors

A door count is useful, but the number that gets an owner to commit a marketing budget is a dollar figure. You can turn your neighborhood scores into a rough annual replacement-demand estimate, which is what you want when you are deciding whether a market is worth opening a satellite crew for.

The back-of-envelope math is straightforward. For a given tract:

  1. Count single-family owner-occupied homes (from the assessor, filtered).
  2. Estimate the share whose roofs are at or past service life right now (from your age cohort and per-roof read).
  3. Apply a realistic annual replacement rate to that pool. Over a 20-some-year service life, a steady-state neighborhood replaces roughly 4–5% of its roofs per year once it matures, and a tract that just crossed the service-life threshold runs hotter than that for a few years as the original-roof wave breaks. A neighborhood freshly hit by qualifying hail spikes far above steady-state for a season or two.
  4. Multiply by your average residential job value.

A worked example. A 600-home owner-occupied subdivision, built around 1999, mostly 3-tab, now squarely in the failure window:

  • 600 homes, ~85% owner-occupied that you can actually sell = ~510 addressable homes
  • A maturing late-90s tract breaking its original-roof wave might realistically replace 6–8% in a given year as failures cluster — call it 7% = ~36 re-roofs that year
  • At a residential job value of, say, $14,000 = roughly $500,000 of replacement demand in that one subdivision in one year

Do not treat that as a forecast you can take to the bank — it is a sizing estimate built on a replacement-rate assumption, and your local job value and the real failure curve will move it. But it reframes the decision. You are no longer asking "is this a good neighborhood?" You are asking "is there half a million dollars of work in this one subdivision, how much can I realistically capture against the competition, and what does it cost me to reach it?" That is the question that justifies a mail budget or a second crew, and it is the version of demand your numbers-minded competitors are already running.

Run the same math across your top decile and sum it. Now you have a total addressable replacement figure for your footprint, which is the single most useful number for planning headcount and ad spend for the year.

Building the spreadsheet without a data team

You do not need software you cannot operate. Here is a concrete structure for the spreadsheet that holds all of this, so a sales manager can maintain it.

One row per neighborhood unit. Use census block group or named subdivision as the row key — block groups are good because the ACS data already comes that way and they are small enough to be meaningful. Columns:

Column Source Notes
Geo ID / name Census / assessor Your join key across every dataset
SF home count Assessor Filtered to single-family residential
Median build year ACS B25035 Or compute from parcel build years
% at/past service life Your model From cohort + per-roof read
Recent qualifying storm? NOAA / per-roof Date and hail size of worst recent event
% owner-occupied ACS B25003 The economics gate
Median tenure ACS B25038 Longer is better
Affordability band ACS B19013 / value Low / mid / high, mid scores best
Saturation Windshield + permits Your subjective 0–100
Component scores Formulas Each normalized 0–100
Weighted total Formula The rank key
Est. annual $ demand Formula From the sizing math above

The component-score formulas are simple normalizations. For the age component, map your "% at or past service life" straight to a 0–100 score. For storm, score by recency and severity of the worst qualifying event. For owner-occupancy, the percentage is nearly the score already. Then the weighted total is one SUMPRODUCT across your component scores and your weight row.

Joining the datasets is the only fiddly part, and it is a left-join on the geographic ID. If spreadsheet joins are not your thing, the assessor and ACS both export with standard FIPS/block-group identifiers that line up. Once the join is built, refreshing it each quarter is a download-and-paste, not a rebuild.

Keep a last_validated column. Every time a crew works a neighborhood, note whether reality matched the score, and date it. Over a season that column becomes your calibration log — the thing that tells you your age weight is too hot or your saturation read is too generous. A model you never check drifts; a model with a feedback column gets sharper every quarter.

Putting it together: a neighborhood demand score

Now combine the layers into one number you can rank and map. You do not need a data scientist. A spreadsheet with a weighted score per block group or subdivision is plenty to start.

A simple scoring model

Score each neighborhood 0–100 on each component, then weight and sum. Here is a starting weight set; tune it to your business after a season of results.

Component What earns a high score Suggested weight
Roof age / build cohort High share of roofs at or past service-life window 35%
Storm wear Recent qualifying hail/wind that actually worked the roofs 20%
Owner-occupancy & tenure Mostly owner-occupied, stable long-tenure households 20%
Affordability band Middle-market income/value, can finance a re-roof 15%
Low competitive saturation Few signs, low recent permit velocity, you win here 10%

A worked example for one block group:

  • Build cohort: 1997 tract, mostly 3-tab, reads old in imagery → 90 × 0.35 = 31.5
  • Storm wear: caught a 1.75-inch hail event 18 months ago, per-roof model shows real wear on west-facing slopes → 80 × 0.20 = 16.0
  • Owner-occupancy: 88% owner-occupied, median tenure 11 years → 85 × 0.20 = 17.0
  • Affordability: solid middle-market, median value supports financing → 75 × 0.15 = 11.25
  • Saturation: two competitor signs, moderate permit velocity → 55 × 0.10 = 5.5

Total: 81.25. That is a go-now neighborhood: old roofs, real recent storm wear, stable owners who can pay, and not yet picked over.

Contrast it with a 2013 subdivision: build cohort scores maybe 20, no recent storm, high owner-occupancy and income but on roofs with 15 years of life left. It might total in the 30s. High-income and stable, but no physical demand — you would be selling re-roofs to people who do not need one yet.

Rank, then map

Sort every neighborhood by total score. The top decile is where mail and your best closers go first. The middle is for fill-in canvassing and your green reps to cut teeth. The bottom you ignore until a storm changes the math. Put it on a literal map — color by score — and now a route planner or a brand-new canvasser can be pointed at the right streets without holding ten years of instinct in their head.

Field-validating the model before you spend real money

A scoring model built from data is a hypothesis. Validate it cheap before you bet a mail budget on it.

  1. Ground-truth a sample. Take your top-10 scored neighborhoods and physically drive them. Do the roofs look the age your model says? Are they actually owner-occupied (cars in driveways, maintained yards, not multiple mailboxes)? If your model says "old roofs" and you see a sea of new ones, you hit the re-roof trap — go back and pull permits or imagery for that tract.
  2. Door-knock a small test cell. Knock 50–100 doors in a top neighborhood and 50–100 in a middle one. Track contact rate, conversation rate, and inspection-set rate. If the top-scored area outperforms, your model has signal. If it does not, your weights are off — usually too much weight on age, not enough on owner-occupancy or saturation.
  3. Test mail by score band. If you mail, send the same piece to a high-score band and a medium-score band and track response by band. The lift tells you whether the model is worth scaling.

This is also where you catch the honest limits of the data layers. Free storm data missed a microburst; the assessor's year-built was wrong on a re-platted tract; a "stable" block group quietly went rental. Field validation is how the map earns trust.

Edge cases that break a naive model

The clean version of this method assumes neighborhoods are uniform — same build year, same shingle, same storm exposure. Real markets are messier. Here are the situations that quietly wreck a demand model and how to handle each.

Infill and tear-down neighborhoods. Older urban tracts often have houses spanning eighty years on the same block — a 1955 bungalow next to a 2019 rebuild. A block-group median build year averages that into mush and tells you nothing useful. In these areas, skip the cohort shortcut and go straight to a per-roof read; the assessor's per-parcel build year (and a roof-by-roof age scan) is the only honest signal because the neighborhood has no single "wave."

HOA-driven re-roof waves. Some HOAs and master-planned communities push coordinated re-roofs, or a single restoration company swept the whole subdivision after one storm. That collapses an entire cohort to the same recent roof age — your hot 1998 tract is suddenly cold everywhere. Permit data and an imagery spot-check catch this. If you see uniform, crisp, identical roofs across a tract that should be old, assume a coordinated re-roof and move on.

Manufactured and modular housing. These often have lower roof slopes, different covering systems, and different replacement economics than stick-built homes. They can skew your affordability and job-value math hard. Flag and segment them rather than scoring them on the same model as conventional single-family.

Boundary storms. The worst-damaged street frequently sits just outside the reported swath polygon, because the report is anchored to where someone happened to measure a stone. Never hard-cut a neighborhood out because it fell a block outside the line. Treat storm footprints as fuzzy and let the per-roof read, not the polygon edge, make the call on borderline blocks.

New-construction defect clusters. Occasionally a builder used a bad shingle lot or botched ventilation across a development, and roofs fail a decade early — a 2010 tract behaving like a 2000 one. Your cohort model will call it cold and be wrong. You catch these only from the field: a cluster of early failures in a tract that "should not" be failing is worth a closer look and a per-roof scan.

Assessor data that lags reality. Re-platted parcels, recent subdivisions, and recently split lots can carry stale or missing build years. When a row looks impossible (a "1900" default, a blank, a build year after the imagery clearly shows a finished house), treat it as missing and fall back to imagery rather than trusting the field.

None of these break the method — they break the shortcut of scoring on cohort alone. Every one of them is solved by dropping to the per-roof layer for the affected tracts, which is the broader lesson: cohorts are for fast metro-wide triage, and the per-roof read is what you trust when a neighborhood does not behave like a clean cohort.

Timing: when to hit a measured neighborhood

Measuring demand tells you where. Timing tells you when, and getting the sequence right multiplies the value of the map.

Right after a qualifying storm, move fast on the worst-hit, oldest cohorts. Storm-aged roofs are a perishable opportunity — competitors converge, and the longer a worked roof sits, the more leaks and the more the homeowner forgets the storm. Your map should already have the old cohorts flagged, so when a storm hits, you overlay the fresh swath and you have a ranked door list the same day instead of starting from scratch.

Between storms, work the aging-out cohorts steadily. This is the demand most roofers ignore because there is no event to react to. A 1999 tract is producing failures every single month, storm or not, as original roofs simply wear out. A neighborhood demand map turns that quiet, continuous demand into a routable, year-round pipeline — the work that keeps crews busy in the slow season and stops your business from living and dying by the weather.

Seasonally, front-load mail before peak buying. Homeowners think about roofs in spring and after the first storm of the season. Your top-band mail should land just ahead of that window, not in the dead of winter. Use the map to decide who gets the early, premium piece.

The larger point: a demand map is not a one-time report you generate and file. It is a living layer you keep current and re-rank as storms hit, permits post, and cohorts age into the failure window. Refresh it quarterly, overlay storms as they happen, and it stays the operating picture your routing and mail run off of all year.

A 30-day rollout for a market you do not know yet

If you are starting cold, here is a sequence that gets you from nothing to a ranked map without boiling the ocean.

Week 1 — Foundation. Download the county assessor parcel layer and the ACS build-year and tenure tables. Bucket parcels by build decade and map them. Pull NOAA Storm Events for the last 15 years and overlay the hail/wind swaths. You now have layers 1 and 2.

Week 2 — Correction. Pull building-permit data and build your re-roof exclusion list. Spot-check a sample of your hot cohorts against aerial imagery to catch neighborhood-wide re-roofs. Decide whether to do layer 3 by hand for your top tracts or run a per-roof age-and-storm scan across the footprint so you are ranking actual roofs rather than only cohorts.

Week 3 — Economics and competition. Layer in owner-occupancy, tenure, and affordability from ACS and the assessor. Drive your top 15 neighborhoods for a windshield saturation survey — count signs and dumpsters. Pull your own historical win rate by area if you have it.

Week 4 — Score, validate, deploy. Build the weighted score, rank every neighborhood, and map it. Run a small door-knock or mail test on a top band versus a middle band. Read the results, adjust weights, and hand the top decile to your crews.

Thirty days, mostly free data plus your own legwork, and you have replaced "go back to Maple Street" with a defensible, scalable territory plan.

The storm-damage and documentation angle, done right

A lot of neighborhood targeting is aimed at storm-restoration work, so a clear word on staying on the right side of the line — because this is where roofers get themselves in real legal trouble.

Your job, and the job this whole demand model supports, is to find roofs that may have storm damage, get on them, and document thoroughly. When you inspect a roof in a storm-worked neighborhood, photograph everything: the hail bruising or spatter, the soft metals (vents, flashings, gutters), the mat exposure, dated and geo-tagged where possible. Write an accurate, line-item repair estimate aligned to standard estimating practice for the scope you would actually perform. Hand that documentation and that estimate to the homeowner. That is squarely your lane: you are the contractor documenting damage and pricing the repair of your own work.

What you do not do — and this list is the compliance line, not optional advice:

  • Do not negotiate, adjust, or "handle" the insurance claim for a fee. That is public adjusting, and doing it unlicensed is illegal in most states.
  • Do not interpret the homeowner's policy or tell them what is and is not covered. That is the carrier's and the adjuster's job.
  • Do not promise a specific payout, an approval, or that the claim "will go through."
  • Do not say anything about the deductible — not that it is waived, absorbed, covered, eaten, or "taken care of." In many states that is insurance fraud.
  • Do not advertise a "free roof."
  • Do not represent the homeowner against their insurer.

The safe and accurate frame: you document the damage, you write an honest estimate, you hand it to the homeowner. The homeowner files the claim and the insurer decides coverage. Your neighborhood demand model tells you which roofs are most likely worth inspecting — age plus real per-roof storm wear. It does not, and should not, tell a homeowner their claim is approved. Keep those two things separate and you capture all the storm-restoration upside without stepping on a rake.

What the pros get wrong

A quick inventory of the mistakes that show up over and over, so you can check yourself against them.

  • Selling on year built alone. The re-roof trap. Half a hot cohort can already be done. Always correct with permits or imagery.
  • Treating a hail polygon as a target list. A storm map is a candidate filter. Damage varies house to house inside the swath; rank with per-roof signal, not a ZIP-wide brush.
  • Ignoring owner-occupancy. Beautiful old roofs in a 50%-rental tract will crush your close rate. Addressable demand, not physical demand.
  • Over-weighting income. The richest neighborhoods are not the best targets; the broad, stable middle that can finance a five-figure job is.
  • No saturation check. Pouring trucks into the most-fished pond. Count the signs.
  • Building the model once and never validating. The map is a hypothesis until a test cell confirms it. Drive it, knock it, read the numbers, retune.
  • Confusing a range for a date. Roof age from imagery is a range; storm wear is odds. Anyone selling you exact install dates per roof at scale is overselling. Plan with ranges and odds, and you will be right far more than you are wrong.
  • Drifting over the claims line. Document and estimate; never handle, interpret, promise, or touch the deductible.

Turning the map into routes, mail, and a list you own

The payoff of all this is that your outbound stops being a brute-force spray. A few concrete ways the ranked map changes the work:

Routing. Hand canvassers the top-decile streets in geographic clusters so they are not driving across town between knocks. A green rep working a high-score block sounds informed because the doors are actually the right doors — and reps who make money on their routes stay, which quietly fixes half your turnover problem.

Mail. Send your nicer, more expensive pieces only to the top score band. The whole point of measuring demand is to stop paying postage to reach roofs that cannot buy. One re-roof is worth thousands; a refined mail list pays for itself fast.

Your own old list. The highest-yield, lowest-cost move is to score the customers and estimates you already have. An old estimate from three years ago on a roof that was borderline then is probably due now. Enriching your existing CRM with roof-age and per-roof storm signals turns your own book into a ranked call list — found money, no leads bought from anyone. That is the part most roofers sleep on, and it is the easiest to start with because the list is already yours.

Closing thought

Measuring roof replacement demand by neighborhood is not a single product you buy or a number you look up. It is a stack of layers — build cohort, storm history, actual roof age, homeowner economics, competitive saturation — combined into one score you can rank, map, validate, and act on. Most of the data is free and pullable in an afternoon. The hard part, doing the per-roof age-and-storm read across a whole footprint, is the part worth automating.

That is exactly what RoofPredict does: scan an area, get a roof-age range and a per-roof storm-wear model for every home, and enrich the list you already own so you knock and mail the houses that are worn out and skip the ones that are not. Hand it a street you already know and check it against what you have seen with your own eyes — that is the honest way to find out whether the map is worth trusting. The roofs that are due are already out there. The work is figuring out which ones, before anyone gets on a ladder.

FAQ

What is the single best free data source for measuring roof demand by neighborhood?

County assessor parcel data, because it gives you year-built for every individual house, which is the strongest scalable proxy for roof age. Pair it with the U.S. Census ACS for build-year and owner-occupancy at the block-group level. Together they cost you nothing but time and get you a metro-wide first-draft demand map. Just remember to correct year-built against re-roof permits or imagery, since the assessor never shows when a roof was actually replaced.

Why can't I just use Zillow or the county to find old roofs?

Because Zillow and the county both show year built, not roof age. They cannot see re-roofs. A 1996 subdivision that got insurance-funded new roofs after a 2019 hailstorm still reads as 1996 everywhere, even though half those roofs are now only a few years old. Build year is a starting point; you have to correct it with re-roof permit data or aerial imagery to find the roofs that are actually old.

How accurate is estimating roof age from aerial imagery?

It produces a range, not an install date. Granule loss, fading, curling, streaking, and patches read clearly from above and let you place a roof in a band like 18 to 22 years or 5 to 8 years with reasonable confidence. That is plenty for ranking thousands of roofs from most-likely-due to skip-it. Anyone claiming an exact install date per roof at scale is overselling. For one specific job, you still confirm with a physical inspection.

How recent does a storm need to be to drive replacement demand?

There is no hard cutoff, but the freshest events matter most because competitors and insurers move on them, and worked roofs degrade further over time. Pull the last 10 to 15 years of NOAA Storm Events for context, and weight recent qualifying events — roughly 1 inch and up hail, or damaging straight-line wind — most heavily. A storm from a few years ago can still leave demand if the neighborhood was never fully worked.

Does a hail report mean the roofs in that area are damaged?

No. A hail report tells you where it hailed, not which roofs the hail wore out. Inside a single reported swath, actual damage varies house to house based on stone size at that exact spot, the angle the stones fell, and each roof's slope, orientation, and existing age. Treat storm data as a filter that flags neighborhoods worth a closer look, then rank individual roofs with a per-roof signal rather than knocking a whole ZIP.

How do I account for re-roofs that already happened?

Pull your municipality's building-permit data and filter for roofing permits over the last decade. Those addresses already got new roofs and should be excluded from your target list for two decades. Permit coverage is uneven, so it is a subtractive filter, not a complete census, but every confirmed re-roof you remove is gas and postage saved. A quick aerial-imagery spot-check of your hot cohorts catches neighborhood-wide re-roofs the permits miss.

Why does owner-occupancy matter so much?

Because renters do not buy roofs and absentee landlords are slow, cheap, and hard to reach. A neighborhood full of old roofs that is half rental has high physical demand but low addressable demand, and it will crush your close rate. Census table B25003 gives owner-versus-renter occupancy per block group, and many assessors flag homestead exemptions per parcel. Down-weight high-rental tracts even when their roofs are old.

How do I combine all the layers into one ranking?

Score each neighborhood 0 to 100 on roof-age cohort, storm wear, owner-occupancy and tenure, affordability band, and competitive saturation, then weight and sum them. A reasonable starting weight set is 35 percent age, 20 percent storm, 20 percent owner-occupancy, 15 percent affordability, 10 percent saturation. Rank every neighborhood by total score, map it by color, and send mail and your best closers to the top band first. Retune the weights after a season of real results.

Can I use this model to tell homeowners their insurance claim will be approved?

No, and you should not. A demand model tells you which roofs are most likely worth inspecting based on age and storm wear. It says nothing about coverage. Your job is to document damage thoroughly, write an accurate repair estimate, and hand it to the homeowner. The homeowner files the claim and the insurer decides coverage. Never negotiate or handle the claim, interpret the policy, promise a payout, or say anything about the deductible — that crosses into unlicensed public adjusting and, in some states, fraud.

Where does RoofPredict fit into measuring neighborhood demand?

It automates the slowest layer — reading actual roof age and per-roof storm wear across a whole footprint. It scans the homes in an area from aerial imagery and returns a roof-age range plus a model of the hail and wind each specific roof has taken, so you can rank a street from most-likely-due to skip-it, and it can enrich a CRM or mailing list you already own. The age is a range and the storm read is odds, not proof, so it complements rather than replaces a physical inspection.

The Roofline by RoofPredict

Stay Ahead of Roofing Market Changes

Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Sources

  1. Asphalt Shingle Roofing Information and Service Life Guidancenrca.net
  2. NOAA Storm Events Databasencdc.noaa.gov
  3. NOAA Storm Prediction Center — Storm Reportsspc.noaa.gov
  4. National Weather Service — Local Storm Reportsweather.gov
  5. Insurance Institute for Business & Home Safety (IBHS) — Hail and Roofing Researchibhs.org
  6. U.S. Census Bureau — American Community Survey (data.census.gov)census.gov
  7. ACS Table B25034 — Year Structure Builtcensus.gov
  8. ACS Table B25003 — Tenure (Owner vs. Renter Occupied)census.gov
  9. International Residential Code (IRC) — Roof Covering Requirementsiccsafe.org
  10. OSHA — Fall Protection in Residential Constructionosha.gov
  11. Texas Department of Insurance — Roof Damage and Claims Guidancetdi.texas.gov
  12. Federal Trade Commission — Hiring a Contractor and Advertising Rulesconsumer.ftc.gov
  13. U.S. Bureau of Labor Statistics — Roofers Occupational Outlookbls.gov
  14. RoofPredictroofpredict.com

Related Articles