Skip to main content

How to Estimate Remaining Roof Life for Targeting (A Field Workflow)

Emily Crawford, Home Maintenance Editor··33 min readRoofing Lead Generation
On this page

Every roofing company has a finite number of doors it can knock and a finite mailing budget. The question that decides whether you grow or tread water is not "how many houses can we reach" — it's "which houses are worth reaching." And the cleanest way to answer that is to estimate how much usable life is left in each roof, then work the ones closest to the end first.

Roof age tells you part of the story. A 20-year-old roof is a better prospect than a 6-year-old one almost every time. But two roofs built the same week can be a decade apart in real condition — one faces south in Oklahoma and ate three hailstorms, the other sits shaded under oaks in Oregon and has never seen a damaging wind event. Age is the starting line. Remaining life is the finish line, and the finish line is what you actually want to sort your list by.

What follows is the full method practitioners use to estimate remaining roof life at the scale you need for targeting — not a single-roof inspection estimate, but a repeatable way to score hundreds or thousands of addresses, rank them, and point your crew and your mail at the roofs aging out first. You'll get the lifespan baselines by material and climate, the factors that add or subtract years, two scoring models you can build in a spreadsheet, worked examples, the edge cases that wreck a naive list, and an honest accounting of where this gets hard and where the estimate stops being trustworthy.

A note on language up front, because it matters for how you sell: remaining roof life is a range and a probability, never a date. You are never going to say "this roof dies on March 4th." You're going to say "this roof is in the last quarter of its life and the next bad storm is more likely than not to push it over." That distinction keeps you honest with homeowners, keeps you on the right side of the law, and — useful side effect — makes you sound like someone who actually knows roofs instead of a telemarketer reading a script.

Why remaining life beats raw age for targeting

Start with the economics, because that's what makes this worth the effort.

Say your crew can knock 60 quality doors a day and you mail 2,000 pieces a month. Those are hard caps. If you fill them with random addresses pulled from a ZIP code, your hit rate is whatever the natural distribution of bad roofs happens to be in that area — call it the roofs that are genuinely due plus the ones a storm just hit. In a stable suburban tract where most homes were roofed in the last decade, that natural rate is brutal. You'll burn a week of payroll to find a handful of real opportunities.

Now sort the same universe of addresses by estimated remaining life and work the bottom of the list — the roofs with the least life left. Same 60 doors, same 2,000 pieces. But now a much larger share of the people you reach are standing on a roof that's genuinely near the end. Your conversation changes from "have you thought about your roof" (no) to "your roof's in the range where we usually start seeing problems" (tell me more). The cost per knock didn't change. The cost per opportunity dropped hard, because you stopped paying to talk to people with 12 good years left.

Raw age gets you most of the way there. But it produces two expensive errors that remaining-life scoring fixes:

  • False positives from durable roofs. A 24-year-old architectural shingle roof in a mild coastal-Pacific climate, well-ventilated, north-facing, never stormed, can have real life left. Age alone flags it as a top prospect. You knock it, the homeowner shows you a roof that looks fine, and you've spent a door on someone who'll tell their neighbor you're chasing work that isn't there.
  • False negatives from beat-up younger roofs. A 9-year-old 3-tab roof on a south-facing slope in a hail corridor that took two significant storms can be functionally at end of life — granules gone, mat exposed, brittle. Age alone buries it near the bottom of your list. That's a closed job you never knocked.

Remaining-life scoring catches both. It takes the age signal and bends it with the things that actually consume roof life: material, climate, slope and orientation, ventilation, and — the big one for targeting — storm history on that specific roof.

The targeting estimate is not the inspection estimate

One more framing point that trips people up. When a contractor stands on a roof, they estimate remaining life from what they can see and touch: granule loss, mat exposure, curling, cracking, sealant failure, soft decking underfoot. That's a condition-based estimate and it's the gold standard — for one roof, after you've already driven there.

For targeting you can't do that. You're estimating remaining life for a thousand roofs you've never set foot on, to decide which forty you'll drive to first. So you build a predictive estimate from data that's available at scale: an age range from imagery, material from imagery, the home's location and exposure, and the storm record over that roof's life. It's coarser per-roof than a physical inspection — and it should be, because its job is to rank and prioritize, not to write a scope of work. The physical inspection still happens; it just happens on the doors your scoring told you to knock.

Keep those two jobs separate in your head. The scoring model picks the doors. The ladder confirms the roof. Conflating them is how people either overtrust a spreadsheet or dismiss the whole approach because "you can't tell condition from a desk." You're not claiming to. You're claiming to put the best doors at the top.

The lifespan baselines: what "remaining life" is measured against

You can't estimate remaining life without a credible expected lifespan to subtract age from. These are the service-life baselines pros anchor to. Treat them as starting points for a mild-to-moderate climate and adjust with the factors in the next section.

