How to Prioritize Roofs by Age and Storm Exposure
On this page
Every roofing owner has the same finite resource and the same impossible math. You have a territory with tens of thousands of roofs in it. You have a handful of canvassers, a mail budget, and a sales team whose time costs you whether they book a job or not. And you have no clean way to tell, from the curb or the office, which of those roofs is a real job and which is a six-year-old shingle that will waste an hour of someone's day and train a homeowner to slam the door on the next roofer who knocks.
Most shops resolve that math by not resolving it. They knock the street nearest the office. They mail the ZIP that converted last year. They send the new hire to "go work the neighborhood" with no idea which neighborhood, or why. The result is predictable: high gas, high payroll, high churn, low yield, and a slow erosion of the company's reputation in exactly the streets they most need to own.
There is a better way to spend that finite time, and it comes down to two variables you can actually estimate before anyone turns a key: how old the roof is, and how hard the weather has worked it. Get those two right, in that order, and the impossible list collapses into a ranked one. The roofs where an aging covering and real storm exposure overlap rise to the top. The new roofs and the untouched roofs fall off. Your crew spends its daylight on doors that convert, and your mail lands on homeowners who actually need you.
What follows is the full system: how to define and estimate roof age as a defensible range, how to read storm exposure without fooling yourself, how to combine them into a single priority score that drives a route or a mail drop, worked examples with real numbers, the edge cases that quietly wreck the math, and an honest look at where data tooling — including ours — does the heavy lifting and where it stops. It's long because the topic earns it. By the end you'll have a repeatable operating procedure you can run by hand on a clipboard or scale across a whole metro.
Why "work the whole area" is the most expensive habit in roofing
Start with the cost, because once you run the unit economics the rest of the system stops being a philosophy and becomes obvious.
Take a canvasser. Whatever you actually pay them — base plus commission — is only part of the number. Add the truck, the fuel, the phone, the CRM seat, and the slice of a manager's day spent dispatching and following up. Whatever that fully loaded cost per canvasser-day comes to, divide it by the number of quality conversations that day produces. Not bare knocks — real conversations with a homeowner who has a roof worth talking about.
Now look at what selection does to that denominator. Put a rep on a street of six-to-nine-year-old architectural shingles and they will knock all day to find one homeowner with a roof worth inspecting. Put the same rep on a street of nineteen-to-twenty-three-year-old three-tab under a corridor that took a wind event two springs ago, and the ratio flips hard. Same rep, same hours, same fully loaded cost. The only thing that changed is where — and the cost per booked job didn't get a little better, it got multiples better, because the fixed cost of putting a human on the pavement is identical either way and only the yield moves.
That is the whole argument. Selection is the single biggest lever on your cost per job, and it is free. It is a decision about where, made before the truck leaves the lot.
There are three costs to ignoring it, and they compound:
- Burned payroll and gas. Every hour on a new-roof street is an hour you paid full price for and got nothing back. Across a season that's tens of thousands of dollars of canvasser and fuel cost spent on roofs that were never going to be jobs.
- Crew churn. A green canvasser who knocks forty new-roof doors and books nothing quits. A canvasser who knocks twenty-five genuinely worn doors and books four inspections stays, makes money, and gets better. Roofing already fights brutal turnover — construction-trade churn runs well above the all-industry average in the federal labor data — and bad routing manufactures more of it. The rep who is sent to the right doors closes, earns, and sticks around.
- Reputation burn. Every door you knock or letter you mail to a homeowner with a four-year-old roof is a person you've taught that roofers are random and pushy. Multiply that across a subdivision and you've salted the ground for your own follow-up, and for the legitimate job that street will actually have in eight years.
There's a fourth cost nobody tallies: opportunity cost. The hour your best rep spends on a new roof is an hour they didn't spend on the worn roof two streets over that a competitor is about to sign. The inventory of genuinely due roofs in any area is finite at any moment, and in a storm market it's shrinking by the hour as out-of-town trucks roll in. Working the wrong street isn't just a wasted low-yield hour; it's a forfeited high-yield one. That's the real price of "go work the area" with no list behind it.
The fix is not to knock harder or mail wider. It's to rank the roofs first, and the ranking runs on age and storm exposure.
The two variables that actually predict a job
Most bad targeting comes from sloppy definitions of exactly these two inputs. Define them cleanly and the model almost builds itself.
Roof age: a range, not a birthday
Here is the trap that sinks most age-based targeting. Someone pulls up Zillow or the county assessor, reads "Year Built: 1999," and treats that as roof age. It is not. It is the age of the house. A 1999 house may be on its second or third roof. Re-roofs are invisible to the assessor in most jurisdictions — they rarely change the record — and re-roofed homes are exactly the ones you need to identify correctly, in both directions: the 1999 house re-roofed in 2016 is not a job, and the 1999 house still on its original covering very much is.
What you actually want is an estimate of when the current roof covering went on. And the honest version of that number is a range, not a date. Historical aerial imagery, granule loss visible from above, the generation of shingle product, the condition of flashing and boots, and permit records where they exist and are reliable can together bracket a roof into something like "sixteen to twenty-two years old" with genuine confidence. Anyone selling you a single exact install date off imagery alone is overselling, and you should distrust the rest of their pitch accordingly.
Why the range is still powerful: asphalt shingle service life is well understood. Three-tab shingles typically carry a twenty-to-twenty-five-year rated life and frequently underperform it in hot, high-UV, or hail-prone climates. Architectural and laminate shingles run longer — commonly twenty-five to thirty years rated. But the rated number matters less than the functional vulnerability curve. A shingle in the back half of its service life has shed granules, the asphalt has oxidized and gone brittle, the mat fractures more easily, seals let go, and the roof starts failing at flashings and penetrations. A roof in that band is a candidate for replacement on age alone, and it's far more likely to take visible, documentable damage from any weather that hits it.
That second clause is the bridge to the other variable, and it's the reason age and exposure belong together rather than apart.
Storm exposure: what the weather actually did to this roof
"Did it storm in this area" is the wrong question. The questions that matter:
- Did damaging weather actually reach this specific roof? A hail report at the county airport tells you almost nothing about a roof four miles away. Hail cores are small and erratic; one side of a subdivision can take golf-ball ice while the other side gets nothing worth a ladder. Straight-line wind and downbursts are similarly patchy.
- How severe, and from what direction? Damage potential climbs steeply with hail size — sub-one-inch hail rarely functionally damages asphalt shingles in good condition, while 1.25-inch and up starts bruising mats and fracturing granule beds, and 1.75-inch and above does it reliably. Wind concentrates on the windward and exposed slopes and on the field of older, already-loosened shingles. Direction and exposure decide which roofs and which slopes show it.
- How worn was the roof when the weather hit? This is the part flat hail maps miss entirely. The same hailstone bounces off a four-year-old roof and cracks a twenty-year-old one. The same gust that does nothing to a sealed new roof peels tabs off a brittle, sun-baked one. Exposure isn't just about the storm; it's about the storm meeting a roof old enough to lose to it.
That last point is why this is one variable's worth of meaning split across two inputs. Age sets how much a given weather event will damage the roof. Exposure sets whether any damaging weather happened at all. You need both, and you need to multiply them, not add them — more on that shortly.
One honest note that keeps you clean from the start: a storm record, a hail map, or a wind estimate tells you damage is likely and the roof is worth inspecting. It is never proof that a specific roof is damaged. Only an actual inspection establishes that. Hold that line through the whole system and you'll never misrepresent data as evidence — to a homeowner, an adjuster, or yourself.
The prioritization model: scoring a roof before you touch it
Here is the system. It's deliberately simple enough to run on a clipboard and it scales cleanly when software does the work. For every address you're estimating two scores and multiplying them.
Step 1: Roof-age / vulnerability score (0-5)
Use the midpoint of your estimated age range, then adjust for shingle type and climate.
| Score | Condition |
|---|---|
| 0 | Clearly new (0-5 yr): crisp granules, current-generation product, recent re-roof signal |
| 1 | 6-10 yr, minimal weathering |
| 2 | 11-14 yr, moderate weathering |
| 3 | 15-18 yr, visible granule loss, entering the back half of service life |
| 4 | 19-23 yr, heavy weathering and brittleness, or three-tab past ~18 yr |
| 5 | 24+ yr, or any roof visibly at end of life regardless of nominal age |
Step 2: Storm-exposure score (0-5)
| Score | Condition |
|---|---|
| 0 | No credible storm signal; outside any reported swath, no radar/wind estimate of meaningful severity |
| 1 | Edge of an event; sub-1-inch hail or marginal wind |
| 2 | In a recent event; ~1-1.25 in hail or moderate wind |
| 3 | In a solid event; ~1.25-1.5 in hail or strong, directional wind |
| 4 | Near the core; ~1.5-1.75 in hail or a damaging wind/downburst component |
| 5 | Direct core; ~1.75 in and up, or severe wind, with corroborating reports/radar |
Step 3: Priority = Age x Exposure
Multiply the two. The product runs 0 to 25, and that single number is your knock-and-mail order.
- 20-25 — Knock first. Old roof, real weather. The heart of your list.
- 12-19 — Strong second wave. Worth a same-week inspection or a priority mail drop.
- 6-11 — Opportunistic. Knock if you're already on the street or a neighbor refers you.
- 1-5 — Deprioritize. Too new to matter much, or too lightly touched.
- 0 — Skip (for storm-claim work). One factor is effectively zero, so the product is zero. A pristine new roof in the dead center of a hail core still scores low because new roofs shrug off most weather. A worn-out roof with no storm over it scores zero on exposure — and that's a retail lead, not a storm lead, which is a distinction we'll come back to because it matters legally as well as operationally.
The multiply-don't-add choice is the load-bearing part of the whole model. If you added the scores, a brand-new roof in the dead center of a hail core would still rack up a 5 and pull crews toward a low-yield inspection. Multiplying forces both conditions to be true at once: there has to be damaging weather and a roof old enough to show it. That product is the real-world condition for a roof that is both worth your time and, when there's a storm behind it, defensible to document.
A note on running two lists, not one
Here's a refinement that keeps a lot of shops out of trouble. The Age x Exposure product is the right ranking when there's a recent storm in play. But age alone — the vulnerability score by itself — drives a completely legitimate, completely separate retail replacement list: old roofs that need replacing on their own merits, storm or no storm. A twenty-six-year-old roof with no weather over it is a real job; it's just a different conversation (age, condition, end of life) than a storm-damage inspection (a specific event, documented damage, the homeowner's insurer).
Keep those two lists separate. Run the multiplied score for storm response, and run the age score on its own for off-season retail and steady-state canvassing. Mixing them is how shops end up coaching a homeowner toward a claim for a storm that didn't reach their roof — which wastes a morning and, as we'll cover, is a line you genuinely do not want to cross. Two lists, one underlying age estimate, cleanly separated by whether a real, attributable event sits behind the address.
Optional modifiers when you have the data
The base Age x Exposure score runs a great operation. If you track more, three modifiers sharpen it without breaking the simplicity:
- Slope and direction weighting. If you know a storm cell's track or the prevailing wind, bump addresses whose exposed slopes faced the weather. Wind-driven hail and straight-line wind concentrate impacts on the windward faces; a roof "in the core" whose damageable slopes faced away may under-document.
- Prior-event history. If an address took a documented event two years ago, flag it — not to skip it (a roof can be hit twice) but so the inspector separates fresh, attributable damage from old scarring on the ladder. Attribution is everything when there's a claim behind the inspection.
- Shingle-type tag. Already folded into the age score, but worth surfacing on the route sheet: tag three-tab roofs so the crew knows they're more brittle and likelier to show damage than a same-age laminate, and to document accordingly.
Resist adding more than these. A score a crew can't compute or trust in the field is a score they'll ignore by 7 a.m. The entire value of the model is that it's simple enough to actually change behavior.
A worked example: ranking a real subdivision
Let's run concrete numbers. A wind-and-hail event last spring clipped the north third of the Maple Ridge subdivision. You're building this week's canvassing route and next month's mail drop. Here are ten representative addresses (anonymized, but this is the exact shape of a real list).
| Address | Roof age range | Age score | Storm signal | Exp. score | Priority |
|---|---|---|---|---|---|
| 408 Birch | 21-25 yr 3-tab | 5 | Core, 1.75 in hail | 5 | 25 |
| 412 Birch | 19-23 yr 3-tab | 4 | Core, 1.75 in hail | 5 | 20 |
| 1140 Maple | 16-20 yr laminate | 3 | Core, 1.5 in + wind | 4 | 12 |
| 1155 Maple | 4-7 yr laminate | 1 | Core, 1.5 in | 4 | 4 |
| 220 Elm | 17-21 yr 3-tab | 4 | Solid, strong wind | 3 | 12 |
| 305 Cedar | 22-26 yr 3-tab | 5 | Edge, ~1 in | 2 | 10 |
| 320 Cedar | 18-22 yr laminate | 4 | Edge, sub-1 in | 1 | 4 |
| 77 Oak | 14-17 yr laminate | 3 | Outside swath | 0 | 0 |
| 92 Oak | 26+ yr 3-tab | 5 | Outside swath | 0 | 0 |
| 60 Pine | 5-8 yr laminate | 1 | Outside swath | 0 | 0 |
Read the right column and the week plans itself.
Storm route, first: 408 Birch (25) and 412 Birch (20). Old roofs, dead in the core. Highest-probability, most-defensible inspections. Start the truck here.
Storm route, second wave: 1140 Maple (12) and 220 Elm (12). One laminate in the core, mid-life, slightly tougher shingle; one older three-tab that caught strong wind. Both worth the ladder this week.
Opportunistic: 305 Cedar (10). Old roof but only edge hail; the age makes it worth a look if you're already on the street or a Birch neighbor refers you. Don't drive across the subdivision for it.
Deprioritize for storm work: 1155 Maple and 320 Cedar (both 4). One's too new, one's barely touched. Not this week.
Now look at the zeros — this is the important part. 92 Oak is a twenty-six-plus-year three-tab. A pure age-targeting tool would scream about it. But it scored 0 on storm exposure because it sits outside the swath. There is no fresh, attributable event to document. It is not a storm-claim inspection. What it is is a prime retail re-roof lead — and it belongs on your separate age-only list, where you'll knock or mail it with an honest end-of-life conversation, no storm involved. 77 Oak (mid-life, no storm) is a weaker retail lead you'd mail in a year or two. 60 Pine (new, no storm) drops off both lists entirely.
That single table is the whole system working: the multiplication sorts your storm response, the age score alone seeds your retail pipeline, and the zeros keep you from carrying a no-event roof into a storm-claim conversation it has no business being in.
How to estimate roof age without fooling yourself
You can't score age without estimating it, so here's the practitioner version of bracketing a roof into a range you'd defend.
Desk signals (before anyone leaves the office)
- Historical aerial imagery. The single most useful desk signal is change over time. If imagery from 2010 shows a streaked, discolored roof and 2013 shows a clean, uniform one, you've bracketed the re-roof to a roughly three-year window without leaving your chair. Many imagery archives carry multiple historical captures; streaking, color uniformity, and granule sheen read surprisingly well from above. This is also how you catch the re-roofs the assessor can't see.
- Shingle generation. The type of shingle narrows the era. Heavy three-tab presence suggests an older or budget install; certain laminate profiles and ridge treatments map loosely to product generations. Approximate, but it moves the range.
- Permit records. Where a jurisdiction reliably permits and digitizes re-roofs, a roofing permit is the closest thing to a birth certificate the covering will ever get. The catch: enforcement and digitization are wildly inconsistent. Plenty of re-roofs are never permitted, and plenty of permits never reach a searchable database. Use it when it's there; never read its absence as meaning the roof is original.
- Assessor / "year built." Useful only as a ceiling check — the roof can't predate the house — and as a tiebreaker on homes that appear to be on their original covering. Never as the roof's age. This is the single most common and most expensive mistake in targeting. Do not make it.
Ground and ladder signals (to confirm and tighten)
- Granule loss and mat exposure. The clearest age tell. Heavy granule accumulation in the gutters and bald mat patches push the estimate older.
- Brittleness and curling. Oxidized, brittle, curling, cupping shingles read late-life. A shingle that cracks when you lift it is telling you its age regardless of any record.
- Flashing, boots, and sealant. Cracked pipe boots, failed sealant, and corroded flashing age with the roof and corroborate the covering's vintage.
- Layer count. One layer versus evidence of a layover changes both the age math and the eventual scope.
The output of all this is a range — "eighteen to twenty-two years" — and that's correct, not a weakness. A range is honest, and a midpoint is plenty precise to drive a 0-5 score. Anyone promising a single exact install date from a desk is selling certainty the data doesn't support.
Shingle type and climate move the range
Two roofs of identical calendar age can sit in very different places on the vulnerability curve, and a good estimator adjusts rather than treating age as a flat number.
Shingle type. Three-tab generally carries a shorter rated life and oxidizes to brittleness faster than laminate. A fifteen-year-old three-tab is functionally older than a fifteen-year-old laminate. If you can read the profile from imagery or the ground, let it pull the score up or down half a step.
Climate and orientation. Heat and UV are the real killers of asphalt shingle. A south- or west-facing slope in a hot, high-sun climate ages measurably faster than a north slope in a mild one. Roofs in high-temperature-swing, hail-prone regions tend to underperform their rated life. If you operate in such a market, your age scores should skew older than the nominal number, and your own outcome log (covered below) will tell you by how much.
Ventilation and prior repair. Poor attic ventilation cooks shingles from below and shortens life; a roof with a patchwork repair history is often one that's been limping for years. Both push the estimate older. None of these are precise, but together they keep your range honest and your score calibrated to how roofs actually fail in your area.
How to read storm exposure without overreaching
The exposure score is only as good as your read of the weather data, and that data is easier to misread than people assume. Here's how the sources behave and how to combine them.
Point reports. NOAA's Storm Prediction Center storm reports and the NCEI Storm Events Database log individual observations — a trained spotter, a public report, a news crew — at a specific location and time with an estimated hail size or wind speed. They're authoritative in that something really was observed there. They are not a map. A two-inch report at one intersection means a damaging core passed near there; it says nothing about the size three blocks away, and nothing at all about the streets where no one was standing with a ruler. Point reports are anchors, not coverage.
Radar-derived estimates. Dual-polarization radar products estimate hail size across a continuous grid — most commonly MESH (Maximum Estimated Size of Hail), which models the largest stone the storm was likely producing in each grid cell. This fills the space between point reports and gives you a swath shape. But "estimated" is doing real work: radar infers hail aloft, not what reached the ground, and the estimate carries genuine error bars. A cell flagged at 1.75 inches might have dropped 1.75, or 1.25, or melted some on the way down. Use the grid for shape and relative intensity; confirm magnitude on the roof.
Wind data. Straight-line wind, downbursts, and gust fronts damage roofs as surely as hail, and they're even patchier. NWS reports, radar velocity products, and local mesonet observations bracket where damaging wind likely occurred, but ground confirmation — lifted tabs, creased shingles, debris patterns — is what makes it real.
Combining them. The reliable workflow is layered:
- Draw the swath from the radar grid to get the shape of where damaging weather likely fell.
- Anchor and sanity-check that shape against the point reports — if the grid says core but nearby spotters reported nothing, distrust the grid there.
- Confirm magnitude per roof at inspection, weighting on-roof evidence above any remote estimate.
No remote source is ground truth for a specific roof. The denting on a homeowner's gutters and downspouts, the bruising in your test square, the spatter on the AC fins, the creased tabs on the windward slope — those are the real evidence. The data's job is to tell you which roofs are worth climbing, in what order. The ladder's job is to tell you what's true. Keep those two jobs separate and you'll neither skip a hit roof nor oversell a missed one.
On modeling the storm per roof. Where remote data gets genuinely more useful is when it stops treating a neighborhood as one uniform blob and accounts for how hail and wind interacted with each individual roof — the cell's track, the wind component, which slopes faced the impacts, and how worn the covering already was. A flat "it hailed in this ZIP" read sends you to every door. A per-roof model of the storm narrows it to the doors where damaging impacts most plausibly landed on a roof old enough to lose to them. That's the difference between a hail map and a prioritization input, and it's worth understanding even if you're scoring by hand: the more your exposure input reflects this roof rather than this area, the more your route reflects reality.
Where this gets legally and ethically sensitive — read this part
Using age and storm exposure to prioritize where you knock, mail, and inspect is squarely legitimate. You're deciding where to spend your own crew's time and your own mail budget. That's just operations.
Where contractors get into trouble is sliding from "prioritize" into "manufacture." A few hard lines, because they protect your license and your business:
- A storm record or hail map is not proof of damage. Radar said 1.75-inch hail fell here; that's a strong reason to inspect. It is not evidence that this roof is damaged. Only an actual inspection documents actual damage. Never present storm data as proof of damage to a homeowner or an adjuster — let the inspection findings, with photos and dated correlation, carry the weight.
- You document conditions; the carrier decides coverage; the homeowner owns the claim. On a storm inspection your job is to find and document the roof's condition and hand the homeowner clear evidence. You are not the one who approves the claim, adjusts it, or negotiates it. In many states, a roofer acting as the homeowner's claims advocate runs straight into unlicensed-public-adjuster law — and recent enforcement and case activity in states like Texas has underscored that even labeling yourself an insurance or claims specialist can cross that line. Document, inform, and let the homeowner and their carrier handle the claim. Check your own state's department of insurance rules; they vary.
- Say nothing about the homeowner's deductible. Offering to waive, absorb, cover, or rebate a deductible is insurance fraud in many states. It is not a sales tactic; keep it out of your scripts entirely.
- No promises about approval or "free roofs." You can't promise a claim will be approved, and you shouldn't imply the roof will be free. You can promise a thorough, documented inspection. That's the honest pitch, and it's a strong one.
None of this is legal advice, and any storm-claim language your crew uses should get a once-over from counsel familiar with your state. But the operating principle is simple and keeps you clean: age and storm data tell you where to knock; the inspection tells you what's true; the carrier decides what's covered. Stay in that lane and the whole system is defensible.
This is also exactly why the two-list discipline matters. The age-only retail list is an honest end-of-life conversation that never touches a carrier. The storm list is a documented-event conversation. Keeping them separate isn't just tidy operations — it's what keeps you from accidentally turning a no-event old roof into an improper claim.
Turning scores into a route your crew will actually work
A priority list isn't a route. Turning scores into an efficient day takes a couple more moves.
Cluster by score, then by geography
Don't send a crew zig-zagging across town hitting the single highest score, then the next, then doubling back. Instead:
- Pull every address scoring 12+ (your knock-worthy set).
- Cluster those geographically into tight pockets — a few streets workable on foot.
- Rank the clusters by their density of high scorers.
- Send the crew to the densest high-score cluster first and let them work it block by block.
Density beats raw score for route efficiency. A street with six 16-scores beats a lone 25 three miles away, because the crew converts more conversations per hour of daylight. You're optimizing jobs-per-day, not the single best roof.
Seed the cluster with your warmest signal
If a homeowner from a high-score cluster already called in, or sits in your old customer book, start the crew there. A booked appointment anchors the cluster, gives the canvasser a real reason to be on the street ("I'm here looking at your neighbor's roof at 408"), and tends to cascade. Social proof on a street is real and fast.
Set a same-day re-route rule
Give the crew lead a simple rule: if a cluster converts below some threshold — say, fewer than one inspection per ten quality conversations — after the first hour, bail to the next cluster. Areas are heterogeneous; sometimes the radar oversold a pocket, or the homes turn out newer than imagery suggested. Don't let a crew grind a dead cluster out of stubbornness. The score is a hypothesis; the doors are the test.
Log outcomes back against the score
This is the step almost nobody does, and it's the one that compounds. For every inspection, record the score you assigned and what you found. Over a few months you'll learn how your local weather and your local housing stock actually behave — maybe your 1.25-inch hail threshold should be 1.1 because your region's older three-tab is unusually brittle, or maybe your imagery vendor's captures run stale enough that you should lean more on ground signals.
Keep the log simple enough that a tired crew lead will actually fill it out: address, assigned score, age confirmed (range), storm confirmed (Y/N and severity), result, booked (Y/N). Six columns. After a few months you'll have a few hundred rows, and the patterns jump out — which score bands convert, where your inputs run hot or cold, which subdivisions consistently over- or under-perform their nominal age. That dataset is a quiet competitive advantage no lead vendor can sell you, because it's specific to your market and your crews.
Prioritizing mail and your old customer book, beyond doors
The same Age x Exposure score that ranks a knock route should rank a mail drop, and the economics there are even less forgiving of bad targeting because every piece costs printing and postage whether it lands on a new roof or an old one.
Mail the age list, weighted by exposure. The twenty-plus-year roofs in a recent storm corridor get the priority mailing with a specific, honest hook. The age-only retail roofs get a steadier, end-of-life message on a longer cadence. The new roofs never get a stamp. Run that and your cost per response drops for the same reason your cost per booked inspection drops on the knock route: you stopped paying to reach roofs that were never going to be jobs.
Two refinements that pay off:
- Sequence mail and knocks together. A priority address that gets a letter and then a knock a week later converts better than either alone. Score once, drive both channels off the same ranked list.
- Mine your own book first. Your old estimates and past customers are addresses you already paid to acquire, and their roofs have aged since you last touched them. Run the age score across your CRM and you'll surface customers whose roofs have quietly crossed into the replacement band — money already in your book that a competitor is about to knock. This is the cheapest list you own, and almost nobody works it systematically.
Putting the right list in a green canvasser's hand
A prioritized route does something a generic map never can: it makes a new hire sound like a veteran on the first knock. That matters more than most owners admit, because the door conversation is where the system converts or dies.
Picture a new rep with no list. They knock a random door, the homeowner asks "why my house?", and the rep has nothing better than "we're working the area." That reads as exactly what it is — a sweep — and trips the homeowner's salesperson defenses. Conversion craters, the rep gets demoralized, and three weeks later they quit. Bad routing manufactures low conversion and high churn at the same time.
Now give that same rep a per-roof reason to be at the door:
- They know, before they knock, that this roof is in their old-roof, real-exposure priority band.
- They can lead with something specific and true: "I'm looking at your neighbor's roof at 408, and that storm last spring tracked right over this block — roofs around this age are the ones it tends to wear out." Specificity disarms.
- If you hand the homeowner a plain-language, branded summary — the estimated age range and the storm history for their address — the rep walks in informed instead of empty-handed, and the homeowner gets something real to look at.
The difference in the field is stark. A rep with a reason books inspections; a rep without one talks themselves out of the next door. And the rep who books makes money and stays — which is how good routing quietly fixes the churn problem the industry can't beat. The list is a routing tool, a training tool, and a retention tool at once.
Two guardrails on that conversation, straight from the legal section: the homeowner-facing summary documents age range and storm history — it is not a damage verdict and not a claim. And the rep never talks about the homeowner's deductible or promises an approval. The honest pitch — "your roof is at an age where weather like last spring's matters, let me get up there and document exactly what's going on" — is clean, strong, and true, which is why it converts.
Doing this at scale: where the data and tools fit
Everything above is runnable by hand for one subdivision. The problem is that your territory isn't one subdivision — it's tens of thousands of roofs, and a real storm smears a swath across dozens of them with a short window to work it. Hand-scoring 30,000 roofs for age and exposure before competitors knock is not a clipboard job.
This is where data tooling earns its keep, and it's worth being precise about which tool does which job, because they're easy to confuse:
- NOAA SPC / NCEI Storm Events / radar-hail products give you the weather layer — where damaging hail and wind fell and roughly how severe. Authoritative, free, and essential. But it's weather data, not roof data. It doesn't know which roofs are old.
- Measurement tools (EagleView, Hover, Roofr and similar) give you precise roof geometry and material takeoffs for accurate estimating. Indispensable for scoping the job — but they measure the roof; they don't tell you which roof to knock or how old the covering is. A different category: "measure this house" versus "which house."
- The assessor / Zillow gives you house age, which, as covered at length, is not roof age, and is blind to re-roofs.
What's been missing is the layer that does the multiplication for you across an entire area: a per-address estimate of roof age as a range fused with storm exposure modeled on that specific roof, so the priority score gets computed for every door before your crew leaves the lot.
That's the layer RoofPredict is built to be. It takes aerial imagery plus weather data per home and returns, address by address, a roof-age range (not a fake exact date), the storm history for that location, and a risk score — which is exactly the Age x Exposure product this whole system is built around, computed at scale. The distinction we lean on hardest: a hail map shows you where it hailed; we model the storm on each roof, rather than only where the cell passed — hail trajectory and wind scored house by house, paired with the roof's estimated age and condition. That pairing is the entire point of prioritization, and it's the part the public weather products and the measurement tools each leave half-done.
In practice that turns the impossible list into a ranked one: the streets and addresses where an aging roof and real storm exposure overlap, sorted, so your crew works the highest-probability doors first and your mail lands on the homeowners who actually need you — and skips the new ones. It runs the storm response and seeds the off-season retail list off the same per-roof data, with the age score doing double duty.
Honest limits, because overselling this would be its own kind of dishonesty:
- Roof age is a range, never an exact install date. Anyone claiming otherwise from imagery is bluffing. The range is what you can trust, and it's enough to drive the score.
- A storm model is odds, not proof. It tells you where damage is likely and worth inspecting. It is never proof that a given roof is damaged — only the inspection establishes that. Don't represent the model as evidence to a homeowner or an adjuster.
- It ranks doors; it doesn't climb ladders. The inspection, the documentation, and the homeowner conversation are still yours. The data decides where; your crew decides what's true; the carrier decides what's covered. RoofPredict is not a lead-buying service and doesn't touch the claim — it sharpens the targeting you already do so your crew spends its daylight on the right roofs instead of renting the same homeowner five competitors already bought.
Used that way — as the prioritization engine in front of a disciplined knock-and-mail process — age-and-exposure data stops being a vague intuition and becomes a routable, defensible system you own.
What pros get wrong (the edge cases that wreck the math)
The model is sound, but a handful of edge cases quietly poison real execution. The ones that bite hardest:
Confusing house age with roof age. Said it twice; worth a third time because it's the number-one error. The 1999 build with a 2016 re-roof scores low on age, and a tool that reads the assessor sends you there anyway. Re-roofs are invisible to assessors. Estimate the covering, not the structure — historical imagery is how you catch it.
Treating an airport storm report as roof-level truth. A single point report four miles away is not your roof's hail size or wind speed. The gradient is steep. Use point reports plus radar-grid estimates plus on-roof confirmation, and weight the on-roof finding heaviest.
Ignoring shingle type in the age score. A fifteen-year-old premium laminate and a fifteen-year-old budget three-tab are not equally vulnerable. The three-tab is closer to end of life and far more brittle. Adjust for product, not calendar age alone.
Forgetting direction and exposure. Wind-driven hail and straight-line wind concentrate on the windward and exposed slopes. A roof can be "in the core" and show little on its leeward faces. Note the storm-cell movement and check the exposed slopes first, or you'll under-document a genuinely damaged roof.
Carrying the off-swath old roof into a storm conversation. The twenty-six-year roof with no storm over it is a retail lead, not a storm-claim inspection. It belongs on your age-only list with an honest end-of-life pitch — not your post-storm route, and never in a claim conversation. Mixing them muddies your data and risks coaching a homeowner toward an event that didn't happen.
Letting old damage masquerade as new. A roof can carry scarring from a storm two years ago. Knowing the address's prior storm history lets your inspector distinguish fresh, attributable impacts from old ones — which matters enormously for whether documentation holds up.
Working stale imagery. If your aerial captures are three years old, a recent re-roof won't show and you'll mis-score age. Know how fresh your imagery is and lean harder on ground signals when it's stale.
Scoring once and never recalibrating. A roof you scored a 3 two years ago is a 4 today, and the storm that just passed changed every exposure score in its swath. Age and exposure both move. Re-score on a cadence, and feed your outcome log back into your thresholds, or the model slowly drifts away from reality.
Routing by feel instead of by score. The most expensive edge case is human. Adrenaline and habit say "just go work the area." A crew that knocks by instinct reverts to proximity and vibes within an hour. The score has to be in the crew's hands, on the route sheet, or it doesn't change behavior.
A repeatable operating procedure
Put it together and here's the sequence to run, whether by hand or with software computing the scores:
- Define the area and the events. Pull your target territory and overlay recent storm swaths from radar products and SPC/NCEI reports. Draw the realistic cores, not the whole county.
- Estimate age for every address. Bracket each roof into a range from historical imagery, shingle generation, permits where reliable, and a ceiling-check against year built. Adjust for shingle type and climate. Convert to a 0-5 score.
- Estimate exposure for every address. Score 0-5 from the layered weather read — radar shape, point-report anchors, wind data — confirmed against your local knowledge.
- Compute Age x Exposure for the storm list, and keep the age score alone for the retail list. Two lists, one age estimate.
- Filter the storm list to 12+. Everything below 12 drops off this week's storm route.
- Cluster geographically. Group 12+ addresses into tight walkable pockets; rank clusters by high-score density.
- Seed and dispatch. Start the crew at the densest cluster, anchored on any warm inbound call or old customer in it.
- Set the re-route rule. Below one inspection per ten quality conversations in the first hour, move to the next cluster.
- Sequence mail off the same ranked list, priority storm addresses first, retail age list on a longer cadence, new roofs never.
- Mine your CRM on the age score to surface old customers whose roofs have crossed into the replacement band.
- Document every inspection — dated, storm-correlated where applicable, claim-supporting but never a claim you handle.
- Log score vs. outcome and re-score on a cadence so next month's ranking is sharper and stays current as roofs age and new storms land.
Run that loop and two things happen. Your jobs-per-day climbs because you stop spending daylight and postage on new roofs and missed pockets. And your documentation quality climbs because every inspection on the route is one where an aging roof and real weather actually overlap — exactly the roof where the truth is on your side.
The area doesn't decide who owns the next job. The roofer with the better list does. Build the list on roof age and storm exposure, in that disciplined Age x Exposure way, keep your retail and storm lists clean, and you'll be on the right ladders and in the right mailboxes while everyone else is still working the whole street by feel.
If you'd rather not hand-score thirty thousand roofs — the age range plus the storm modeled on each roof, sorted by priority — that ranked, per-roof list is the thing RoofPredict hands you. Book a demo and bring a street you already know; you decide whether we called it right.
FAQ
Why prioritize by roof age and storm exposure together instead of just one?
Because each one alone misleads you. Storm exposure tells you where damaging weather fell but not whether the roof was old enough to be hurt by it — a four-year-old roof shrugs off hail that cracks a twenty-year-old one. Roof age tells you which roofs are vulnerable but not whether any weather actually hit them. The roof worth your crew's time is one where both are true: an aging covering and real exposure. Multiplying the two scores (Age x Exposure) forces both conditions and gives you a clean knock-and-mail order, while the age score on its own still drives a separate retail replacement list.
How do I score age and exposure if I'm doing this by hand?
Give each address a 0-5 roof-age score (0 = clearly new, 5 = 24-plus years or visibly end of life) using the midpoint of your estimated age range, adjusted for shingle type and climate. Give it a 0-5 storm-exposure score (0 = no credible storm signal, 5 = direct core with corroborating reports). Multiply the two for a 0-25 priority. Knock and mail the 20-25s first, the 12-19s second, treat 6-11 as opportunistic, and drop the rest from your storm route. It runs on a clipboard and scales to software unchanged.
Isn't the year built on Zillow or the county assessor good enough for roof age?
No, and it's the most common and most expensive mistake in targeting. Year built is the age of the house, not the roof. Re-roofs are invisible to most assessors, so a 1999 house with a 2016 re-roof reads as ancient on paper while carrying an eight-year-old covering, and a 1999 house still on its original roof reads the same while being a real job. Use year built only as a ceiling check (the roof can't predate the house). Estimate the actual covering from historical imagery and condition signals instead.
How accurate is a roof age estimate from aerial imagery?
Accurate enough to drive prioritization, as long as it's expressed as a range rather than an exact date. Historical imagery — spotting the capture where a streaked roof became a clean one — plus shingle generation, condition signals, and permit records where reliable can bracket a roof to something like '18 to 22 years' with real confidence. Anyone claiming a single exact install date from imagery alone is overselling. The honest, useful output is a range, and a range is plenty precise to score vulnerability.
Where do I get storm exposure data for specific addresses?
Start with NOAA's Storm Prediction Center storm reports and the NCEI Storm Events Database for authoritative point observations of hail and wind, then layer in radar-derived hail-size estimates (MESH-based products) to fill the gaps between reports and get the swath shape. Remember that point reports are tied to specific spotter locations and times, not a continuous map, and radar estimates hail aloft with real error bars. Treat any single source as a hypothesis to confirm on the roof, never a final verdict on a given address.
Should I knock an old roof that has no recent storm over it?
Yes — but as a retail replacement lead, not a storm-claim inspection. An aging roof with no storm exposure scores zero on the multiplied storm priority, but it's a legitimate job on its own merits and belongs on a separate age-only list with an honest end-of-life conversation. Keep that list separate from your post-storm route so you never carry a no-event roof into a storm-damage or claim conversation it has no business being in. Two lists, one underlying age estimate, cleanly separated by whether a real event sits behind the address.
Can I use a hail map or storm report as proof of damage?
No. A hail map, radar estimate, or storm report is a strong reason to inspect a roof — it tells you damage is likely. It is never proof that a specific roof is damaged. Only an actual inspection documents actual damage. Representing storm data as proof of damage to a homeowner or adjuster is a mistake and can cross legal lines. Let the inspection findings, with photos and dated storm correlation, carry the weight, and keep the data in its proper role of deciding where you climb.
How do I turn the priority scores into an efficient route?
Don't chase the single highest score across town. Pull every address scoring 12 or above, cluster them into tight walkable pockets, rank the clusters by how densely they hold high scorers, and send the crew to the densest cluster first. Density beats raw score for daily efficiency — a street with six mid-high scores converts more per hour than one lone top score three miles away. Seed the cluster with any warm inbound call or old customer, and set a re-route rule if a cluster converts poorly in the first hour.
What's the line between prioritizing inspections and improper claims involvement?
Using age and storm data to decide where to send your crew and your mail is straightforward operations. The line you don't cross is acting as the homeowner's claims advocate. You document the roof's condition and hand the homeowner clear evidence; the homeowner owns the claim and the carrier decides coverage. In many states a roofer handling, negotiating, or adjusting a claim runs into unlicensed-public-adjuster law, and saying anything about waiving or covering a deductible can be fraud. Document, inform, stay in your lane, and have counsel review any storm-claim language for your state.
How does RoofPredict fit alongside tools like EagleView and public hail data?
They solve different problems. Measurement tools like EagleView, Hover, and Roofr give you precise roof geometry for accurate estimating — they measure the roof but don't tell you which roof to knock or how old the covering is. Public weather data tells you where it hailed or where wind hit, but nothing about roof age. RoofPredict fills the gap by computing the Age x Exposure priority across an entire area: a per-address roof-age range fused with the storm modeled on each roof, sorted so your crew works the highest-probability doors first and your mail skips the new roofs. It ranks doors and seeds your retail list; your crew still does the inspection and documentation, and it never touches the claim.
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.
Sources
- Storm Prediction Center Storm Reports — spc.noaa.gov
- NCEI Storm Events Database — ncdc.noaa.gov
- National Weather Service: Thunderstorms, Lightning & Hail Safety — weather.gov
- NOAA NSSL: Severe Weather 101 — Hail — nssl.noaa.gov
- IBHS: Hail Research and Roofing Performance — ibhs.org
- NRCA: The National Roofing Contractors Association — nrca.net
- International Residential Code (ICC Digital Codes) — codes.iccsafe.org
- OSHA: Fall Protection in Construction — osha.gov
- BLS: Job Openings and Labor Turnover (JOLTS) — bls.gov
- U.S. Census Bureau: American Housing Survey — census.gov
- FTC: Advertising and Marketing Business Guidance — ftc.gov
- Texas Department of Insurance: Roof Damage and Claims Tips — tdi.texas.gov
- RoofPredict — roofpredict.com
Related Articles
Direct Mail ROI for Roofers: How to Make the Math Actually Work
Direct mail still prints money for roofing contractors who treat it like a measurable system instead of a gamble. Here is the cost math, the targeting, and the tracking that decide whether you profit or bleed.
Which Past Roofing Customers Need a New Roof Now: A Practical System for Mining Your Own Database
Your old jobs are a buy-list hiding in plain sight. Here is how to score past customers by install age, storm exposure, and warranty timing so your crew knocks the roofs that are actually due.
How to Revive Aged Roofing Leads That Never Closed
Your old estimate file is a season of jobs hiding in plain sight. Here is the practitioner's system for reopening leads that went cold, in the right order, with the right reason to call.