# Data sources Every value on the map comes from the public datasets below. Nothing is estimated or filled in: if a source has no value for a county, the app shows "no data" and leaves that county out of the top 5 when you've weighted that layer. Processing: `scripts/build_data.py` → `data/counties.json`, `data/state_tax.json` (also copied to `public/data/`). | Layer / field | Source | Vintage | URL | |---|---|---|---| | County boundaries | us-atlas v3.0.1 (Census Bureau cartographic boundary files, 1:10m) | 2017 boundaries | https://cdn.jsdelivr.net/npm/us-atlas@3.0.1/counties-10m.json | | Median gross rent (`rent`) | US Census Bureau, American Community Survey 5-year, table B25064 (table-based summary file) | 2019–2023 | https://www2.census.gov/programs-surveys/acs/summary_file/2023/table-based-SF/data/5YRData/acsdt5y2023-b25064.dat | | Median household income (`inc`) | ACS 5-year, table B19013 | 2019–2023 | https://www2.census.gov/programs-surveys/acs/summary_file/2023/table-based-SF/data/5YRData/acsdt5y2023-b19013.dat | | Households with broadband of any type (`bb`) = B28002_004 ÷ B28002_001 | ACS 5-year, table B28002 | 2019–2023 | https://www2.census.gov/programs-surveys/acs/summary_file/2023/table-based-SF/data/5YRData/acsdt5y2023-b28002.dat | | Connecticut rent / income / broadband | ACS 5-year 2017–2021 (the last release using CT's 8 legacy counties; 2022+ uses planning regions that don't match the map's boundaries). Labeled per-county in the app. | 2017–2021 | https://www2.census.gov/programs-surveys/acs/summary_file/2021/table-based-SF/data/5YRData/ | | Avg summer high (`tmax`) = mean of Jun/Jul/Aug monthly mean max temp, 1991–2020 | NOAA NCEI nClimDiv county dataset (`climdiv-tmaxcy-v1.0.0-20261006`) | 1991–2020 avg | https://www.ncei.noaa.gov/monitoring-content/data/us/climdiv/monthly/current/ | | Avg winter low (`tmin`) = mean of Dec/Jan/Feb monthly mean min temp, 1991–2020 | NOAA NCEI nClimDiv (`climdiv-tmincy-v1.0.0-20261006`) | 1991–2020 avg | same as above | | Disaster expected annual loss rate, national percentile (`alr` = `ALR_NPCTL`), overall risk score/rating (`risk`, `riskR`), per-hazard risk ratings (hurricane, wildfire, inland flooding, coastal flooding, tornado, earthquake), population (`pop`) | FEMA National Risk Index, county table | v1.20, December 2025 | https://www.fema.gov/about/reports-and-data/openfema/nri/v120/NRI_Table_Counties.zip | | State income tax brackets (single filer) | Tax Foundation, "2026 State Income Tax Rates and Brackets" (rates as of Jan 1, 2026) | 2026 | https://taxfoundation.org/data/all/state/state-income-tax-rates-2026/ | ## Method notes - **Rent vs income** = county median gross rent × 12 ÷ the income you enter. - **State income tax** = the single-filer marginal rate for the bracket your gross income falls in (ignores deductions, credits and local income taxes such as NYC or Ohio municipal taxes). Washington is set to 0% because the Tax Foundation table notes it taxes capital gains only, not wages. - **Disaster loss** uses FEMA's Expected Annual Loss *rate* percentile (loss relative to the value exposed), not the overall Risk Index score, because the overall score scales with how much property a county has, which makes every big metro look "very high risk". - **Fit score** (0–100) = weighted average of per-layer scores: rent 10%→1, 40%→0 of income; summer high 72°F→1, 100°F→0; winter low 40°F→1, 0°F→0; loss-rate percentile 0→1, 100→0; broadband 95%→1, 60%→0; state rate 0%→1, 10%→0. Map colors show your rank among counties still in play. - **Not available:** humidity / dew point (no clean county-level public table found; the AI tells users this and uses summer highs instead). ## Known gaps - Connecticut: no FEMA NRI values (NRI v1.20 uses CT planning regions, not the 8 legacy counties on this map). - Valdez-Cordova, AK (split in 2019), Lexington city, VA and DC: missing in one or more source files. - Hawaii: not covered by nClimDiv temperature data.