Roofing material Typical service life (years) Notes for targeting
3-tab asphalt shingle 15–20 The bread and butter of residential reroofs; ages fastest, cheapest to replace, most common on older tracts
Architectural / dimensional asphalt shingle 22–30 Heavier mat, longer life; dominant on homes built or reroofed since the 2000s
Wood shake / shingle 20–30 High maintenance; life swings hard with moisture and upkeep; many banned in WUI fire zones now
Metal (standing seam) 40–60+ Rarely your near-term prospect unless storm-damaged; coating and fastener failures matter more than age
Metal (exposed-fastener / corrugated) 25–40 Fastener gaskets and panel coating drive end of life, not the steel
Concrete tile 40–50+ Tile outlives the underlayment; the underlayment reroof at 20–30 yrs is the real opportunity
Clay tile 50–100 Same — sell the underlayment, not the tile
Slate 75–150+ Effectively never your volume prospect
Single-ply membrane (TPO/EPDM/PVC, low-slope) 15–30 Relevant for low-slope residential and light commercial
Built-up / modified bitumen (low-slope) 15–30 Same category; ponding and seams drive failure

A few things this table should change about how you think:

Asphalt is where the volume is, and the 3-tab vs. architectural split matters. If you can tell from imagery whether a roof is 3-tab or dimensional — and you often can, by the shadow lines and tab pattern — you've sharpened your estimate a lot. A 3-tab at 16 years is deep into its window. An architectural at 16 may have a third of its life left. Same age, very different prospect.

Tile and metal roofs fool age-only lists. A 35-year-old concrete tile roof reads as "ancient" to a naive age filter and gets knocked. But the tile is fine; only the underlayment is shot. That's still an opportunity — a big one — but it's a different conversation and a different homeowner objection ("my roof is tile, it lasts forever"). If your list doesn't distinguish material, you'll mishandle these. The opposite error is worse: skipping a metal roof entirely because "metal lasts 50 years" when it's the fasteners and coating that are failing at year 28.

Underlayment-driven systems hide the real clock. For tile and some metal, the visible surface outlives the system. Your remaining-life estimate for these should be anchored to the underlayment life (often 20–30 years), not the surface material, or you'll rank them as "decades left" when they're due now.

Regional lifespan reality

The single biggest modifier on those baselines is climate, and it's not subtle. The same architectural shingle that comfortably hits 28 years in the Pacific Northwest may struggle to reach 18 in the high-UV, high-heat, hail-prone southern plains. Thermal cycling, UV load, hail frequency, and freeze-thaw all eat asphalt shingles, and they stack.

A practical way to think about it: take your material baseline and apply a regional multiplier.

Climate zone (rough) Multiplier on asphalt baseline Why
Pacific Northwest / mild marine 1.05–1.15 Low UV, low hail, moderate temps; moss is the main enemy, not the sun
Upper Midwest / Northeast 0.90–1.00 Freeze-thaw and ice damming; cold is hard on sealant strips
Southeast / humid subtropical 0.85–0.95 Heat, humidity, algae, hurricane wind exposure near coast
Southern Great Plains / hail belt 0.65–0.85 High UV + frequent hail is the worst combination for shingle life
Desert Southwest 0.70–0.85 Extreme UV and heat; thermal cycling cracks mats early

These multipliers aren't laboratory constants — they're field-calibrated rules of thumb you should tune to your own market once you've reroofed enough houses to see your local pattern. The point is directional: a roof's expected life isn't a national number, it's a local one, and your remaining-life estimate has to start from the local number or every downstream score is off.

The factors that add or subtract years

Once you've set an expected lifespan from material and climate, you adjust for the things that make a specific roof age faster or slower than its neighbors. Here's the full list with the direction and rough magnitude of each, so you can build it into a model.

Slope orientation (aspect). South- and west-facing slopes take the most sun and the most thermal cycling. On a steep-pitch home with distinct slopes, the south slope can be visibly more worn than the north slope of the same roof. For targeting, orientation is a modest modifier (a few years on a steep south slope in a high-UV market) but it explains why a roof can fail in patches rather than all at once.

Pitch. Steeper roofs shed water and debris faster and stay drier, which generally helps. Low-slope and flat sections hold water, debris, and snow, which hurts. A home with significant low-slope sections ages those sections faster than its steep main roof.

Ventilation and attic conditions. This is the quiet killer. A poorly ventilated attic bakes the underside of the deck and shingles, accelerating mat embrittlement and sealant failure. You can't see ventilation from aerial imagery directly, but ridge vents and the era of construction give hints, and it explains why two identical-age roofs on the same street can be years apart in condition.

