# City Signals UX fixtures

These files contain **invented but plausible** values for layout and interaction work. They are not observations from Census, OpenAQ, NASA POWER, or any other source. Keep an “Illustrative data” label visible anywhere the fixtures appear, especially in screenshots or shared prototypes.

- `cities.json` contains eleven searchable cities, coordinates, two nonoverlapping illustrative census periods, recent PM2.5 readings, and a 2025 weather summary against a historical baseline. The weather fixture also has invented winter and summer mean temperatures for climate preference scoring. New York City and San Francisco include common search aliases.
- `insights.json` contains two editorial cards per city. Each card refers to a field in `cities.json`; numeric values should be read from that file rather than copied from the card text.
- `city-boundaries.geojson` contains real 2025 Census generalized place outlines for the eleven sample cities, converted from Census KML by `scripts/generate-city-boundaries.py`. Geometry is geographic context only; the rent, income, and heat values used to shade it remain invented.
- `national-benchmarks.json` contains invented US reference values for the profile cards, charts, ranking cards, and ranking table headers. `US AVG` marks a measure reference; `US REF` marks the composite or climate fit calculated from these invented references. These are design fixtures, not measured national statistics.
- `scoring-matrix.json` defines the prototype ranking's measure paths, fixed normalization ranges, favorable directions, weights, and missing-value score. It also defines climate profiles and priority multipliers. The ranking reads this file at runtime, so another measure can be added without changing the scoring formula. Current base weights total 100; the selected priority renormalizes their effective weights. Climate fit compares winter mean, summer mean, hot days, and seasonal temperature range with the selected targets. Missing or stale readings get a neutral score of 50 and lower the displayed coverage.
- Air quality `status` covers `available`, `stale`, and `unavailable`. Treat `null` and empty arrays as missing data, not zero.
- `medianGrossRentUsd` and `medianHouseholdIncomeUsd` are nominal dollars. `rentBurdenedHouseholdsPct` and `workFromHomePct` are percentages. PM2.5 is in micrograms per cubic meter; precipitation is in millimeters.
- The air chart uses fixed PM2.5 concentration bands for design testing: good at 0–9.0, moderate at 9.1–35.4, and high above 35.4 µg/m³. These are based on US EPA daily AQI concentration breakpoints, but the prototype chart shows monthly means, so its colors are not official AQI ratings.

When live sources are connected, replace these files with a documented API response model and recheck every insight against the real data and its usage rights.
