# Likely-to-sell-in-12-24-months score (score_sellers.py)

| Signal | Points | Where it comes from |
|---|---|---|
| In business 20 / 30 / 40+ years | +12 / +20 / +26 | state registry formation date, or "since 19xx" on their site |
| Owner's trade license held 30 / 40+ years | +12 / +18 | state license roster (Colorado DORA) |
| Individual is the registered agent (owner-operator) | +10 | state registry |
| Family name on the company | +10 | name matches owner/agent surname |
| "Family owned" on the site | +6 | their website |
| Owner talks about retiring / succession | +25 | their website (quoted) |
| Website untouched for years (old copyright) | +8 | their website footer |
| Not mobile friendly / no https | +5 / +3 | their website |
| Places confirms they have no website | +6 | Google Places |
| Core trade, 1-3 locations (Main Street sweet spot) | +8 / +8 | name + listing |
| Good rating but reviews slowing down | +4 / +6 | Google Places |
| Past family handoff (2nd generation already took over) | +6 | their website |
| Kids already in the business | -25 | their website ("my sons run...") |
| Web check says skip (no footprint, shell or sister entity) | -40 | `skip_reason` in web_verified.csv |
| New owner / already acquired | -20 / -25 | their website, BBB, registry agent change |
| Business license lapsed | -20 | state license roster |
| Online booking (actively investing) | -3 | their website |
| Supplier / too big | -15 / -10 | name |

A = 60+ (call this week), B = 40-59 (letter list), C = watch list. Every row carries a plain-English "why".