Installation quality. A roof installed with too few nails, nails in the wrong place, or over an existing layer ages faster and fails sooner — especially under wind. You can't score this at scale, but it's why your physical inspection sometimes finds a roof much worse than its data profile suggested. Build a little humility into the model for it.

Layers. A roof installed over an old layer (a "reroof over") runs hotter and fails earlier. Era and permit data sometimes flag this; otherwise it's an inspection finding.

Tree cover and debris. Overhanging trees mean shade (slows UV aging) but also moss, trapped moisture, and abrasion from branches (speeds decay). In marine and humid climates, heavy tree cover is usually a net negative for asphalt because of moss and moisture retention. You can often see canopy overhang in imagery.

Maintenance. Cleaned gutters, replaced flashing, treated moss — maintenance extends life and is invisible at scale. Mostly noise for a targeting model; matters at the inspection.

Storm history — the big one. This is where targeting models earn their keep, so it gets its own section.

Storm history is the factor that separates a good list from a great one

Two roofs of identical age, material, and climate can have wildly different remaining life because one of them has been hit and the other hasn't. Hail fractures the asphalt mat and knocks granules loose, exposing the mat to UV and accelerating everything. A single severe hail event can take years off a roof's remaining life in an afternoon. High-wind events lift, crease, and tear shingles and break sealant bonds, which lets the next wind in and starts a progressive failure.

So a real remaining-life estimate has to account for what storms have actually passed over that specific roof during its life, and how hard. Here's the nuance that trips people up: it's not enough to know "this ZIP code got hail in 2021." A hail swath is narrow and patchy. One side of a subdivision can get golf-ball hail while the other side gets pea-sized. Wind gusts vary street to street with terrain and exposure. The roofs you want to knock are the ones where age + actual storm exposure stack, and that requires resolving the storm down close to the individual roof, not the county or the ZIP.

There's also a directional subtlety: the same storm hits a south-facing steep slope harder than a sheltered north slope, and a tall exposed roof harder than one tucked behind a windbreak. Crude storm data ("the county had a hail day") loses all of that. The closer you can model the storm to the actual roof — its location, its slopes, its exposure — the more your remaining-life estimate reflects reality instead of a regional average.

This is the gap that's hard to close with public data alone, and it's worth being clear-eyed about. Public storm records (more on the sources below) tell you a hail or wind event occurred somewhere in an area on a date. They generally don't tell you the per-roof intensity. Closing that gap — going from "the area got hail" to "this roof probably took meaningful impact, this one across the street probably didn't" — is exactly the modeling problem the targeting section later gets into.

Building a remaining-life score you can sort a list by

Now assemble the pieces into something operational. The goal is a single number per address — call it estimated remaining life, in years, or a 0–100 priority score derived from it — that you can sort a list by and hand to your canvassing app or mail house.

Model A: the subtractive remaining-life estimate

The most intuitive model. Start from expected life, subtract age, subtract storm and exposure penalties. Output is remaining years.

Expected_Life  = Material_Baseline x Regional_Multiplier
Adjusted_Life  = Expected_Life
                 - Storm_Penalty
                 - Exposure_Penalty
                 + Favorable_Bonus
Remaining_Life = Adjusted_Life - Roof_Age

