A look inside the windows-permit model — it scores owner-occupied single-family homes on their odds of pulling any window permit in the next six months, on the same feature machine as the roofing and garage models.
Window replacement is mostly a question of age and activity. Original windows reach the end of their life around fifteen-to-twenty years, so the model leans hardest on how recently the owner pulled any permit (are they renovating?) and how old the house is. It scores 939,989 homes in the age-15+ buy-box and, on a list of fifteen thousand, catches window permits at 6.0× a random draw — a lower multiple than garage only because window permits are far more common (a higher base rate is harder to beat).
Driver clusters · LightGBM gain, aggregated by signal
What the model actually weights.
Owner · 38%
Capacity · 22%
Place · 20%
Age · 12%
$
Approximate share of clustered gain across the top features · the five named clusters ≈ 79% of total gain
01
Owner activity & permits
≈ 30%
The dominant cluster. Recent permit history of any trade — the composite “any non-roof permit recently” is the single biggest feature by a wide margin. A home mid-renovation is the home replacing its windows.
County regime, neighborhood density, and storm exposure — impact-window upgrades spike after hurricanes. Distinct geographic scales.
fips · nearest_storm_name · nearest_storm_km · area_total_props · area_pct_wholeroofs_36m
04
Property age & tenure
≈ 13%
The physical core of window-replacement timing: build year and home age (original windows aging out), plus ownership tenure. Demand is ~6× lower on 0-9y homes — the reason for the age-15 buy-box.
Activity over clock. Where roofing has a dominant physical clock (roof age ≈ 51%) and garage is fully diffuse, windows sits between: owner permit-activity leads (≈ 30%), with property age the physical anchor. Read by cluster, not feature rank. Shares over the top features of the buy-box model.
How the model finds the next window job
Field Guide · 1
May 2026
Headline numbers
How well it actually works.
6.0×
Lift @ 15K · buy-box
eval 2025-10-31
9.0×
Lift @ 5K · top of list
tightest selection
0.0344
AUC-PR
vs 0.0337 no-buy-box
1.05%
Buy-box base rate
6-mo permit hit rate
Of 939,989 homes in the buy-box (age 15+), about 9,823 (1.05%) pull a window permit in six months — window permits are common, near roofing’s rate. A random 15,000 catches ~158; the model catches roughly 940 — a 6× edge.
Why lower than garage? Not a weaker model — a higher base rate. Window permits (1.05%) are ~9× more common than garage (0.12%), so the top-15K can’t concentrate positives as hard; AUC-PR is actually higher (0.034 vs 0.016). Lift inversely tracks base rate; compare a model to itself over time, not across targets by lift alone.
Lift by list size
Tighter list, sharper edge.
Lift over a random draw at three list depths, buy-box (age 15+) model, eval anchor 2025-10-31. Single-fold — validation-only model, no 6-window cross-validation yet.
Audit findings
What we checked, changed, and left open.
Clean
Leakage audit passed: features T0-bounded. The no-history ablation (drop n_windows_24m/36m + months_since_last_windows_permit) keeps ~94% of lift — demand signal, not autocorrelation.
Validated
Buy-box (property age ≥ 15) raises AUC-PR 0.0337→0.0344, keeps 96% of positives while dropping the dead new-build segment. Adopted as the standard universe.
Closed
NA-categorized variant tested: dropping uncategorized actions loses positives with no ranking gain. Verdict — keep all-actions.
Pending
No ship pipeline yet (validation-only). Age cutoff (15) is domain-reasonable but un-swept.
Anti-signals
What pulls a score down.
Removed before scoring
Newer than 15 years
Absentee owner
Non-individual owner
Mobile / manufactured
Profile says “not yet”
No recent permit activity
Recently replaced windows
Low value / small home
Quiet surroundings
No recent storm
Low-activity neighborhood
Low-rate county
Two stages. The age-15+ buy-box (plus single-family, individual, owner-occupied) is a hard filter before scoring. The other columns are in-model signals whose adverse values pull a score down.
Bottom line
Window demand is predictable at about 6× random inside the buy-box, with the highest AUC-PR of the three permit models. Owner permit-activity leads (≈ 30%), with home age the physical anchor — the model bets on “renovating owner, aging windows.” What it can’t see: owner intent before permits surface, and any market outside the seven Florida counties. Validation-only.
windows · FL-7 buy-box · build 6e1d9bf · eval 2025-10-31