Where:

  • Material_Baseline comes from the lifespan table (use the midpoint of the range).
  • Regional_Multiplier comes from the climate table.
  • Storm_Penalty = sum of year-deductions for significant hail/wind events over the roof's life, weighted by severity and how close the modeled intensity was to the roof. One severe hail event might be 4–7 years; a moderate one 1–3; a significant wind event 1–4.
  • Exposure_Penalty = small deductions for steep south/west exposure in high-UV markets, heavy low-slope sections, poor-ventilation hints.
  • Favorable_Bonus = small additions for north exposure, mild marine climate, evident good ventilation.
  • Roof_Age is the midpoint of your estimated age range (you're working from a range like 18–22 years; use 20 for the math, and carry the range forward for honesty).

A roof with Remaining_Life of 0 to ~4 years is a top prospect. 5 to 8 years is a watch-and-mail prospect (worth a postcard now, a knock later). 9+ years you skip for now. Tune those thresholds to your appetite for volume vs. precision.

Model B: the 0–100 priority score

For canvassing and route tools it's often cleaner to express priority as a 0–100 score where higher = knock sooner. You can derive it from remaining life, or build it directly as a weighted sum of normalized factors. A reasonable weighting for a targeting list:

Factor Weight Rationale
Roof age relative to expected life (the "% of life used") 45% The dominant signal; a roof at 95% of expected life scores high
Storm exposure over the roof's life (modeled, per-roof) 30% The differentiator that finds beat-up younger roofs and durable old ones
Material/region durability adjustment 15% Keeps tile/metal and mild-climate roofs from false-flagging
Exposure/slope/ventilation modifiers 10% Fine-tuning; explains neighbor-to-neighbor variation

Note the weighting: age (as a percentage of expected life, not raw years) carries the most, but storm exposure carries nearly as much — and storm exposure is the factor that flips the two error cases (durable old roofs down, beaten young roofs up). A model that weights age at 90% is just an age sort with extra steps.

Worked example 1: the durable old roof that age-only over-ranks

  • Architectural shingle, estimated age range 24–28 (use 26).
  • Climate: mild marine (Pacific NW), multiplier 1.10.
  • Material baseline midpoint: 26 years.
  • Expected life = 26 x 1.10 = 28.6 years.
  • Storm history: essentially none over its life. Storm_Penalty = 0.
  • Exposure: north-facing main slopes, heavy but the climate's mild. Favorable_Bonus = +1.
  • Adjusted life = 28.6 + 1 = 29.6.
  • Remaining_Life = 29.6 - 26 = 3.6 years.

Even an old, durable, never-stormed roof lands at ~4 years remaining here — a legitimate prospect, but a soft one. An age-only list would have flagged this at the very top ("26 years old!"). The model correctly says: knock it, but don't be shocked if the roof looks decent and the homeowner isn't ready. Carry the age range into the conversation: "your roof's in the 24-to-28-year range, which is where we start watching for the end."

Worked example 2: the beat-up young roof that age-only buries

  • 3-tab shingle, estimated age range 8–11 (use 9.5).
  • Climate: southern Great Plains hail belt, multiplier 0.75.
  • Material baseline midpoint: 17.5 years.
  • Expected life = 17.5 x 0.75 = 13.1 years.
  • Storm history: two significant hail events over its life, both modeled as meaningful impact on this roof (south-facing steep slopes, exposed). Storm_Penalty = 6 years combined.
  • Exposure: steep south/west slopes in high-UV. Exposure_Penalty = 1.
  • Adjusted life = 13.1 - 6 - 1 = 6.1.
  • Remaining_Life = 6.1 - 9.5 = -3.4 years.

A negative remaining-life estimate. This 9-year-old roof is, on paper, past due — and an age-only list would have it sitting near the bottom, unknocked, because "it's only 9 years old." The storm and exposure terms are what surface it. This is the roof your model exists to find.

Worked example 3: the tile roof that needs underlayment

  • Concrete tile, estimated tile age 30+.
  • Tile baseline: 45 years — but anchor to underlayment, baseline 25 years.
  • Climate: Southwest, multiplier 0.80 on the underlayment.
  • Expected underlayment life = 25 x 0.80 = 20 years.
  • Roof age 30, so the underlayment is roughly 10 years past expected.
  • Remaining_Life (underlayment) = 20 - 30 = -10 years.

The tile is fine; the system is a decade past due. Score it high, but flag it as a tile/underlayment opportunity so your rep walks in with the right pitch ("your tile's fine — it's the felt underneath that's failed") instead of getting the "tile lasts forever" brush-off. If your model anchored to the tile's 45-year life, it would've scored this roof as 15 good years remaining and you'd have skipped a real job.

Carrying the range and the odds, not a false date

In all three examples the inputs are ranges (age range, penalty estimates), and the output should be treated as a range too. "Remaining_Life = 3.6 years" really means "roughly 2 to 6 years, with meaningful odds the next bad storm ends it sooner." Build that into how you store and speak the number:

  • Store the age as a range (18–22), not a point.
  • Treat remaining life as a window and a probability, not a deadline.
  • When you talk to the homeowner, speak in those terms. "Your roof's in the last few years of its expected life, and a roof this age usually doesn't survive the next big hail." That's honest, it's accurate, and it's far more persuasive than a fake precision that any homeowner can poke a hole in.

Where the data actually comes from

A score is only as good as its inputs. Here's where each input comes from at scale, and — critically — which sources lie to you.

Roof age (a range, from imagery and records)

This is the hard one, and the place most DIY lists go wrong.

What does NOT give you roof age:

  • Year built (from county assessor, Zillow, Google, etc.) is the construction date, not the roof date. Any home reroofed since construction — which is most homes over ~15 years old — has a roof younger than its "year built." Year built systematically over-ages your list and floods it with false positives (homes that already reroofed). It's the single most common mistake in homemade roof-age lists.
  • Listing photos / Street View can show a recent reroof if you're lucky and the imagery is fresh, but coverage and freshness are inconsistent, and you can't scale eyeballing thousands of houses.

What does give you a roof age range:

  • Permit data, where available, can pin a reroof date — but permit pull rates vary wildly by jurisdiction, lots of reroofs happen without permits, and coverage is spotty. Good signal when present, absent more often than you'd like.
  • Historical aerial/satellite imagery comparison. By comparing imagery across years, you can often bracket when a roof changed — the surface looks different before and after a reroof (color, granule sheen, ridge line). This is how you get a range ("reroofed sometime between the 2014 and 2018 captures, so roughly 8–12 years old") rather than a guess. Multiple imagery vintages = tighter range.
  • Visual aging cues from current imagery. Granule loss, streaking, color fade, and patching read (coarsely) from high-resolution aerial imagery and help you estimate age when you have no permit and only one imagery vintage. Coarse, but real.

The honest output of all this is a range, not a date — and the tighter the range, the more imagery vintages and corroborating signals you had. This is exactly why "what year was the roof installed" is the wrong question; "what range is this roof in" is the answerable one.

Material

Often readable from high-resolution aerial imagery: tab pattern and shadow lines distinguish 3-tab from architectural; tile, metal, and flat membranes have distinct signatures. Not perfect — a worn architectural can look 3-tab-ish — but good enough to set the right baseline most of the time.

Climate / region

Trivial from the address. Map the location to a climate zone and pull the regional multiplier. The free part of the model.

Storm history — and the per-roof gap

Public sources tell you storms happened in an area:

  • NOAA's Storm Prediction Center and Storm Events Database record hail and severe wind reports with dates, rough locations, and reported sizes.
  • The National Weather Service issues and archives warnings and event summaries.
  • Various radar-derived hail products estimate hail size from reflectivity over a grid.

These are real and useful for establishing that an area was exposed and roughly when. Their limit, for targeting, is resolution and per-roof intensity. A storm-reports database entry is a point report; a radar hail grid is coarse and estimates size, not the impact energy delivered to a specific roof's specific slopes. So public data gets you "this neighborhood saw hail on these dates," which is a real input — but it doesn't get you "this roof on the corner took it hard and the one mid-block didn't," which is what actually separates the roofs you should knock.

That per-roof gap is the modeling problem the next section is about.

Closing the per-roof storm gap with RoofPredict

Everything above you can assemble yourself in a spreadsheet, and you should understand it whether or not you ever use a tool — it's how you sanity-check any vendor's output. The two genuinely hard parts to do well at scale are (1) getting a tight roof-age range per address from imagery, and (2) resolving storm exposure down to the individual roof instead of the ZIP code. Those are the pieces RoofPredict is built to handle.

The approach is the two-factor estimate this whole method is built on, but done at scale and per roof. For each address, RoofPredict pulls a roof-age range from aerial imagery (a range, not a fake install date — same honesty discipline this method demands), and it models the storms that have actually passed over that specific roof during its life. Not "the county had a hail day" — it models hail and wind down to the individual roof, accounting for the roof's location and exposure, so two houses across the street from each other can score differently because the storm hit them differently. That's the per-roof gap public hail maps can't close, and it's the factor that flips the two expensive errors: it pushes durable, never-stormed old roofs down your list and surfaces beat-up younger roofs that age-only sorting buries.

The output is a per-roof picture you can rank a street by: an age range, the storm history that roof has actually taken, and a combined risk read — so you knock and mail the roofs that are worn out and skip the ones that aren't. Put plainly: a hail map shows you where it hailed; this shows you which roofs the storm actually wore out.

Worth being straight about the limits, because overselling this helps no one. It does not measure your roof for a scope of work — that's an EagleView/measurement job, a different category. The age is a range, not an install date, and it's an estimate from imagery, not a permit record. The storm modeling gives you odds, not proof — it tells you which roofs were most likely worn down, which is exactly what you want for deciding where to spend a knock, but the ladder still confirms the actual condition. And it's a targeting tool, not a leads service — it doesn't sell you a homeowner who's already raised their hand; it ranks the doors on your own streets so your existing crew works the right ones. The homeowner owns whatever happens next: if there's storm damage, you document conditions and write an honest estimate, the insurer decides coverage, and the homeowner owns the claim. The tool points your truck; it doesn't decide anything about anyone's insurance.

Where it pays off is the math from the top of this piece. Your crew's 60 daily doors and your monthly mail budget are fixed. Filling them with age-plus-storm-ranked addresses instead of a ZIP dump is the difference between a closer spending the day on roofs near the end of their life and spending it on roofs with a decade left. The estimate doesn't have to be perfect to move that needle hard — it just has to be better than the natural distribution you'd hit by knocking blind, and a per-roof age-and-storm score clears that bar easily.

Turning the score into routes and mail

A sorted list is potential energy. You convert it to jobs with disciplined fieldwork.

Knock the bottom of the remaining-life list first. Build daily routes from the lowest-remaining-life clusters that are geographically tight — you want low remaining-life and low windshield time. A canvassing app that ingests your scored list and clusters by both score and drive time is worth real money here. Don't let a rep freelance the route; the whole point is to spend the day on the right doors.

Mail a wider band than you knock. Knocking is expensive per contact, so reserve it for the 0–4-year-remaining tier. Mail is cheap per contact, so cast it across the 0–8-year band — the watch-and-mail tier that isn't worth a knock yet but is worth staying top-of-mind with. When a storm hits that area later, those are warm.

Re-engage your own book against the score. Run your old estimates and past customers through the same scoring. A homeowner you bid four years ago whose roof now scores in the top tier — especially after a storm passed over it — is the cheapest opportunity you own. You already have the relationship and the contact info. That's money sitting in your CRM.

Arm green reps with the per-roof read. A new canvasser who can say "your roof's in the 18-to-22-year range and it's taken two hailstorms since you bought the place" sounds like a veteran, even on week one. The per-roof talking point is what lets a green crew knock the right doors and actually close — which, not incidentally, is how green reps make money fast enough to stay instead of churning out in 60 days.

A repeatable weekly workflow

  1. Refresh the scored list for your active areas (new imagery vintages tighten age ranges; new storms update exposure). If you're running a model yourself, re-pull storm data and recompute; if you're using a tool, this is automatic.
  2. Pull the top tier (0–4 years remaining / highest priority score) within your active geography.
  3. Cluster into daily routes by score and drive time; assign to crews.
  4. Stage the mail band (0–8 years remaining) for the month's drop.
  5. Cross-reference your CRM — flag any scored address you've already estimated or serviced; those go to the top.
  6. Knock, document, estimate. On every real opportunity, document conditions honestly with photos and notes; write the estimate; let the homeowner decide. If there's storm damage, hand them clean documentation — you don't file, handle, or negotiate the claim, and you say nothing about deductibles.
  7. Feed results back. Log which scored doors converted and which didn't. Over a season this is how you calibrate your regional multipliers and storm penalties to your actual market.

That last step is the difference between a static list and a model that gets smarter. If your top-tier doors are converting at, say, one in eight and your watch-tier at one in thirty, your thresholds are roughly right. If the top tier isn't outconverting the rest, something in your inputs is off — usually age (year-built contamination) or storm resolution (too coarse).

What pros get wrong

The failure modes are consistent across companies that try this and stall.

Using year built as roof age. Covered above, but it's worth repeating because it's the number-one error and it's invisible until your hit rate disappoints. Year built over-ages your list and stuffs it with homes that already reroofed. If your "old roof" list is converting badly, this is the first thing to check.

Treating age as a date instead of a range. Pretending you know a roof is "exactly 19 years old" sets you up to be wrong in front of a homeowner who knows they reroofed it 11 years ago. Speak in ranges. It's more honest and, oddly, more credible — precision you can't back up reads as a sales gimmick.

Ignoring material. Running one lifespan number across tile, metal, 3-tab, and architectural roofs guarantees you mis-rank a big chunk of the list. Tile and metal especially need the underlayment/fastener anchor, not the surface-material life.

Using ZIP- or county-level storm data as if it were per-roof. A hail report for a county tells you almost nothing about which specific roofs got hit hard. If your storm input is that coarse, your "storm-aged" roofs are basically random within the area. This is the most common reason a list that should work doesn't.

Over-weighting age and calling it a model. If age is 90% of your score, you don't have a remaining-life model — you have an age sort. The whole edge is in the storm and durability terms that move roofs against their age. Weight them like they matter.

Skipping the feedback loop. Companies build the list once, run it, and never calibrate. Without logging conversions against scores you can't tell whether your thresholds and multipliers fit your market, and they almost never fit out of the box.

Letting reps override the route. A scored list dies if the crew knocks whatever's convenient. The discipline of working the list in order is most of the value; protect it.

Confusing targeting precision with inspection precision. The desk score picks doors; the ladder confirms roofs. Don't dismiss the score because "you can't see condition from imagery" — it's not trying to. And don't overtrust it either by skipping the inspection. Two jobs, two tools.

Edge cases worth knowing

A few situations that break naive models and how to handle them.

Recently reroofed homes inside an old tract. A 1998 subdivision where 40% of homes have already reroofed in the last few years. Year-built filtering knocks all of them; imagery-based age catches the fresh roofs and drops them. If you can't tell new roofs from old at scale, you'll waste a third of your effort here — this is the tract where imagery-based age earns its keep most visibly.

Tile and metal "forever" roofs. Anchor to underlayment/fastener life, flag the material so the rep walks in with the right pitch, and expect the "my roof lasts forever" objection. These are real jobs hiding behind a durable surface.

Solar panels. Panels obscure the roof in imagery (you can't read the shingle under them) and complicate any reroof (panels must come off and go back on). They're not disqualifying, but flag them — the job is bigger and the homeowner conversation is different.

Partial roofs and additions. Many homes have roof sections of different ages (an addition reroofed separately, a low-slope section over a garage). Your single age estimate is really a blend. Usually fine for ranking; just know the inspection may find more variation than the score implied.

HOA and architectural-control neighborhoods. Some tracts reroof on a coordinated cycle or restrict materials. Local knowledge beats the model here; if a whole street reroofed together two years ago, no score should be sending you there.

Brand-new construction warranties. A 3-year-old roof is almost never your prospect regardless of any storm short of catastrophic; warranty and recency keep the homeowner uninterested. The model handles this naturally (high remaining life), but don't let a single storm flag override common sense on a near-new roof.

A spreadsheet you can build this week

You don't need software to start. A workable version of this lives in a spreadsheet, and building it once teaches you the model cold.

Columns:

  1. Address
  2. Material (3-tab / architectural / tile / metal / membrane) — from imagery or your local knowledge
  3. Estimated roof age range (low, high) — from imagery comparison / permits / aging cues
  4. Roof age midpoint — =(low+high)/2
  5. Material baseline — lookup from your lifespan table
  6. Regional multiplier — one value for your market (or a lookup if you cover several)
  7. Expected life — =baseline*multiplier
  8. Storm penalty — your best read of hail/wind events over the roof's life (start coarse; refine as you get better data)
  9. Exposure penalty / bonus — small adjustments for slope/orientation
  10. Remaining life — =expected_life - storm_penalty + exposure_bonus - age_midpoint
  11. Tier — =IF(remaining<=4,"KNOCK",IF(remaining<=8,"MAIL","SKIP"))

Sort by remaining life ascending, filter to your active geography, and you have a ranked knock-and-mail list. It'll be rough — your storm penalties will be coarse and your age ranges wide — but it will already beat a ZIP dump, and you'll immediately feel where the limits are. The two columns that hurt most to fill by hand are age (column 3, because year-built lies and imagery comparison is tedious at volume) and storm penalty (column 8, because public data won't resolve to the roof). Those pain points are precisely the parts worth automating once the manual version proves the model out for you.

How accurate does the estimate need to be?

This is the question that paralyzes people, and the answer is freeing: not very. You're not pricing a job or guaranteeing a homeowner anything. You're deciding which forty doors to drive to out of a thousand. For that job, "better than the natural distribution" is the entire bar.

Think about it as lift over random. If 12% of homes in your area are genuine near-term prospects and you knock blind, ~1 in 8 doors is a real opportunity. If your scored top tier is even 30% genuine prospects, you've nearly tripled your crew's productive contact rate with the same payroll. The estimate didn't have to be right about any single roof's exact remaining years — it just had to be directionally right often enough to concentrate the good doors at the top of the list. That's a much, much lower bar than "predict the roof's death," and it's the bar that matters for targeting.

So don't chase false precision. Get the age into a defensible range, get the material right, get the climate right, and — the differentiator — get the storm exposure as close to per-roof as you can. Then trust the ranking to do its job, drive the doors, and let the ladder and the homeowner sort out the rest. The companies that win at this aren't the ones with a perfect estimate on any one house; they're the ones who consistently spend their fixed knocking and mailing capacity on the roofs nearest the end of their life, week after week, and let the math compound.

FAQ

What's the difference between roof age and remaining roof life?

Roof age is how long the current roof has been on the house. Remaining roof life is how many usable years it likely has left, which depends on age plus material, climate, slope and exposure, ventilation, and — most importantly for targeting — the storms that have actually passed over that roof. Two roofs the same age can be a decade apart in remaining life. For sorting a prospect list, remaining life is what you want, because it pushes durable never-stormed old roofs down and surfaces beat-up younger ones.

Can I just use the home's year built to estimate roof age?

No, and it's the most common mistake people make. Year built is the construction date, not the roof date. Most homes over about 15 years old have already been reroofed at least once, so their roof is younger than their year built. Using year built systematically over-ages your list and fills it with homes that already replaced their roof — false positives you pay to knock. Use imagery-based age comparison, permit data where available, and visual aging cues to get a roof-age range instead.

Why is roof age expressed as a range instead of an exact date?

Because you almost never have a permit pinning the exact install date, and you shouldn't pretend you do. Imagery comparison brackets when a roof changed (for example, sometime between two image captures), which gives you a range like 18 to 22 years. A range is honest, it's defensible in front of a homeowner who knows when they reroofed, and it's more credible than fake precision. Speak in ranges in the field too: 'your roof's in the 18-to-22-year range.'

How do storms change a roof's remaining life estimate?

Hail fractures the shingle mat and strips granules, exposing the mat to UV and accelerating aging — a single severe hail event can take several years off remaining life. High wind lifts, creases, and tears shingles and breaks sealant bonds, starting progressive failure. So a remaining-life estimate has to subtract for the storms that have actually hit that specific roof. The catch is resolution: a county or ZIP hail report doesn't tell you which roofs got hit hard, so you want storm exposure modeled as close to the individual roof as possible.

Why isn't public storm data enough to score roofs individually?

Public sources like NOAA's Storm Events Database and the Storm Prediction Center tell you that hail or wind occurred in an area on a date, and roughly how big. They generally don't tell you the impact intensity on a specific roof. Hail swaths are narrow and patchy and wind varies street to street, so one side of a subdivision can be hammered while the other is barely touched. To rank roofs you need the storm resolved down near the individual roof and its exposure, which public point-reports and coarse radar grids don't provide on their own.

How accurate does a remaining-life estimate have to be for targeting?

Much less accurate than people fear. You're not pricing a job or guaranteeing anything to a homeowner — you're deciding which doors to drive to out of hundreds. The bar is simply 'better than the natural distribution you'd hit by knocking blind.' If random knocking finds a real prospect at 1 in 8 doors and your scored top tier finds one at 1 in 3, you've roughly tripled your crew's productive contact rate with the same payroll, even though no single roof's estimate is exact. Chase directional accuracy, not false precision.

How do I handle tile and metal roofs that 'last forever'?

Anchor the estimate to the part that actually fails, not the visible surface. For tile, the tile can last 50-plus years but the underlayment beneath it typically fails at 20 to 30, and that underlayment reroof is the real opportunity. For metal, the steel outlasts the fasteners and coating, which drive end of life. Score these roofs against underlayment or fastener life, flag the material so your rep walks in with the right pitch ('your tile's fine, it's the felt underneath'), and expect the 'my roof lasts forever' objection.

Does this replace a physical roof inspection?

No. The remaining-life score is a desk estimate built from data available at scale, and its only job is to rank a list and decide which doors to knock first. The physical inspection — granule loss, mat exposure, soft decking, flashing condition — is the real condition assessment and it still happens, just on the doors your score told you to drive to. Keep the two jobs separate: the score picks the doors, the ladder confirms the roof.

What does RoofPredict do that a spreadsheet can't?

The model is the same two-factor estimate you can build by hand, but the two hardest inputs are tough to do well at scale: getting a tight roof-age range from imagery for thousands of addresses, and resolving storm exposure down to the individual roof instead of the ZIP code. RoofPredict automates both — it pulls an age range per roof from aerial imagery and models hail and wind on each specific roof, then combines them into a per-roof risk read you can rank a street by. It doesn't measure your roof for a scope (that's a different category), the age is a range not an install date, and the storm modeling gives odds, not proof — the ladder still confirms condition.

How do I keep my scored list from going stale?

Re-score on a regular cadence. New imagery vintages tighten your age ranges, and new storms change exposure, so a list that was right in spring may miss roofs that got hit in summer. Refresh the scored list for your active areas, re-pull the top tier, recluster routes, and re-cross-reference your CRM. Just as important, log which scored doors converted and which didn't, then use that to calibrate your regional multipliers and storm penalties to your actual market — that feedback loop is what turns a static list into a model that gets sharper each season.

Where do beat-up younger roofs fit in a targeting list?

They're exactly the roofs a remaining-life model exists to find, and the ones an age-only list buries. A young roof on a high-UV, hail-prone, south-facing slope that's taken two storms can be functionally at end of life despite a single-digit age. Because age-only sorting puts it near the bottom, you'd never knock it — but the storm and exposure terms in a remaining-life score surface it. Weight storm exposure heavily enough (around 30% of the score) and these closed jobs stop slipping through.

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. Roofing materials and service life guidancenrca.net
  2. IBHS — Hail and roof performance researchibhs.org
  3. IBHS — FORTIFIED Roof standardsfortifiedhome.org
  4. NOAA Storm Prediction Centerspc.noaa.gov
  5. NOAA Storm Events Databasencdc.noaa.gov
  6. National Weather Service — Hail informationweather.gov
  7. ICC — International Residential Code (roofing, Chapter 9)iccsafe.org
  8. ENERGY STAR — Roof products and attic ventilationenergystar.gov
  9. U.S. Census Bureau — Building permits (BPS)census.gov
  10. OSHA — Fall protection in residential constructionosha.gov
  11. FTC — Guides for advertising and marketing claimsftc.gov
  12. Texas Department of Insurance — Hail and roof claimstdi.texas.gov
  13. DOE Building America — Roof and attic durabilityenergy.gov
  14. RoofPredictroofpredict.com

Related Articles