{
  "generated": "2026-09-16",
  "note": "Documents every ZIP-feature property key observed across all 1,233 features of data/atlas_data.json (D.zips), every county-keyed table named in W1-05's task spec, and every field on a D.systems[i] record (including the researched facts sub-object). Field order is positional unless a key's type is \"object\", in which case fields is a map of the object's own keys. Distances (\"mi\") are straight-line miles from the ZIP's population-weighted center unless stated otherwise; most nearest-facility keys follow the repeating shape [mi, name, city, countWithinRadius1, countWithinRadius2, countInsideZip, listInsideZip] with the exact radii varying by layer (see each key's fields). Two keys are reused with different meanings at the ZIP level vs the system level: zip 'pf' is the nearest post office, system 'pf' is PFAS occurrence; zip 'pl' is nearest gas pipeline, system 'pl' is Ohio EPA PFAS plant-sampling status. check_schema.py enforces that every key below is present and, for array props, that the documented field count matches the observed length(s). A table's \"confidence\": \"low\" means the whole table is never rendered (D-58); a \"field_confidence\" map marks single slots the same way (D-72), keyed as the readers name them: \"3\" for a positional slot, \"all[1]\" for an element inside an object-typed row, \"n[3]\" for that element of every row in a list-of-rows key. countytables.py refuses those slots and api.py omits them, from this one source.",
  "zip_props": {
    "z": {
      "topic": null,
      "name": "ZIP code",
      "type": "string",
      "source": "USPS ZCTA",
      "note": "the 5-digit ZIP/ZCTA code, same as the feature's own z property key used as the join key everywhere else."
    },
    "n": {
      "topic": null,
      "name": "Place name(s)",
      "type": "string",
      "source": "USPS + local government join",
      "note": "up to 3 place names for the ZIP, comma-joined (USPS preferred city plus overlapping local-government names)."
    },
    "k": {
      "topic": null,
      "name": "County (by residents)",
      "type": "string",
      "source": "Census block population join (scripts/join_zip_county.py)",
      "note": "the county most of the ZIP's residents live in, population-weighted (falls back to the county containing the ZIP's representative point when no populated-block data exists); county-keyed tables are looked up by this value with ' County' appended."
    },
    "p": {
      "topic": null,
      "name": "Population",
      "type": "number",
      "source": "2020 Census (POP100, ZCTA)"
    },
    "la": {
      "topic": null,
      "name": "Latitude",
      "type": "number",
      "source": "Census ZCTA centroid (CENTLAT)"
    },
    "lo": {
      "topic": null,
      "name": "Longitude",
      "type": "number",
      "source": "Census ZCTA centroid (CENTLON)"
    },
    "a": {
      "topic": null,
      "name": "Area",
      "type": "number",
      "fields": [
        "square kilometers"
      ],
      "source": "computed from the ZCTA polygon"
    },
    "b": {
      "topic": "class",
      "name": "Coverage basis",
      "type": "string",
      "fields": [
        "'pop' (population-weighted share) or 'area' (land-area share, used when no populated-block overlap exists)"
      ],
      "source": "scripts/build.py zip assembly"
    },
    "c": {
      "topic": "class",
      "name": "Coverage share",
      "type": "number",
      "fields": [
        "share (0-1) of the basis in field 'b' actually covered by a mapped water system; domSys() requires c>=0.5 on a pop basis (or s[0][1]>=0.10 on an area basis) before the ZIP is colored by its top system rather than hatched 'mostly private wells'"
      ],
      "source": "scripts/build.py zip assembly"
    },
    "ca": {
      "topic": "class",
      "name": "Area-basis coverage share",
      "type": "number",
      "fields": [
        "share (0-1) of land area covered by a mapped system, always computed as a fallback/comparison figure regardless of which basis 'b' uses"
      ],
      "source": "scripts/build.py zip assembly"
    },
    "s": {
      "topic": "class",
      "name": "Water systems serving this ZIP",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[system index into D.systems, population- or area-weighted share 0-1]",
        "order": "share-descending; s[0] is the dominant system"
      },
      "source": "EPA SDWIS + service-area-boundary join"
    },
    "pli": {
      "topic": "class",
      "name": "Serving plant index",
      "type": "number",
      "fields": [
        "index into the dominant system's own plants[] list identifying which treatment plant serves this ZIP"
      ],
      "source": "plant-level research (data/plants.json)"
    },
    "plu": {
      "topic": "class",
      "name": "Plant-assignment uncertainty flag",
      "type": "number",
      "fields": [
        "1 = boundary estimated (the plant's own zips_uncertain list); 2 = served from more than one plant (two plants both list this ZIP as served)"
      ],
      "source": "plant-level research (data/plants.json)"
    },
    "lg": {
      "topic": "gov",
      "name": "Local governments",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[index into D.localgov, resident share 0-1]"
      },
      "source": "ODOT municipal corporation and township boundaries"
    },
    "sd": {
      "topic": "schools",
      "name": "School districts",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[index into D.schools, resident share 0-1]"
      },
      "source": "Ohio school district boundaries (OGRIP via ODOT)"
    },
    "ws": {
      "topic": "watershed",
      "name": "HUC-8 watersheds",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[index into D.watersheds, resident share 0-1]"
      },
      "source": "USGS Watershed Boundary Dataset"
    },
    "wc": {
      "topic": "watershed",
      "name": "HUC-12 subwatershed",
      "type": "array",
      "fields": [
        "HUC-12 name at the ZIP's population-weighted center",
        "list of up to 3 downstream HUC-12 names"
      ],
      "source": "USGS Watershed Boundary Dataset"
    },
    "t": {
      "topic": "phone",
      "name": "Telephone exchange carriers",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[index into D.telecom, resident share 0-1]"
      },
      "source": "PUCO ILEC service areas"
    },
    "e": {
      "topic": "electric",
      "name": "Electric utilities",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[index into D.elec, resident share 0-1]"
      },
      "source": "PUCO certified territories + HIFLD municipal systems"
    },
    "ea": {
      "topic": "electric",
      "name": "Secondary electric utilities",
      "type": "array",
      "fields": [
        "indices into D.elec present in this ZIP but below the 0.5% share cutoff for 'e' ('also' providers)"
      ],
      "source": "same as 'e'"
    },
    "g": {
      "topic": "gas",
      "name": "Gas distribution companies",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[index into D.gas, resident share 0-1]"
      },
      "source": "PUCO gas distribution map + HIFLD/EIA-176 territories"
    },
    "go": {
      "topic": "gas",
      "name": "Other gas companies present",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[index into D.gas, share] for 'others' listed alongside the main providers"
      },
      "source": "same as 'g'"
    },
    "gc": {
      "topic": "gas",
      "name": "County gas companies",
      "type": "array",
      "fields": [
        "indices into D.gas of every company PUCO lists as serving this ZIP's county, independent of ZIP-level polygon match"
      ],
      "source": "PUCO county gas-provider list"
    },
    "h": {
      "topic": "gas",
      "name": "Home heating fuel",
      "type": "array",
      "fields": [
        "gas share",
        "LP/propane share",
        "electric share",
        "fuel oil share",
        "wood share",
        "households sampled (n)"
      ],
      "source": "Census ACS heating fuel (B25040)"
    },
    "dr": {
      "topic": "reps",
      "name": "Political districts",
      "type": "object",
      "fields": {
        "u": "[[index into D.districts.us_house, share]] rows with share >= 2% (or the top row alone)",
        "s": "same shape for D.districts.oh_senate",
        "h": "same shape for D.districts.oh_house"
      },
      "source": "ODOT TIMS district boundaries + legislative directories"
    },
    "r": {
      "topic": "radon",
      "name": "Radon tests",
      "type": "array",
      "fields": [
        "mean pCi/L",
        "median pCi/L",
        "tests",
        "share of tests at or above 4 pCi/L (%)",
        "highest pCi/L"
      ],
      "source": "Ohio Department of Health radon test results by ZIP since 2010"
    },
    "fl": {
      "topic": "flood",
      "name": "FEMA floodplain exposure",
      "type": "array",
      "fields": [
        "population share in the 1% annual-chance (100-yr) floodplain",
        "population share in the 0.2% annual-chance (500-yr) floodplain",
        "land-area share in the 1% floodplain",
        "land-area share in the 0.2% floodplain"
      ],
      "source": "FEMA National Flood Hazard Layer"
    },
    "flz": {
      "topic": "flood",
      "name": "Top flood zone codes",
      "type": "array",
      "fields": [
        "up to 2 FEMA flood zone codes by land-area share, e.g. 'X (0.2%)', 'AE'"
      ],
      "source": "FEMA National Flood Hazard Layer"
    },
    "fp": {
      "topic": "flood",
      "name": "NFIP policies in force",
      "type": "array",
      "fields": [
        "policy count",
        "total coverage $",
        "?",
        "?",
        "?"
      ],
      "source": "OpenFEMA NfipPolicies v3, policies in force September 2026",
      "note": "field 0 (policy count) and field 1 (total coverage $) are inferred from the OpenFEMA NfipPolicies schema and the sample's order of magnitude; fields 2-4 are not referenced anywhere in template.html (this key is not yet wired into any card) so their exact meaning is unconfirmed.",
      "confidence": "low"
    },
    "nf": {
      "topic": "flood",
      "name": "NFIP claims",
      "type": "array",
      "fields": [
        "claim count",
        "total paid $",
        "?",
        "[worst year, count in that year]",
        "?"
      ],
      "source": "OpenFEMA NFIP redacted claims for Ohio, frozen June 2026",
      "note": "not referenced in any card function found in template.html; field breakdown inferred only from the sample shape (a count, a dollar total, a [year,count] pair) and the layers_meta comment. Not verified.",
      "confidence": "low"
    },
    "a14": {
      "topic": "flood",
      "name": "NOAA Atlas 14 precipitation frequency",
      "type": "array",
      "fields": [
        "2-yr return-period rainfall depth (in)",
        "5-yr depth (in)",
        "10-yr depth (in)",
        "25-yr depth (in)",
        "50-yr depth (in)",
        "100-yr depth (in)",
        "200-yr depth (in)",
        "500-yr depth (in)"
      ],
      "source": "NOAA Atlas 14 precipitation frequency estimates at the ZIP center (partial duration series)",
      "note": "the 8 return periods are NOAA Atlas 14's standard published set (2/5/10/25/50/100/200/500-yr); this key is not rendered in any card found in template.html, so the order is assumed shortest-to-longest by convention, not individually confirmed position by position.",
      "confidence": "low"
    },
    "lv": {
      "topic": "flood",
      "name": "FEMA levees and floodwalls",
      "type": "array",
      "fields": [
        "levee count",
        "floodwall count",
        "list of levee names",
        "list of floodwall names",
        "?",
        "?",
        "?",
        "nearest named water body",
        "distance (mi)",
        "levee accreditation status"
      ],
      "source": "FEMA National Flood Hazard Layer levee centerlines and floodwalls",
      "note": "fields 4-6 are not referenced in any template.html card found for this key; only the trailing water-body/distance/accreditation fields and the two name-count pairs at the front are inferred from the sample shape.",
      "confidence": "low"
    },
    "hz": {
      "topic": "hazards",
      "name": "FEMA hazard risk index",
      "type": "array",
      "fields": [
        "overall risk index score (national percentile, 0-100)",
        "inland flooding score",
        "tornado score",
        "winter weather score",
        "ice storm score",
        "strong wind score"
      ],
      "source": "FEMA National Risk Index, census tracts, December 2025 release",
      "note": "fields 0-3 are printed directly in hazardsPanel(); fields 4-5 (ice storm, strong wind) are inferred by position from the FEMA NRI hazard-type list and build.py's own local variable names (ifld/trnd/wntw/istm/swnd) but are not rendered in any card yet.",
      "confidence": "medium"
    },
    "hzt": {
      "topic": "hazards",
      "name": "Top hazard types",
      "type": "array_of_pairs",
      "fields": {
        "pair": "[hazard name, score], the ZIP's highest-scoring FEMA National Risk Index hazard types, ranked descending"
      },
      "source": "FEMA National Risk Index",
      "note": "build.py caps this at the top 2 (h['top'][:2]); observed length is uniformly 2, but it is documented as a variable-length pair list like 's'/'e'/'g' rather than a fixed 2-field array, since both slots share the same [name,score] shape."
    },
    "eal": {
      "topic": "hazards",
      "name": "Expected annual loss",
      "type": "number",
      "fields": [
        "FEMA's modelled expected annual loss ($) from all hazards combined, in buildings, crops and lives"
      ],
      "source": "FEMA National Risk Index"
    },
    "cm": {
      "topic": "climate",
      "name": "Climate normals",
      "type": "array",
      "fields": [
        "annual snowfall (in)",
        "average temperature (F)",
        "average min temp (F)",
        "average max temp (F)",
        "average January low (F)",
        "average July high (F)",
        "days 90F+ a year",
        "days 32F or below",
        "days 0F or below",
        "heating degree days",
        "cooling degree days",
        "annual precipitation (in)",
        "wet days a year",
        "snow days a year",
        "temperature station name",
        "distance to temp station (mi)",
        "precipitation station name",
        "distance to precip station (mi)",
        "snow station name",
        "distance to snow station (mi)",
        "ice-storm days a year",
        "days with snow cover a year",
        "snow data-quality flag",
        "years of snow-cover record"
      ],
      "source": "NOAA NCEI 1991-2020 U.S. Climate Normals"
    },
    "aq": {
      "topic": "air",
      "name": "Air quality (PM2.5/ozone/AQI)",
      "type": "array",
      "fields": [
        "annual mean PM2.5 (µg/m3)",
        "98th-percentile 24-hr PM2.5 (µg/m3)",
        "distance to PM2.5 monitor (mi)",
        "PM2.5 monitor name",
        "PM2.5 monitor city",
        "4th-highest daily 8-hr ozone (ppb)",
        "ozone monitor name",
        "distance to ozone monitor (mi)",
        "county AQI median (2025)",
        "good AQI days",
        "moderate AQI days",
        "unhealthy-for-sensitive-or-worse AQI days",
        "peak AQI value (2025)",
        "county name (for AQIY/ATX county-table lookups)"
      ],
      "source": "EPA Air Quality System 2025 annual summaries"
    },
    "caa": {
      "topic": "air",
      "name": "Clean Air Act permitted sources",
      "type": "array",
      "fields": [
        "permitted-source count inside ZIP",
        "major (Title V) source count",
        "synthetic-minor source count",
        "sources with a violation in the last 3 years",
        "sources in high-priority violation now",
        "penalties in the last 5 years ($)",
        "list of notable sources [name, isMajor, inHighPriorityViolation, violationQuarterCount]",
        "share (%) of the ZIP in an ozone nonattainment/maintenance area",
        "nearest major source outside the ZIP [name, city, distance mi] or null",
        "permanently-closed sources also on file"
      ],
      "source": "EPA ECHO Clean Air Act facilities"
    },
    "ev": {
      "topic": "env",
      "name": "Contaminated/toxic sites summary",
      "type": "array",
      "fields": [
        "Superfund NPL sites inside/near",
        "SEMS sites",
        "TRI reporters",
        "distance to nearest NPL site (mi)",
        "nearest NPL site name",
        "nearest NPL site city",
        "nearest NPL site status",
        "brownfield acres (FRS ACRES)",
        "RCRA hazardous-waste handlers",
        "air-permitted facilities",
        "NPDES-permitted facilities",
        "total FRS facilities"
      ],
      "source": "EPA Facility Registry Service (Superfund NPL/SEMS/TRI/RCRA/air/NPDES); Ohio EPA landfill and DERR cleanup inventories"
    },
    "evb": {
      "topic": "env",
      "name": "Named brownfield sites",
      "type": "array",
      "fields": [
        "up to 3 brownfield site names (EPA ACRES)"
      ],
      "source": "EPA FRS brownfields (ACRES)"
    },
    "evn": {
      "topic": "env",
      "name": "Named Superfund NPL sites",
      "type": "array",
      "fields": [
        "Superfund NPL site names touching or near this ZIP"
      ],
      "source": "EPA FRS Superfund NPL"
    },
    "eva": {
      "topic": "watershed",
      "name": "EnviroAtlas HUC-12 metrics",
      "type": "array",
      "fields": [
        "a bucketed population-density label (e.g. '<50')",
        "Conservation Reserve Program acres",
        "?",
        "annual precipitation-related metric",
        "?",
        "nitrate-violation probability index",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "stream length or similar (mi)"
      ],
      "source": "EPA EnviroAtlas HUC-12 metrics for the population center's subwatershed",
      "note": "only the first field (a density bucket string) is unambiguous from its type; the remaining 15 numeric fields (Conservation Reserve acres, precipitation, water use, stream length, grain hectares, nitrogen deposition and the nitrate-violation index per the layers_meta comment) were not individually confirmed against template.html usage.",
      "confidence": "low"
    },
    "isw": {
      "topic": "sewage",
      "name": "Industrial stormwater permittees",
      "type": "array",
      "fields": [
        "count of sites with their own permit inside the ZIP",
        "list of permittee names"
      ],
      "source": "EPA Facility Finder state industrial stormwater permittees"
    },
    "ms4": {
      "topic": "sewage",
      "name": "MS4 regulated stormwater area",
      "type": "array",
      "fields": [
        "share (%) of the ZIP inside a regulated MS4 area",
        "name of the largest MS4 storm-sewer system covering it",
        "count of MS4 permit holders overlapping the ZIP"
      ],
      "source": "Ohio EPA SurfaceWater/MS4_RegulatedAreas, 2020-2030 designation"
    },
    "vap": {
      "topic": "env",
      "name": "Voluntary Action Program sites",
      "type": "array",
      "fields": [
        "site count",
        "covenants-not-to-sue count",
        "?",
        "nearest site description (name/address)",
        "action type (e.g. 'Covenant Not to Sue')",
        "distance (mi)",
        "?"
      ],
      "source": "Ohio EPA Voluntary Action Program covenants and institutional controls",
      "note": "positions 2 and 6 are not referenced in any card found in template.html; the rest is inferred from the sample and the field's evident purpose.",
      "confidence": "low"
    },
    "rcra": {
      "topic": "env",
      "name": "RCRA hazardous-waste handlers",
      "type": "array",
      "fields": [
        "handler count",
        "large-quantity generators",
        "significant noncompliance count",
        "?",
        "combined violations/enforcement figure",
        "list of notable handlers",
        "nearest handler with compliance history [name, city, distance mi]"
      ],
      "source": "EPA ECHO RCRA hazardous-waste handlers with compliance history",
      "note": "field 3 is unconfirmed; the rest follows the ECHO RCRA summary fields build.py's comment names.",
      "confidence": "low"
    },
    "ust": {
      "topic": "env",
      "name": "Underground storage tanks",
      "type": "array",
      "fields": [
        "site count",
        "tank count",
        "release/leak site count",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "EPA UST Finder (state UST and leaking-tank release records, 2018-2019)",
      "note": "only fields 0-2 are reasonably confident from the key's evident purpose and typical UST-inventory shape; fields 3-9 are not referenced in any template.html card.",
      "confidence": "low"
    },
    "dc": {
      "topic": "env",
      "name": "Water/wastewater dischargers",
      "type": "array",
      "fields": [
        "discharger count",
        "?",
        "?",
        "count within a wider radius",
        "?",
        "list of names",
        "?"
      ],
      "source": "EPA FRS/NPDES discharger points",
      "note": "not referenced in any card in template.html; the source dataset (data/zip_dischargers.json) was not opened. Field count from the observed array length only.",
      "confidence": "low"
    },
    "wf": {
      "topic": "env",
      "name": "Licensed solid waste facilities",
      "type": "array",
      "fields": [
        "facility count",
        "list of [facility kind, count] pairs",
        "nearest facility name",
        "nearest facility kind",
        "distance (mi)",
        "count within a wider radius"
      ],
      "source": "Ohio EPA licensed solid waste facilities (WasteMgmt/DMWM)"
    },
    "lf": {
      "topic": "env",
      "name": "Nearest landfill",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "kind (e.g. municipal solid waste landfill)",
        "status ('open'/'closed')",
        "count within radius 1",
        "count within radius 2",
        "count inside ZIP"
      ],
      "source": "Ohio EPA licensed solid waste facilities"
    },
    "de": {
      "topic": "env",
      "name": "Nearest DERR cleanup site",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "action type (e.g. 'site assessment')",
        "count within radius 1",
        "count within radius 2",
        "count inside ZIP",
        "list of names inside ZIP"
      ],
      "source": "Ohio EPA Division of Environmental Response and Revitalization cleanup sites"
    },
    "cs": {
      "topic": "sewage",
      "name": "Nearest combined sewer overflow",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "count within radius 1",
        "count within radius 2",
        "count inside ZIP",
        "receiving water body"
      ],
      "source": "EPA ECHO combined sewer overflow inventory"
    },
    "srf": {
      "topic": "sewage",
      "name": "State Revolving Fund loans",
      "type": "object",
      "fields": {
        "n": "loan count",
        "amt": "total loan amount ($)",
        "ww": "[count, amount $] wastewater loans",
        "dw": "[count, amount $] drinking-water loans",
        "pf": "principal-forgiveness amount ($)",
        "first": "first loan year on file",
        "latest": "[year, project name, place, amount $, category, program code] most recent loan",
        "big": "[year, project name, place, amount $, category, program code] largest loan"
      },
      "source": "Ohio EPA DEFA state revolving fund loan awards",
      "note": "the 'program code' sub-field (e.g. 'WSRLA') in latest/big is shown verbatim but its expansion was not confirmed.",
      "confidence": "medium"
    },
    "fpa": {
      "topic": "sewage",
      "name": "Section 208 facility planning area",
      "type": "array",
      "fields": [
        "facility planning area name",
        "designated sewage management agency name (or 'unassigned')",
        "Ohio EPA prescription document name",
        "share (%) assigned to that agency",
        "agencies sharing the ZIP",
        "?",
        "a second agency name when more than one shares the ZIP",
        "share (%) with any designated agency"
      ],
      "source": "Ohio EPA 208 areawide facility planning prescriptions",
      "note": "field 5 is not referenced directly in fpaLine(); inferred as a count companion to field 4.",
      "confidence": "medium"
    },
    "oef": {
      "topic": "watershed",
      "name": "Ohio EPA nonpoint-source flags",
      "type": "array",
      "fields": [
        "?",
        "[Urban Setting Designation area count, description] or null",
        "[subwatershed name, plan type code ('AMDAT' acid-mine-drainage, 'EPAR5' EPA Region 5, or a nine-element nonpoint plan), year listed] or null"
      ],
      "source": "Ohio EPA Urban Setting Designations; nine-element nonpoint source plans",
      "note": "field 0 (a bare number, e.g. 100) is not referenced by any card function found in template.html; only fields 1 and 2 are confirmed (ambientWellRow()/h2ohioLine()).",
      "confidence": "medium"
    },
    "cdl": {
      "topic": "landcover",
      "name": "Cropland Data Layer",
      "type": "array",
      "fields": [
        "total agricultural acres",
        "cropland acres",
        "corn acres",
        "soybean acres",
        "wheat acres",
        "hay acres",
        "pasture acres",
        "other-crop acres",
        "double-cropped acres"
      ],
      "source": "USDA NASS Cropland Data Layer 2025"
    },
    "lc": {
      "topic": "landcover",
      "name": "Land cover (NLCD)",
      "type": "array",
      "fields": [
        "% developed (open + low + medium + high intensity combined, or a lead developed share)",
        "% impervious surface",
        "% tree canopy",
        "% open water",
        "% barren",
        "% forest",
        "% shrub/scrub",
        "% grassland/herbaceous",
        "% pasture/hay",
        "% cultivated crops",
        "% wetlands",
        "?",
        "?",
        "?"
      ],
      "source": "USGS/MRLC National Land Cover Database 2021",
      "note": "the leading several land-cover-class shares are inferred from NLCD's standard class list and the 14-element length; not individually confirmed in template.html.",
      "confidence": "low"
    },
    "pv": {
      "topic": "landcover",
      "name": "Pre-settlement vegetation",
      "type": "array",
      "fields": [
        "dominant pre-settlement vegetation type",
        "?",
        "?",
        "share (%) of the ZIP mapped, kept only when >= 50"
      ],
      "source": "ODNR Division of Natural Areas and Preserves pre-settlement vegetation mapping",
      "note": "fields 1-2 unconfirmed; only field 0 (vegetation type) and field 3 (the >=50% gate in build.py) are solid.",
      "confidence": "low"
    },
    "rl": {
      "topic": "housing",
      "name": "HOLC redlining grades",
      "type": "array",
      "fields": [
        "share graded A ('Best')",
        "share graded B ('Still Desirable')",
        "share graded C ('Definitely Declining')",
        "share graded D ('Hazardous')",
        "?",
        "?"
      ],
      "source": "Mapping Inequality (University of Richmond), HOLC residential security maps 1935-1940",
      "note": "only present for ZIPs HOLC actually mapped (mostly older cities); the trailing 2 of 6 fields (beyond the four letter-grade shares) are unconfirmed - possibly a dominant-grade label and a total-mapped-share.",
      "confidence": "low"
    },
    "twm": {
      "topic": "wetlands",
      "name": "Topographic-map wetland symbols",
      "type": "array",
      "fields": [
        "count of wetland symbols",
        "acres (kept only when count>=20 or acres>=0.5)"
      ],
      "source": "Ohio EPA hydro/Wetlands_USGSTopoMaps, digitized from USGS 7.5-minute topo maps"
    },
    "at": {
      "topic": "streams",
      "name": "ATTAINS aquatic-life/use assessment",
      "type": "array",
      "fields": [
        "share not supporting aquatic life",
        "share not supporting recreation",
        "share not supporting fish consumption",
        "share not supporting drinking water",
        "share assessed for drinking-water use",
        "share impaired (any use)",
        "share under a TMDL",
        "assessment-unit count",
        "up to 2 [unit name, verdict] rows",
        "up to 3 [impairment cause, share] rows",
        "share assessed for aquatic life",
        "share assessed for recreation",
        "share assessed for fish consumption"
      ],
      "source": "EPA ATTAINS, Ohio 2024 Integrated Report assessment units"
    },
    "atl": {
      "topic": "streams",
      "name": "Lake Erie assessment units",
      "type": "array",
      "fields": [
        "rows of [unit name, aquatic-life status, recreation status, fish-consumption status, drinking-water status or null, share of the ZCTA polygon]"
      ],
      "source": "EPA ATTAINS (Lake Erie units, clipped out of the land shares)"
    },
    "su": {
      "topic": "streams",
      "name": "Stream use designations",
      "type": "object",
      "fields": {
        "mi": "map of {use code (e.g. WWH warmwater habitat, EWH exceptional warmwater habitat): miles of designated stream}",
        "tot": "total designated stream miles crossing the ZIP",
        "ad": "[nearest specially-protected reach name, tier code (SHQW/OSW-Eco/OSW-Rec), extent description, distance (mi), parent water body name] or null",
        "buf": "share (%) of the ZIP within a mile of a specially-protected stream"
      },
      "source": "Ohio EPA water quality standards (aquatic-life use designations, antidegradation tiers)"
    },
    "adp": {
      "topic": "streams",
      "name": "Proposed 2026 antidegradation reaches",
      "type": "array",
      "fields": [
        "miles of stream in this ZIP proposed for a tier (0 if none)",
        "list of [reach name, proposed tier code, description]",
        "nearest proposed reach name (when field 0 is 0)",
        "nearest reach's tier code",
        "nearest reach's description",
        "distance to nearest (mi)"
      ],
      "source": "Ohio EPA proposed 2026 antidegradation tiers"
    },
    "chb": {
      "topic": "streams",
      "name": "Federal critical habitat",
      "type": "array",
      "fields": [
        "rows of [common name, scientific name, ESA status, year designated]"
      ],
      "source": "U.S. Fish and Wildlife Service final critical habitat polygons"
    },
    "fh": {
      "topic": "streams",
      "name": "Local fish-consumption advisories",
      "type": "array",
      "fields": [
        "rows of [water body name, sub-area, advisory frequency text, advisory count, up to 3 [species, frequency] rows, list of pollutants]"
      ],
      "source": "Ohio EPA sport fish consumption advisories"
    },
    "fhg": {
      "topic": "streams",
      "name": "General Lake Erie tributary advisory",
      "type": "array",
      "fields": [
        "rows of [ [ [species, frequency] ], list of pollutants ] for the Lake Erie tributaries steelhead advisory"
      ],
      "source": "Ohio EPA sport fish consumption advisories"
    },
    "pfr": {
      "topic": "streams",
      "name": "River PFAS survey",
      "type": "array",
      "fields": [
        "distance to nearest sampled station (mi)",
        "station name",
        "PFOA at station (ng/L)",
        "PFOS at station (ng/L)",
        "sum of PFAS at station (ng/L)",
        "background-site PFAS sum (ng/L)",
        "confluence-site PFAS sum (ng/L)",
        "background-site PFOS (ng/L)",
        "confluence-site PFOS (ng/L)"
      ],
      "source": "Ohio EPA large-river PFAS survey (EnviroScience)"
    },
    "ea3": {
      "topic": "streams",
      "name": "Nearest aquatic-life assessment station",
      "type": "array",
      "fields": [
        "distance (mi)",
        "station name",
        "water body name",
        "count within radius 1",
        "count within radius 2",
        "count inside ZIP or a third radius count (unconfirmed)",
        "aquatic-life use designation code (e.g. WARMWATER)",
        "fish IBI survey year",
        "IBI score",
        "macroinvertebrate (ICI) survey year",
        "ICI score",
        "narrative macroinvertebrate rating",
        "QHEI habitat score",
        "attainment status",
        "drainage area (sq mi)"
      ],
      "source": "Ohio EPA Monitoring_EA3 layer (IBI, ICI, QHEI and attainment by station)",
      "note": "field 5 (a bare integer between the two radius counts and the use-designation code) is not individually confirmed against template.html.",
      "confidence": "medium"
    },
    "wq": {
      "topic": "wetlands",
      "name": "High-quality wetland/mitigation sites",
      "type": "object",
      "fields": {
        "m": "[mitigation-site name, category code, distance mi, acres, count within radius, county] nearest wetland or stream mitigation site",
        "h": "[nearest high-quality-wetland-site name, manager, count within radius, acres, count within 10 mi (as text), ?] nearest Ohio EPA high-quality wetland site"
      },
      "source": "Ohio EPA high-quality wetland sites and stream/wetland mitigation sites",
      "note": "sub-array element orders reconstructed from wetlandSitesLine()/streamMitigationLine()-style usage; a couple of trailing positions in 'h' were not individually confirmed.",
      "confidence": "medium"
    },
    "vp": {
      "topic": "wetlands",
      "name": "Potential vernal pools",
      "type": "array",
      "fields": [
        "count of potential high-quality vernal pools inside the ZIP",
        "acres"
      ],
      "source": "Ohio EPA screening for potential high-quality vernal pools"
    },
    "weg": {
      "topic": "wetlands",
      "name": "Nearest assessed wetland",
      "type": "array",
      "fields": [
        "name",
        "wetland-type description",
        "ORAM score (of 100) or 0 if not scored",
        "ORAM category label ('Category 1/2/3' or 'N/A')",
        "plant community index (of 100)",
        "acres",
        "survey year",
        "distance (mi)",
        "count inside ZIP",
        "count within 10 miles",
        "kind code ('mitigation', 'rbank' mitigation-bank plot, or a natural-wetland type)"
      ],
      "source": "Ohio EPA Wetland Ecology Group ORAM/VIBI-scored sites"
    },
    "wl": {
      "topic": "wetlands",
      "name": "Wetlands (NWI)",
      "type": "array",
      "fields": [
        "share of land in a mapped wetland",
        "wetland acres",
        "up to 3 [wetland type, acres] rows",
        "wetland polygon count",
        "[largest wetland type, its acres] or null",
        "ZCTA land acres (denominator)"
      ],
      "source": "USFWS National Wetlands Inventory"
    },
    "gw": {
      "topic": "groundwater",
      "name": "Groundwater vulnerability and wells",
      "type": "array",
      "fields": [
        "DRASTIC vulnerability score",
        "hydrogeologic setting code",
        "depth-to-water range (ft, text)",
        "aquifer material/name",
        "dominant soil type",
        "recharge-rate range (in/yr, text)",
        "karst/spring point count inside ZIP",
        "karst points per square mile",
        "drilled well-log count on file",
        "wells per 1,000 residents",
        "median well depth (ft)",
        "median test yield (gpm)",
        "median static water level (ft)",
        "share of wells completed in bedrock",
        "typical well-drilled year",
        "well count since 2000",
        "list of [use type, count] well-use rows",
        "pesticide vulnerability index",
        "field-verified karst/spring point count"
      ],
      "source": "ODNR Division of Geological Survey DRASTIC index; state water well log inventory"
    },
    "geo": {
      "topic": "aquifer",
      "name": "Sensitive geologic setting / karst",
      "type": "array",
      "fields": [
        "karst bedrock code at the population center (0 none, 1 Silurian-Devonian limestone/dolomite, 2 Ordovician limestone/shale)",
        "field-verified sinkhole count",
        "probable sinkhole count",
        "verified spring count",
        "distance to nearest verified sinkhole (mi)",
        "share (%) of the ZIP in an Ohio EPA sensitive geologic setting",
        "drift thickness flag (0/1, used to say 'more/less than 20 ft of drift')"
      ],
      "source": "Ohio EPA Sensitive Geologic Settings; ODNR karst geology"
    },
    "swp": {
      "topic": "aquifer",
      "name": "Source water protection areas",
      "type": "object",
      "fields": {
        "gw": "[share (%) of ZIP in a public-well source water protection area, count of public water systems, list of system names, share (%) inside the inner (1-yr) management zone, susceptibility rating of the largest system's zone, hydrogeologic setting of the largest, name of the largest system, system type e.g. 'Community'] - shown in the aquifer card",
        "sw": "[share (%) draining to a protected river intake, list of intake system names, share (%) in the emergency management zone, list of emergency-zone system names, share (%) in the 1,000-ft stream corridor zone, share (%) in the Lake Erie critical assessment zone, share (%) in the Ohio River zone of concern, list of intake names for the Lake Erie/Ohio River zones] - shown in the watershed card"
      },
      "source": "Ohio EPA DrinkingWater/SWAP source water assessment program"
    },
    "agw": {
      "topic": "groundwater",
      "name": "Nearest ambient groundwater monitoring well",
      "type": "array",
      "fields": [
        "distance (mi)",
        "well/system name",
        "county",
        "well depth (ft)",
        "major lithology code",
        "aquifer name",
        "glacial yield category",
        "depth to bedrock (ft)",
        "sampling status",
        "count within radius",
        "local well name"
      ],
      "source": "Ohio EPA DrinkingWater/Ambient_GW_Monitoring well network"
    },
    "gl": {
      "topic": "groundwater",
      "name": "Nearest groundwater level monitoring well",
      "type": "array",
      "fields": [
        "well name/id",
        "network (USGS or ODNR)",
        "distance (mi)",
        "latest depth to water (ft)",
        "date of latest reading",
        "?",
        "?",
        "?",
        "?",
        "reading count since 2015",
        "record start year"
      ],
      "source": "USGS Water Data OGC API groundwater levels (ODNR and USGS observation wells, since 2015)",
      "note": "this key is not referenced anywhere in template.html yet. Fields 0-4, 9 and 10 are a best-effort guess from the sample's shape (an id/name/network/distance/reading/date followed by a reading count and a start year); fields 5-8 (four more numbers, likely a min/max range and a second date) are not identifiable without the join script.",
      "confidence": "low"
    },
    "so": {
      "topic": "soils",
      "name": "Dominant soil (SSURGO)",
      "type": "array",
      "fields": [
        "septic suitability rating (numeric)",
        "septic suitability label",
        "basement suitability rating (numeric)",
        "basement suitability label",
        "drainage class",
        "hydric flag ('No'/etc.)",
        "farmland classification text",
        "map unit name",
        "dominant soil component name",
        "component percent of map unit",
        "slope (%)",
        "flooding frequency class",
        "ponding frequency class",
        "Ohio septic standard note"
      ],
      "source": "USDA NRCS SSURGO via Soil Data Access, at the ZIP's population-weighted center"
    },
    "ds": {
      "topic": "disasters",
      "name": "Tornadoes, declarations and earthquakes",
      "type": "array",
      "fields": [
        "tornado tracks within 5 miles since 1950",
        "tracks within 1 mile",
        "tracks rated F2/EF2 or stronger",
        "tracks since 2000",
        "list of up to 1 [date, F/EF scale, injuries, deaths, track length mi] worst nearby tornado",
        "federal disaster declaration count for the county since 1956",
        "major-disaster declaration count",
        "list of [declaration type, count] rows",
        "list of up to 1 [type, year] latest declaration",
        "earthquake count M2+ within 25 miles since 1970",
        "largest earthquake magnitude",
        "largest earthquake place name",
        "largest earthquake year",
        "county name"
      ],
      "source": "NOAA Storm Prediction Center tornado database; OpenFEMA disaster declarations; USGS earthquake catalog"
    },
    "fia": {
      "topic": "disasters",
      "name": "FEMA individual assistance registrations",
      "type": "array",
      "fields": [
        "declared-disaster count the ZIP registered under",
        "household registration count",
        "approved-registration count",
        "total approved housing/other-needs assistance ($)",
        "list of [FEMA disaster number, year, disaster title, registrations] by event"
      ],
      "source": "OpenFEMA housing assistance registrations by ZIP (v2)"
    },
    "hm": {
      "topic": "disasters",
      "name": "FEMA-mitigated properties (ZIP)",
      "type": "array",
      "fields": [
        "mitigated property count",
        "list of [mitigation action type, count]",
        "first year",
        "last year (or same as first)",
        "amount paid ($)"
      ],
      "source": "OpenFEMA Hazard Mitigation Assistance mitigated properties (v4)"
    },
    "rac": {
      "topic": "rail",
      "name": "Rail equipment accidents",
      "type": "array",
      "fields": [
        "accident count",
        "derailment count",
        "hazmat-release car count",
        "people evacuated",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "FRA rail equipment accident reports (Form 54) since 2010",
      "note": "only fields 0-3 are confirmed via railDerailLine()-style usage; the remaining 7 of 11 positions are unconfirmed (this ZIP-level key is less used in the UI than the county-level 'crac' table, whose fields are fully confirmed).",
      "confidence": "low"
    },
    "rin": {
      "topic": "rail",
      "name": "Rail grade-crossing incidents",
      "type": "array",
      "fields": [
        "incident count since 2010",
        "?",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "FRA highway-rail grade crossing incident reports (Form 57) since 2010",
      "note": "only field 0 is confirmed as a truthy incident-count gate in habitatLine-style code; the other 5 fields were not individually traced.",
      "confidence": "low"
    },
    "sl": {
      "topic": "spills",
      "name": "Emergency-response spills",
      "type": "array",
      "fields": [
        "spill count since 2021",
        "spills reaching water",
        "up to 3 [product family, count] rows",
        "[gallons, product name, year, city, note] largest spill or null",
        "list of 6 yearly counts, 2021-2026"
      ],
      "source": "Ohio EPA emergency response spill reports"
    },
    "og": {
      "topic": "ogwells",
      "name": "Oil and gas wells",
      "type": "array",
      "fields": [
        "well count inside ZIP",
        "active wells",
        "plugged wells",
        "shale (horizontal Utica/Marcellus) wells",
        "horizontal wells",
        "injection wells",
        "orphan-program wells",
        "wells within 1 mile (if 0 inside)",
        "active wells within 1 mile",
        "distance to nearest well (mi)",
        "nearest well's status",
        "list of up to 2 nearby operator names"
      ],
      "source": "ODNR Division of Oil and Gas Resources public well inventory"
    },
    "mn": {
      "topic": "mines",
      "name": "Abandoned mines",
      "type": "array",
      "fields": [
        "share of land above a mapped abandoned mine",
        "mine acres",
        "mine polygon count",
        "list of up to 3 mine names/types",
        "flag: population center itself is above a mapped mine (0/1)",
        "distance to nearest mapped mine (mi)"
      ],
      "source": "ODNR Mines of Ohio (abandoned underground coal/industrial-mineral mines)"
    },
    "qp": {
      "topic": "mines",
      "name": "Nearest quarry",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city/county",
        "count within radius 1",
        "count within radius 2",
        "count inside ZIP",
        "material type text",
        "operating company",
        "tons sold (latest year on file)",
        "list of [name, material type] rows inside/near the ZIP"
      ],
      "source": "ODNR Division of Geological Survey industrial minerals locations (2015)"
    },
    "pk": {
      "topic": "parks",
      "name": "Parks and protected land",
      "type": "array",
      "fields": [
        "share of land in protected park/forest/wildlife area",
        "protected acres",
        "protected-parcel count",
        "up to 2 [park name, kind, acres] largest local parks",
        "nearest ODNR state park name",
        "distance to that state park (mi)",
        "state park acres",
        "local park count",
        "ZCTA land acres (denominator)"
      ],
      "source": "USGS Protected Areas Database (PAD-US 4.1), Ohio package"
    },
    "pad": {
      "topic": "parks",
      "name": "Protected land ownership detail",
      "type": "array",
      "fields": [
        "share (%) of the ZIP that is protected land (fee-owned parks/preserves/recreation land)",
        "list of [owner type, acres] rows",
        "list of up to several [name, manager, acres] largest sites",
        "share (%) of the ZIP that is protected land open to the public",
        "total protected acres"
      ],
      "source": "USGS Protected Areas Database 4.1, fee-managed lands overlay"
    },
    "trl": {
      "topic": "parks",
      "name": "Trails",
      "type": "array",
      "fields": [
        "miles of named trails crossing the ZIP",
        "list of [trail name, category, miles, state?] named trails",
        "nearest named trail (when none cross)",
        "?",
        "distance to that nearest trail (mi)",
        "miles of state bike route through the ZIP",
        "list of state bike route names",
        "miles of trail proposed or planned"
      ],
      "source": "ODNR statewide trails inventory and state bike routes"
    },
    "od": {
      "topic": "parks",
      "name": "Nearest ODNR facilities",
      "type": "array",
      "fields": [
        "boat ramp row: [distance mi, name, park/site name, count within 5 miles] or null",
        "fishing access row: same shape, or null",
        "swim area row: same shape, or null",
        "campground row: same shape, or null"
      ],
      "source": "ODNR Office of Coastal Management facility point layers (boat ramps, fishing access, swim areas, campgrounds)"
    },
    "eb": {
      "topic": "parks",
      "name": "Lake Erie public access",
      "type": "array",
      "fields": [
        "distance to nearest access site (mi)",
        "access site name",
        "water body",
        "managing agency",
        "count within radius 1",
        "count within radius 2",
        "count inside ZIP",
        "distance to nearest swim beach (mi)",
        "swim beach name",
        "swim beach water body",
        "swim beach managing agency",
        "count of swim beaches within radius",
        "'lake' or 'river' classification of the nearest access site"
      ],
      "source": "ODNR Office of Coastal Management Lake Erie public access inventory"
    },
    "lk": {
      "topic": "watershed",
      "name": "Lake Erie Coastal Management Area share",
      "type": "number",
      "fields": [
        "share (%, 0-100) of the ZIP inside Ohio's Coastal Management Area boundary"
      ],
      "source": "ODNR Office of Coastal Management CMA boundary"
    },
    "elv": {
      "topic": "watershed",
      "name": "Nearest Lake Erie gauge",
      "type": "array",
      "fields": [
        "NOAA CO-OPS station id",
        "distance (mi)"
      ],
      "source": "NOAA CO-OPS Lake Erie water-level gauges at Toledo, Marblehead, Cleveland and Fairport Harbor"
    },
    "h2": {
      "topic": "watershed",
      "name": "Nearest H2Ohio project",
      "type": "array",
      "fields": [
        "distance (mi)",
        "project name",
        "location/place",
        "count within 5 miles",
        "count within 15 miles",
        "count inside ZIP",
        "year funded",
        "status",
        "description text (truncated ~160 chars)",
        "list of project names inside ZIP"
      ],
      "source": "ODNR H2Ohio project points (Office of Coastal Management)"
    },
    "wg": {
      "topic": "watershed",
      "name": "Nearest watershed grant project",
      "type": "array",
      "fields": [
        "count of state/federal runoff projects inside ZIP",
        "nearest project name",
        "nearest project's organization",
        "nearest project type",
        "nearest project's funding source code (e.g. '319')",
        "distance (mi)",
        "count within 10 miles",
        "list of [funding source code, count] rows"
      ],
      "source": "Ohio EPA Section 319/GLRI/SWIF nonpoint source project lists"
    },
    "chl": {
      "topic": "watershed",
      "name": "Nearest chloride-reduction grant",
      "type": "array",
      "fields": [
        "grantee name",
        "grant type (e.g. 'Equipment')",
        "program year",
        "distance (mi)",
        "grant count inside ZIP",
        "?",
        "county name"
      ],
      "source": "H2Ohio road-salt/chloride reduction grants",
      "note": "field 5 is not referenced directly in h2ohioLine(); the county-level 'cchl' table supplies the county count shown alongside it instead.",
      "confidence": "medium"
    },
    "nwp": {
      "topic": "streams",
      "name": "401 nationwide-permit eligibility",
      "type": "array",
      "fields": [
        "share (%) eligible for the Army Corps' blanket nationwide permit outright",
        "share (%) eligible after field screening (drains toward high-quality waters)",
        "share (%) ineligible, requiring an individual Ohio EPA 401 review"
      ],
      "source": "Ohio EPA 401 water quality certification map of nationwide permit eligibility"
    },
    "gn": {
      "topic": "historic",
      "name": "USGS named places (GNIS)",
      "type": "object",
      "fields": {
        "pp": "list of named populated-place names (hamlets/crossroads included)",
        "ppn": "named-place count (may exceed len(pp) when truncated)",
        "st": "list of named streams ending in this ZIP",
        "stn": "named-stream count",
        "lk": "list of named lakes/reservoirs",
        "lkn": "named lake/reservoir count",
        "sm": "list of named summits",
        "smn": "named-summit count",
        "ot": "map of {other GNIS feature class (valleys, islands, swamps, waterfalls, springs, canal features, ridges, beaches, cliffs, bays, points and capes, natural arches, rapids, caves): count}"
      },
      "source": "USGS Geographic Names Information System, domestic names for Ohio"
    },
    "hs": {
      "topic": "historic",
      "name": "National Register listings",
      "type": "array",
      "fields": [
        "listing count inside ZIP",
        "nearest listing name",
        "nearest listing city",
        "distance (mi)",
        "count within radius 1",
        "count within radius 2",
        "resource type code",
        "certification year (4-digit, decoded from a 2-digit CertDate)",
        "National Historic Landmark flag (0/1)",
        "up to 3 [name, resource type, isNHL] rows inside/near"
      ],
      "source": "National Park Service National Register of Historic Places point file"
    },
    "hx": {
      "topic": "history",
      "name": "Local history pointer",
      "type": "array",
      "fields": [
        "settlement/founding year",
        "dominant local-government unit key (P<FIPS>) whose bundle holds the research",
        "county name of the research bundle",
        "which founding field gave the year: 'settled', 'platted', or 'incorporated'"
      ],
      "source": "data/history research bundles (see data/history/bundles/<County>.json), fetched on demand"
    },
    "he": {
      "topic": "health",
      "name": "Adult health estimates (PLACES)",
      "type": "array",
      "fields": [
        "% fair/poor health",
        "% obesity",
        "% diabetes",
        "% current smoking",
        "% depression",
        "% uninsured",
        "% physically inactive",
        "% high blood pressure",
        "% COPD",
        "% any disability",
        "% food insecure",
        "% no routine checkup",
        "% no dental visit",
        "% binge drinking",
        "% cancer (excluding skin)",
        "% frequently lonely/isolated",
        "% frequent poor mental health days",
        "% short sleep (<7 hrs)"
      ],
      "source": "CDC PLACES 2025 release, ZCTA model-based estimates (BRFSS 2023, ACS)"
    },
    "hxx": {
      "topic": "health",
      "name": "Additional PLACES health measures",
      "type": "array",
      "fields": [
        "% current asthma",
        "% coronary heart disease",
        "% stroke",
        "% arthritis",
        "% taking blood-pressure medication",
        "% cholesterol screened",
        "% housing insecure",
        "% lacking reliable transportation",
        "% lacking emotional support",
        "% threatened with utility shutoff"
      ],
      "source": "CDC PLACES 2025, ZCTA measures (CASTHMA/CHD/STROKE/ARTHRITIS/BPMED/CHOLSCREEN/HOUSINSECU/LACKTRPT/EMOTIONSPT/SHUTUTILITY)"
    },
    "hq": {
      "topic": "health",
      "name": "Health Professional Shortage Areas",
      "type": "array",
      "fields": [
        "primary-care HPSA score or flag",
        "dental HPSA score or flag",
        "mental-health HPSA score or flag",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "HRSA Health Professional Shortage Area designations",
      "note": "the exact 9-field breakdown (tract vs county component weighting for each of primary care/dental/mental health per the layers_meta comment) was not confirmed against any card in template.html.",
      "confidence": "low"
    },
    "le": {
      "topic": "lifeexp",
      "name": "Life expectancy",
      "type": "array",
      "fields": [
        "estimated life expectancy at birth (years)",
        "census-tract count averaged",
        "lowest tract estimate",
        "highest tract estimate",
        "coverage share",
        "tracts missing an estimate"
      ],
      "source": "CDC/NCHS USALEEP (2010-2015 deaths, 2010 tracts)"
    },
    "hp": {
      "topic": "hospital",
      "name": "Nearest hospital",
      "type": "array",
      "fields": [
        "distance (mi)",
        "hospitals within radius 1",
        "hospitals within radius 2",
        "bed count",
        "name",
        "city",
        "trauma designation",
        "hospital kind ('general'/'critical-access')",
        "list of hospitals inside ZIP",
        "Medicare overall star rating",
        "has-emergency-department flag (0/1) or null",
        "median ED wait time (minutes)",
        "[HCAHPS overall rating, ?, ?, ?] patient-experience scores",
        "[metric, comparison label] rows for CMS Complications and Deaths measures",
        "parent hospital name (Medicare figures a satellite campus carries) or null",
        "relation to parent ('campus' or 'same_provider') or null"
      ],
      "source": "HIFLD hospitals inventory; CMS Care Compare star ratings, HCAHPS, Complications and Deaths; CMS OP_18b median ED time"
    },
    "nh": {
      "topic": "nursing",
      "name": "Nearest nursing home",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "homes within radius 1",
        "homes within radius 2",
        "homes inside ZIP",
        "bed count",
        "overall star rating",
        "health-inspection star rating",
        "staffing star rating",
        "ownership type",
        "abuse-icon flag (0/1)",
        "estimated occupancy or fine-adjacent figure",
        "up to 3 [name, overall rating, staffing rating] rows inside/near",
        "total fines ($)",
        "fine count",
        "payment-denial count",
        "date of most recent penalty"
      ],
      "source": "CMS Care Compare nursing home provider and penalties files"
    },
    "fs": {
      "topic": "fire",
      "name": "Nearest fire/EMS station",
      "type": "array",
      "fields": [
        "distance (mi)",
        "stations within 3 miles",
        "stations within 8 miles",
        "name",
        "city",
        "list of up to 3 station names inside the ZIP",
        "count of stations inside the ZIP"
      ],
      "source": "USGS National Map structures inventory, fire and EMS stations"
    },
    "po": {
      "topic": "police",
      "name": "Nearest police station",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "stations within 3 miles",
        "stations within a wider radius",
        "stations inside ZIP",
        "list of up to 4 station names inside the ZIP",
        "list of up to 1 [nearby department name, distance mi] row"
      ],
      "source": "USGS National Map structures inventory, police stations"
    },
    "pf": {
      "topic": "police",
      "name": "Nearest post office",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "post offices within radius",
        "count inside ZIP",
        "list of up to 4 names inside the ZIP"
      ],
      "source": "USGS National Map structures inventory, post offices",
      "note": "not to be confused with the system-level 'pf' field, which holds PFAS occurrence data."
    },
    "cr": {
      "topic": "crime",
      "name": "Crime (NIBRS)",
      "type": "array",
      "fields": [
        "reporting agency name",
        "agency type",
        "agency population covered",
        "violent offense count",
        "property offense count",
        "homicide count",
        "rape count",
        "robbery count",
        "aggravated assault count",
        "burglary count",
        "larceny/theft count",
        "motor vehicle theft count",
        "arson count",
        "violent rate per 1,000",
        "property rate per 1,000",
        "months of 2024 on file",
        "prior-year (2023) violent count",
        "prior-year property count",
        "?",
        "?",
        "?",
        "coverage/annualization flag or null"
      ],
      "source": "FBI Crime Data Explorer NIBRS incident files, 2024 (2023 for trend)",
      "note": "fields 18-20 (three trailing numbers before the final flag) are not individually confirmed against a template.html usage; the rest follow crimeRate()-style consumption in the card and are solid.",
      "confidence": "medium"
    },
    "lb": {
      "topic": "library",
      "name": "Nearest library outlet",
      "type": "array",
      "fields": [
        "distance (mi)",
        "outlets within 3 miles",
        "outlets within 8 miles",
        "outlet name",
        "system name",
        "city",
        "outlet type ('branch'/'central'/etc.)",
        "weekly open hours",
        "annual visits",
        "visits per capita",
        "circulation (annual)",
        "program count",
        "program attendance",
        "service-area income",
        "service-area population",
        "list of up to 3 outlet names inside the ZIP",
        "list (reserved, currently empty)",
        "weeks open a year",
        "count of outlets inside the ZIP"
      ],
      "source": "IMLS Public Libraries Survey FY2024 outlet and system files"
    },
    "mu": {
      "topic": "library",
      "name": "Nearest museum",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "museums within radius 1",
        "museums within radius 2",
        "count inside ZIP",
        "list of up to 3 names inside/near",
        "kind (e.g. 'historical society')"
      ],
      "source": "IMLS Museum Data Files 2018"
    },
    "fd": {
      "topic": "food",
      "name": "Food access",
      "type": "array",
      "fields": [
        "% living 1+ mile from a supermarket (urban threshold)",
        "% living 0.5+ mile (urban low-access alt.)",
        "% living 10+ miles (rural threshold)",
        "share designated low-income low-access (LILA)",
        "LILA vehicle-access share",
        "% low income",
        "% below poverty",
        "SNAP participation figure (legacy, not printed)",
        "no-vehicle households figure (legacy, not printed)",
        "% urban",
        "census tract count",
        "LILA tract count"
      ],
      "source": "USDA Food Access Research Atlas (2010 tracts); Census ACS B25044 no-vehicle households"
    },
    "sn": {
      "topic": "food",
      "name": "Nearest SNAP retailer",
      "type": "array",
      "fields": [
        "retailers within radius 1",
        "?",
        "retailers within radius 2",
        "?",
        "?",
        "retailers inside ZIP",
        "nearest retailer name",
        "nearest retailer store type",
        "distance (mi)",
        "count within a further radius",
        "name of a second nearby retailer",
        "distance to that second retailer (mi)"
      ],
      "source": "USDA FNS SNAP retailer locations, 2026",
      "note": "only the retailer-name/type/distance triplet is confidently placed from the sample's readable strings; the surrounding count fields (0-5, 9) were not individually confirmed against template.html.",
      "confidence": "low"
    },
    "ch": {
      "topic": "chargers",
      "name": "EV chargers",
      "type": "array",
      "fields": [
        "distance to nearest DC fast charger (mi)",
        "DC fast charger name",
        "DC fast charger city",
        "network name",
        "port count",
        "distance to nearest charger of any kind (mi)",
        "nearest any-kind charger name",
        "chargers within 5 miles",
        "DC fast chargers within 5 miles",
        "chargers inside ZIP",
        "level-2 chargers inside ZIP",
        "DC fast chargers inside ZIP",
        "up to 3 [network, count] rows",
        "free-to-use charger count"
      ],
      "source": "NREL Alternative Fuels Data Center station list"
    },
    "dtr": {
      "topic": "env",
      "name": "Nearest tire drop-off site",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "sites within radius",
        "count inside ZIP"
      ],
      "source": "Ohio EPA Scrap_Tire_Drop_Off_Sites"
    },
    "dba": {
      "topic": "env",
      "name": "Nearest battery drop-off site",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "sites within radius",
        "count inside ZIP"
      ],
      "source": "Ohio EPA Battery_Drop_off_Sites"
    },
    "tr": {
      "topic": "transit",
      "name": "Transit access",
      "type": "array",
      "fields": [
        "share of residents within half a mile of a transit stop",
        "stop count",
        "rail-stop count",
        "list of up to 3 [agency, stop count] rows",
        "distance to nearest stop when share is 0 (mi)",
        "[remaining-agency count, remaining stop count] when more than 3 agencies serve the ZIP (optional trailing element)"
      ],
      "source": "USDOT BTS National Transit Map + regional GTFS feeds"
    },
    "wk": {
      "topic": "walk",
      "name": "Walkability",
      "type": "array",
      "fields": [
        "EPA National Walkability Index score",
        "percentile (0-100)",
        "intersection density",
        "population count (denominator)",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "EPA National Walkability Index (Smart Location Database 3.0)",
      "note": "only the first two fields (index score and percentile) are used directly by name in the metric bin function; fields 2-7 are unconfirmed.",
      "confidence": "low"
    },
    "rx": {
      "topic": "rail",
      "name": "Rail crossings",
      "type": "array",
      "fields": [
        "public at-grade crossing count",
        "private crossing count",
        "gated crossing count",
        "busiest crossing's trains per day",
        "busiest crossing's timetable speed (mph)",
        "list of up to 3 railroad names",
        "distance to nearest crossing (mi)",
        "nearest crossing's railroad name"
      ],
      "source": "FRA Grade Crossing Inventory"
    },
    "br": {
      "topic": "bridges",
      "name": "Bridges (NBI)",
      "type": "array",
      "fields": [
        "bridge count",
        "poor-condition count",
        "share poor (fraction)",
        "median year built",
        "[year, route, feature crossed] oldest bridge",
        "[ADT, route/name, feature crossed, year built] busiest bridge",
        "up to 1 [name, feature crossed, year, ADT] row of a notably old/poor bridge",
        "up to 2 [owner type, count] rows",
        "bridges built before 1950"
      ],
      "source": "FHWA National Bridge Inventory 2025"
    },
    "tf": {
      "topic": "traffic",
      "name": "Busiest road segment",
      "type": "array",
      "fields": [
        "average daily traffic (ADT) of the busiest counted segment",
        "route name",
        "second-busiest segment ADT",
        "count year",
        "sum of ADT across segments (or a related aggregate)",
        "segment count",
        "a smaller related count",
        "[ADT, route name] busiest non-interstate/local road",
        "another ADT figure"
      ],
      "source": "ODOT Transportation Information Mapping System, 2025 annual average daily traffic"
    },
    "tv": {
      "topic": "travel",
      "name": "Nearest airports and Amtrak",
      "type": "array",
      "fields": [
        "distance to nearest scheduled-service airport (mi)",
        "airport name",
        "airport city",
        "airport IATA/FAA code",
        "distance to nearest public-use (general aviation) airport (mi)",
        "GA airport name",
        "GA airport city",
        "GA airport id",
        "distance to nearest Amtrak station (mi)",
        "station name",
        "station city"
      ],
      "source": "FAA airport facilities; Amtrak stations via USDOT BTS"
    },
    "fc": {
      "topic": "traffic",
      "name": "Traffic crashes (FARS)",
      "type": "array",
      "fields": [
        "fatal crash count 2020-2024",
        "fatality count",
        "pedestrian fatalities",
        "cyclist/motorcyclist fatalities",
        "?",
        "?",
        "?",
        "[road name, crash count] worst road",
        "series start year",
        "series end year"
      ],
      "source": "NHTSA Fatality Analysis Reporting System 2020-2024",
      "note": "fields 4-6 are not individually confirmed against template.html; the leading fatal-crash/fatality counts and the trailing [road,count]/year-range fields follow the sample's readable structure.",
      "confidence": "low"
    },
    "ho": {
      "topic": "housing",
      "name": "Home value and household basics",
      "type": "array",
      "fields": [
        "median home value ($)",
        "median gross rent ($)",
        "median household income ($)",
        "owner-occupied share",
        "median year built",
        "population 25+ used elsewhere for education (denominator, duplicated from 'pe')",
        "median commute time (minutes)",
        "commute mode share or time figure",
        "share working from home",
        "share living in a mobile home",
        "share rent-burdened (30%+ of income)",
        "share with no vehicle",
        "share in detached single-family homes",
        "share in apartment buildings"
      ],
      "source": "Census ACS 2020-2024 5-year by ZCTA (housing/commute tables)"
    },
    "hv": {
      "topic": "homeprices",
      "name": "FHFA house price index change",
      "type": "array",
      "fields": [
        "10-year % change (null if unavailable)",
        "5-year % change",
        "1-year (latest year) % change",
        "series start year",
        "latest year in the series",
        "index level vs. 2000 (2000=100)"
      ],
      "source": "FHFA House Price Index, annual ZIP all-transactions series"
    },
    "zv": {
      "topic": "homeprices",
      "name": "Zillow home value and rent",
      "type": "array",
      "fields": [
        "Zillow Home Value Index ($, typical value)",
        "as-of month (YYYY-MM)",
        "1-year % change in value",
        "5-year % change in value",
        "10-year % change in value",
        "Zillow Observed Rent Index ($/month)",
        "as-of month for rent (YYYY-MM)",
        "1-year % change in rent"
      ],
      "source": "Zillow Home Value Index and Observed Rent Index by ZIP (Zillow Research)"
    },
    "ls": {
      "topic": "homeprices",
      "name": "Realtor.com market snapshot",
      "type": "array",
      "fields": [
        "as-of month (YYYYMM)",
        "median asking price ($)",
        "% change in price year-over-year",
        "active listing count",
        "new listings this month",
        "median days on market",
        "% change in days-on-market year-over-year",
        "% of listings with a price cut",
        "median price per square foot ($)",
        "median square footage of active listings",
        "an additional market metric (unconfirmed)",
        "data-quality flag ('1' = Realtor.com flags this month's figures as low quality)"
      ],
      "source": "Realtor.com residential listing metrics by ZIP",
      "note": "field 10 is present in the array but not referenced by marketLine(); its meaning (possibly months-of-supply or a list-to-sold ratio) is unconfirmed.",
      "confidence": "medium"
    },
    "hh": {
      "topic": "houses",
      "name": "Houses summary",
      "type": "array",
      "fields": [
        "depth (2 deep with characteristics, 1 deep without characteristics, 0 thin parcel list)",
        "home count",
        "[single-family, 2-family, 3-family, condo, mobile, farm, apartment, other] counts by kind",
        "median year built",
        "share built before 1950",
        "share built before 1978",
        "median living area (sq ft)",
        "median lot size (acres, condos excluded)",
        "median appraised total value ($)",
        "tax year of those values",
        "[sales in the 12 months to the snapshot, median price] or null",
        "[sales in 5 years, median price, median price per sq ft] or null",
        "owner-occupied share",
        "company-owned share",
        "neighborhood count",
        "subdivision count",
        "main county",
        "pack name",
        "snapshot date of the main source",
        "sales-rule version ('v'/'a'/null)",
        "list of source slugs (keys into county_tables.hhs)",
        "share of dated homes carrying a county's stand-in placeholder year",
        "homes with a recorded year built"
      ],
      "source": "county auditor parcel records / OGRIP Ohio Statewide Parcels, joined by scripts/join_parcels.py",
      "note": "field order copied verbatim from data/parcels/pack_index.json's own 'hh' documentation (the per-house pack's model field), which this ZIP-level summary mirrors."
    },
    "bp": {
      "topic": "permits",
      "name": "Building permits (Census BPS)",
      "type": "array",
      "fields": [
        "permit-office jurisdiction name",
        "jurisdiction kind ('c' city, 't' township, 'k' county)",
        "jurisdiction population",
        "total units permitted 2016-2025",
        "single-family units",
        "multi-family (5+) units",
        "units in buildings of under 5 units (duplex/triplex/quad)",
        "total construction value ($ millions)",
        "units in the latest year",
        "units per 1,000 residents",
        "office coverage code ('d' place-level BPS, 'u' a second place code, 'c' county-level)",
        "short jurisdiction label",
        "[monthly-or-annual figures for] year-to-date units, when available",
        "share of the ZIP this jurisdiction covers"
      ],
      "source": "Census Bureau Building Permits Survey, annual place files 2016-2025"
    },
    "pm2": {
      "topic": "permits",
      "name": "Permit records v2 (house-by-house ledger, ZIP summary)",
      "type": "array",
      "fields": [
        "permit count on file",
        "houses with at least one permit",
        "[19 category counts] by permit type (PM2_CATS order: new/demo/add/solar/pool/roof/ext/deck/fence/garage/hvac/elec/plumb/fix/remodel/comm/multi/sign/other)",
        "[11 yearly totals] permits by year",
        "total permit value ($)",
        "[typical value by a few categories, e.g. by permit-category group]",
        "a count, possibly commercial or multi-unit permits (unconfirmed)",
        "list of [contractor name, permit count] rows",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "data/permits/v2/sources.json house-by-house permit ledger, 17 open sources",
      "note": "this is the pre-built ZIP-level summary from scripts/join_permits_v2.py (a raw passthrough in build.py, not assembled field-by-field there); it is a different, smaller structure from the per-house records inside the on-demand data/permits/v2pack/<County>.<n>.json ledger packs that ledgerRender()/pm2Block() in template.html actually render in detail. Only the leading permit/house counts, the category-count and yearly-count sub-arrays (their own order is confirmed from PM2_CATS/PM2_LABEL) and the trailing contractor list are reasonably confident; the remaining 6 of 14 fields are unconfirmed.",
      "confidence": "low"
    },
    "tx": {
      "topic": "tax",
      "name": "School property tax",
      "type": "array",
      "fields": [
        "effective millage (weighted across districts)",
        "gross millage",
        "homestead/rollback credit millage",
        "up to 2 [district name, resident share, effective mills, gross mills, county, current operating mills, bond mills, permanent-improvement mills, emergency mills, inside/unvoted mills, substitute mills, library-recreation-safety mills] rows"
      ],
      "source": "Ohio Department of Taxation, Aggregate Property Tax Rates by School District (DTE 515), tax year 2025"
    },
    "jb": {
      "topic": "jobs",
      "name": "Jobs and commuting (LEHD)",
      "type": "array",
      "fields": [
        "jobs located in the ZIP",
        "employed residents",
        "jobs per resident worker",
        "share of local jobs paying $3,333+/month",
        "up to 3 [sector name, job count] rows",
        "up to 4 [destination ZIP, share] top commute destinations",
        "share of residents who both live and work in the ZIP",
        "commuter count (residents working elsewhere)",
        "share of residents' own jobs paying $3,333+/month",
        "[6 monthly-earnings-tercile or sector shares] figure",
        "share commuting out of state"
      ],
      "source": "Census LEHD LODES 8, 2023"
    },
    "pe": {
      "topic": "people",
      "name": "Education, race and origin",
      "type": "array",
      "fields": [
        "% bachelor's degree or higher",
        "% graduate/professional degree",
        "% high school or less",
        "% white",
        "% Black",
        "% Hispanic or Latino",
        "% Asian",
        "% other/two-or-more races",
        "% foreign-born",
        "% veterans (of adults)",
        "adults 25+ count (denominator)",
        "% under 18",
        "% 65 or older"
      ],
      "source": "Census ACS 2020-2024 5-year by ZCTA (B15003, B03002, B05002, B21001)"
    },
    "ax": {
      "topic": "people",
      "name": "ACS extra measures, batch 1",
      "type": "array",
      "fields": [
        "? (B25002/B25004 vacancy measure, position unconfirmed)",
        "? (vacancy measure)",
        "? (vacancy measure)",
        "? (vacancy measure)",
        "? (B25091 owner housing cost measure)",
        "? (owner cost measure)",
        "? (owner cost measure)",
        "? (owner cost measure)",
        "average household size (people per household)",
        "% living alone",
        "% married-couple households",
        "% below poverty line",
        "% children below poverty",
        "% 65+ below poverty",
        "Gini index of income inequality",
        "labor force participation rate (inferred, B23025, not individually confirmed)",
        "unemployment rate (inferred, B23025, not individually confirmed)"
      ],
      "source": "Census ACS 2020-2024: B25002/B25004 vacancy, B25091 owner costs, B25010 household size, B11001 household type, B17001 poverty by age, B19083 Gini index, B23025 labor force",
      "note": "indices 8-14 (household size, living alone, married couples, poverty, Gini) are confirmed directly from peoplePanel()'s indexing. Indices 0-7 (vacancy and owner-cost measures, 4 values each is a guess at the B25002/B25004 and B25091 split) and 15-16 (labor force, tentatively) are positional placeholders only, filled in to match the observed 17-element length rather than guessed as concrete numbers.",
      "confidence": "medium"
    },
    "ay": {
      "topic": "people",
      "name": "ACS extra measures, batch 2",
      "type": "array",
      "fields": [
        "? (B25034 year-built measure)",
        "? (year-built measure)",
        "? (B25081 mortgage measure)",
        "? (mortgage measure)",
        "? (B25014 crowding measure)",
        "? (crowding measure)",
        "? (B19001 income-bin measure)",
        "? (income-bin measure)",
        "? (income-bin measure)",
        "? (income-bin measure)",
        "? (C24010 occupation-category measure)",
        "? (occupation measure)",
        "? (occupation measure)",
        "? (occupation measure)",
        "? (B24080 class-of-worker measure)",
        "? (class-of-worker measure)",
        "? (unassigned)",
        "% moved in the last year (confirmed)",
        "% moved from another state (confirmed)",
        "% moved from abroad (confirmed)",
        "% limited-English-speaking households (confirmed)",
        "% Spanish spoken at home (confirmed)",
        "? (unassigned)",
        "? (unassigned)",
        "? (unassigned)",
        "? (unassigned)",
        "? (unassigned)",
        "? (unassigned)",
        "list of up to several [ancestry, %] rows (confirmed)"
      ],
      "source": "Census ACS 2020-2024: B25034 year built, B25081 mortgages, B25014 crowding, B19001 income bins, B04006 ancestry, B07003 residence a year earlier, C16002 limited English, C24010 occupations, B24080 class of worker",
      "note": "only indices 17-21 (movers, limited English/Spanish) and 28 (ancestry list) are confirmed directly from peoplePanel()'s indexing. Indices 0-16 and 22-27 (23 of the 29 fields) are unfilled positional placeholders matching the observed length, not guessed values; they plausibly hold the year-built/mortgage/crowding/income-bin (housing) and occupation/class-of-worker (jobs) measures named in the source comment, in some order.",
      "confidence": "medium"
    },
    "az": {
      "topic": "people",
      "name": "ACS extra measures, batch 3",
      "type": "array",
      "fields": [
        "? (B25075 home-value-distribution measure)",
        "? (value-distribution measure)",
        "? (B19301 per-capita income, $)",
        "? (B25039 year-moved-in measure)",
        "? (B25071/B25092 cost-burden measure)",
        "? (cost-burden measure)",
        "? (B08303 travel-time-to-work measure)",
        "? (unassigned)",
        "% households with children (confirmed)",
        "% households with someone 65+ (confirmed)",
        "% seniors living alone (confirmed)",
        "% of people 15+ currently married (confirmed)",
        "% never married (confirmed)",
        "% divorced (confirmed)",
        "% widowed (confirmed)"
      ],
      "source": "Census ACS 2020-2024: B25075 value distribution, B19301 per capita income, B25039 year moved in, B25071/B25092 cost burden, B08303 travel time, B11005/B11007 households with children/seniors, B12001 marital status",
      "note": "indices 8-14 (households with children/seniors, marital status) are confirmed directly from peoplePanel()'s indexing. Indices 0-7 (8 of the 15 fields) are unfilled positional placeholders matching the observed length, not guessed values; they plausibly hold the value-distribution/per-capita-income/year-moved-in/cost-burden/travel-time measures named in the source comment, in some order.",
      "confidence": "medium"
    },
    "gq": {
      "topic": "people",
      "name": "Group quarters population",
      "type": "array",
      "fields": [
        "total in group quarters",
        "in prisons/jails",
        "in juvenile facilities",
        "in nursing facilities",
        "in other institutions",
        "in college housing",
        "in military quarters",
        "in other noninstitutional group housing (shelters, group homes, worker dormitories)",
        "total population counted (denominator)"
      ],
      "source": "2020 Census PL 94-171 group quarters population (table P5)"
    },
    "ru": {
      "topic": "people",
      "name": "Rural-urban commuting area",
      "type": "array",
      "fields": [
        "primary RUCA code",
        "secondary RUCA code"
      ],
      "source": "USDA ERS rural-urban commuting area codes, 2020 edition"
    },
    "fbo": {
      "topic": "people",
      "name": "Foreign-born origins",
      "type": "array",
      "fields": [
        "count born abroad",
        "list of up to 3 [country, count] top countries of birth"
      ],
      "source": "Census ACS B05006 place of birth of the foreign-born"
    },
    "pvs": {
      "topic": "schools",
      "name": "Private schools",
      "type": "array",
      "fields": [
        "school count inside ZIP",
        "total enrollment",
        "up to 3 [school name, enrollment, affiliation] rows",
        "count within a wider radius"
      ],
      "source": "NCES Private School Survey 2023-24"
    },
    "npp": {
      "topic": "health",
      "name": "NPPES active health-care providers",
      "type": "array",
      "fields": [
        "total active providers by practice ZIP",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "list of up to several [specialty, provider count] rows"
      ],
      "source": "NPPES NPI registry, August 2026 monthly file",
      "note": "not referenced anywhere in template.html yet; only the presence of a total count (field 0) and a trailing [specialty,count] list (last field) are confident. The 10 fields in between (likely a split between individual/Type-1 and organizational/Type-2 providers, and counts for a few named specialties) are unconfirmed guesses.",
      "confidence": "low"
    },
    "mb": {
      "topic": "mobile",
      "name": "Cell coverage",
      "type": "array",
      "fields": [
        "share with 5G from any carrier",
        "share with 4G LTE from any carrier",
        "share with AT&T 4G",
        "share with T-Mobile 4G",
        "share with Verizon 4G",
        "share with AT&T 5G",
        "share with T-Mobile 5G",
        "share with Verizon 5G",
        "H3 hexagons sampled (denominator)"
      ],
      "source": "FCC Mobile Broadband Data Collection (carrier-reported 4G LTE/5G, H3 hexagons)"
    },
    "bb": {
      "topic": "broadband",
      "name": "Fixed broadband availability",
      "type": "array",
      "fields": [
        "share served (100/20 Mbps+)",
        "share underserved",
        "share unserved",
        "share with fiber available",
        "share with cable available",
        "broadband-serviceable location count (denominator)",
        "prior-year served share or null"
      ],
      "source": "FCC Broadband Data Collection, June 2024, fixed availability by H3 hexagon"
    },
    "ia": {
      "topic": "broadband",
      "name": "Internet subscriptions (ACS)",
      "type": "array",
      "fields": [
        "share with a wired broadband subscription",
        "share with no internet subscription",
        "share with a cellular data plan only",
        "households sampled (denominator)"
      ],
      "source": "Census ACS 2020-2024 B28002 internet subscriptions"
    },
    "ok": {
      "topic": "broadband",
      "name": "Measured fixed speeds (Ookla)",
      "type": "array",
      "fields": [
        "typical download speed (Mbps)",
        "typical upload speed (Mbps)",
        "typical latency (ms)",
        "test count",
        "map-tile count",
        "device count"
      ],
      "source": "Ookla Open Data fixed speed tests, April-June 2025"
    },
    "om": {
      "topic": "mobile",
      "name": "Measured mobile speeds (Ookla)",
      "type": "array",
      "fields": [
        "typical download speed (Mbps)",
        "typical upload speed (Mbps)",
        "typical latency (ms)",
        "test count",
        "map-tile count",
        "device count"
      ],
      "source": "Ookla Open Data mobile speed-test tiles, April-June 2026"
    },
    "tw": {
      "topic": "mobile",
      "name": "Registered antenna towers",
      "type": "array",
      "fields": [
        "towers registered inside ZIP",
        "towers within 3 miles",
        "[height ft, structure type, FCC registration id] tallest tower inside (optional)",
        "distance to nearest tower when none inside (mi)",
        "[height ft, structure type] nearest tower when none inside"
      ],
      "source": "FCC Antenna Structure Registration database, September 2026"
    },
    "sw": {
      "topic": "sewage",
      "name": "Nearest sewage treatment plant",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "plants within radius 1",
        "plants within radius 2",
        "plants inside ZIP",
        "design flow (MGD)",
        "average flow (MGD)",
        "significant-noncompliance status",
        "quarters in noncompliance",
        "major-facility flag (0/1)",
        "combined-sewer-overflow flag (0/1)",
        "current violation status text",
        "formal enforcement action count",
        "quarters in the last 90-day compliance window with a violation",
        "up to 4 [name, distance, ?, ?] rows of other nearby permit holders"
      ],
      "source": "EPA ECHO Clean Water Act NPDES facilities with a POTW component"
    },
    "cl": {
      "topic": "colleges",
      "name": "Nearest college/university",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "count within radius 1",
        "count within radius 2",
        "count inside ZIP",
        "list of up to 4 names inside/near",
        "list of up to 1 [name, distance] next-nearest row",
        "sector text (e.g. 'for-profit college')",
        "enrollment (12-month)",
        "in-state tuition ($)",
        "out-of-state tuition ($)",
        "graduation rate (%)",
        "graduation-rate cohort kind ('six-year bachelor' etc.)",
        "graduation-rate cohort size",
        "distance-education tuition ($) when applicable"
      ],
      "source": "NCES IPEDS institutional directory, enrollment, tuition and graduation rates"
    },
    "dm": {
      "topic": "dams",
      "name": "High-hazard dams",
      "type": "array",
      "fields": [
        "dams within 10 miles",
        "dams within 5 miles",
        "all dams (any hazard class) within 10 miles",
        "nearest high-hazard dam's name",
        "distance (mi)",
        "condition assessment",
        "purpose",
        "height (ft)",
        "storage (acre-ft)",
        "year completed",
        "river/water body",
        "owner type",
        "high-hazard dams inside ZIP",
        "of those, count rated high-hazard",
        "of those, count rated poor condition",
        "list of up to 2 names of dams inside the ZIP"
      ],
      "source": "U.S. Army Corps of Engineers National Inventory of Dams"
    },
    "dx": {
      "topic": "hospital",
      "name": "Nearest dialysis facility",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "facilities within radius 1",
        "facilities within radius 2",
        "count inside ZIP",
        "CMS star rating",
        "station count",
        "chain/ownership name"
      ],
      "source": "CMS dialysis facility list, geocoded with the Census batch geocoder"
    },
    "fq": {
      "topic": "hospital",
      "name": "Nearest federally qualified health center",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "centers within radius 1",
        "centers within radius 2",
        "count inside ZIP",
        "service-delivery setting type"
      ],
      "source": "HRSA health center service delivery sites (FQHCs and look-alikes), active Ohio sites"
    },
    "hu": {
      "topic": "housing",
      "name": "HUD fair market rent",
      "type": "array",
      "fields": [
        "studio/0BR FMR ($/month)",
        "1BR FMR ($/month)",
        "2BR FMR ($/month)",
        "3BR FMR ($/month)",
        "4BR FMR ($/month)",
        "HUD FMR area name"
      ],
      "source": "HUD fiscal 2026 Small Area Fair Market Rents by ZIP",
      "note": "confirmed directly from the rendered 2BR/1BR/3BR/area text in peoplePanel's housing-assistance row; the 0BR and 4BR positions are inferred from HUD's standard 5-bedroom-size FMR schedule (0-4BR) matching the array's 6-element length."
    },
    "ir": {
      "topic": "housing",
      "name": "IRS ZIP tax data",
      "type": "array",
      "fields": [
        "return count",
        "exemption/person count",
        "?",
        "?",
        "?",
        "?",
        "mean or median AGI ($)"
      ],
      "source": "IRS Statistics of Income ZIP data, tax year 2022",
      "note": "not referenced by any card found in template.html; only field 0/1 (plausible return and person counts) and a trailing dollar figure are inferred from magnitude. Fields 2-5 unconfirmed.",
      "confidence": "low"
    },
    "lun": {
      "topic": "schools",
      "name": "School lunch and enrollment",
      "type": "array",
      "fields": [
        "public school count inside ZIP",
        "total membership (enrollment)",
        "?",
        "teacher FTE or a related count",
        "?",
        "free/reduced-price lunch eligible count or share",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "NCES Common Core of Data 2023-24 school directory, membership, teacher FTE and free/reduced-price lunch counts, summed over public schools inside the ZIP",
      "note": "not referenced by any card found in template.html; only the leading school-count/enrollment fields are confidently placed. The remaining 8 of 13 fields are unconfirmed.",
      "confidence": "low"
    },
    "lz": {
      "topic": "lead",
      "name": "ODH high-risk lead ZIP flag",
      "type": "number",
      "fields": [
        "always 1 when present: this ZIP is on the Ohio Department of Health's high-risk list for childhood blood lead testing"
      ],
      "source": "Ohio Department of Health high-risk ZIP list (reproduced in the Cuyahoga County Board of Health questionnaire, October 2024)"
    },
    "mo": {
      "topic": "mobility",
      "name": "Upward mobility (Opportunity Atlas)",
      "type": "array",
      "fields": [
        "mean household income rank reached in adulthood by children raised here in low-income families (percentile)",
        "a second income-rank figure (cohort or percentile not confirmed)",
        "a third figure kept from the source (the source's own field 3; field 2 is dropped by build.py)"
      ],
      "source": "Opportunity Atlas (Chetty, Friedman, Hendren, Jones, Porter), children born 1978-1983",
      "note": "build.py keeps only source fields 0, 1 and 3 (v[2] is dropped), so the exact meaning of fields 1 and 2(kept)/2(dropped) was not individually confirmed against a template.html card.",
      "confidence": "low"
    },
    "np": {
      "topic": "people",
      "name": "Nonprofits (IRS)",
      "type": "array",
      "fields": [
        "tax-exempt organization count registered to this ZIP",
        "count reporting $1 million+ in income",
        "list of [name, income $] largest organizations (filers under $1,000 excluded)",
        "% that are 501(c)(3) charities",
        "% that are churches/religious groups"
      ],
      "source": "IRS Exempt Organizations Business Master File for Ohio"
    },
    "nu": {
      "topic": "power",
      "name": "Nuclear plant emergency planning zone",
      "type": "array",
      "fields": [
        "plant name (Perry or Davis-Besse)",
        "distance (mi)",
        "zone type ('plume' 10-mile or the 50-mile ingestion zone)",
        "reactor capacity (MW)",
        "?",
        "?",
        "a distance-or-population-related figure",
        "share of the ZIP inside the zone"
      ],
      "source": "NRC emergency planning zones around Perry and Davis-Besse",
      "note": "fields 4-6 not individually confirmed; only the name/distance/zone-type and a trailing share are solid.",
      "confidence": "medium"
    },
    "oeg": {
      "topic": "gov",
      "name": "Nearest Ohio EPA 2025 grant",
      "type": "array",
      "fields": [
        "distance (mi)",
        "grantee/project name",
        "city",
        "amount ($)",
        "year",
        "description"
      ],
      "source": "Ohio EPA grants awarded in 2025 (OEPA_Achievements, MapServer layer 8)",
      "note": "not referenced by any card found in template.html; field order inferred from the 'nearest facility'-style pattern used by similar keys.",
      "confidence": "low"
    },
    "osh": {
      "topic": "jobs",
      "name": "OSHA enforcement",
      "type": "array",
      "fields": [
        "inspection count since 2020",
        "?",
        "?",
        "?",
        "?",
        "list of up to 3 [employer, violation count] rows",
        "accident-investigation count since 2015",
        "fatality count",
        "list of up to 2 [date, description] fatality/incident narratives",
        "total violations found"
      ],
      "source": "OSHA enforcement data (inspections since 2020, accident investigations since 2015), Labor Department open data catalog",
      "note": "fields 1-4 not individually confirmed against a template.html card; the employer list, accident count and narrative list are solid from the sample's readable strings.",
      "confidence": "medium"
    },
    "pl": {
      "topic": "pipelines",
      "name": "Gas transmission pipelines",
      "type": "array",
      "fields": [
        "distance to nearest operating line (mi)",
        "nearest line's operator",
        "nearest line's type",
        "miles of pipeline inside the ZIP",
        "list of [operator, miles] rows"
      ],
      "source": "EIA natural gas interstate/intrastate transmission pipelines (Esri Federal User Community, ArcGIS Online)",
      "note": "not to be confused with the system-level 'pl' field, which holds Ohio EPA PFAS plant-sampling status."
    },
    "pw": {
      "topic": "power",
      "name": "Power plants",
      "type": "array",
      "fields": [
        "distance to nearest plant of 100 MW or more (mi)",
        "that plant's name",
        "that plant's fuel type",
        "that plant's capacity (MW)",
        "that plant's city",
        "distance to nearest plant of any size (mi)",
        "nearest plant's name",
        "nearest plant's fuel type",
        "nearest plant's capacity (MW)",
        "plants within 10 miles",
        "total capacity within 10 miles (MW)",
        "list of fuel types within 10 miles",
        "list of up to 3 plants inside the ZIP",
        "plants inside the ZIP (count)",
        "total capacity inside the ZIP (MW)"
      ],
      "source": "EIA-860 power plant inventory via HIFLD"
    },
    "qz": {
      "topic": "jobs",
      "name": "Qualified Opportunity Zone share",
      "type": "number",
      "fields": [
        "share (%, 0-100) of residents in a census tract designated a federal Qualified Opportunity Zone (2018)"
      ],
      "source": "CDFI Fund list of designated Qualified Opportunity Zones, 2010 tracts carried to 2020 boundaries"
    },
    "rn": {
      "topic": "power",
      "name": "Nearby wind and solar farms",
      "type": "array",
      "fields": [
        "wind farm record or null: [name, distance mi, turbine count, capacity MW, year, count within a radius, list of up to 2 names inside/near]",
        "solar farm record or null: [name, distance mi, capacity MW, year, acres, count within a radius, list of up to 2 names inside/near]"
      ],
      "source": "USGS U.S. Wind Turbine Database (June 2026); U.S. Large-Scale Solar Photovoltaic Database (April 2026), within 15 miles"
    },
    "sp": {
      "topic": "schools",
      "name": "School buildings (points)",
      "type": "array",
      "fields": [
        "count inside ZIP",
        "list of up to 4 school names inside the ZIP",
        "nearest school name (outside, when none inside is closest)",
        "nearest school's city",
        "distance (mi)",
        "count within radius 1",
        "count within radius 2"
      ],
      "source": "NCES EDGE public school building locations, 2024-25"
    },
    "sr": {
      "topic": "ratings",
      "name": "School building star ratings",
      "type": "object",
      "fields": {
        "<school name>": "that individual school building's 2024-2025 Ohio Report Card overall star rating (number)"
      },
      "source": "Ohio School Report Cards 2024-2025 (building-level, distinct from the district-level 'rc' field on the schools registry)"
    },
    "st": {
      "topic": "tax",
      "name": "Combined sales tax",
      "type": "array",
      "fields": [
        "combined sales tax rate (%)",
        "county name the rate applies to",
        "flag: this ZIP spans more than one sales-tax jurisdiction, or the source's own special-district flag",
        "a fourth field kept from the source row (not individually confirmed)"
      ],
      "source": "Ohio Department of Taxation, The Finder combined sales tax rate table by ZIP, September 2026",
      "note": "field 3 is carried through from the source row but not rendered in any card found in template.html.",
      "confidence": "medium"
    },
    "sv": {
      "topic": "svi",
      "name": "CDC Social Vulnerability Index",
      "type": "array",
      "fields": [
        "overall SVI percentile",
        "theme 1 percentile (socioeconomic status)",
        "theme 2 percentile (household composition/disability)",
        "theme 3 percentile (minority status/language)",
        "theme 4 percentile (housing type/transportation)",
        "a data-quality or coverage flag"
      ],
      "source": "CDC/ATSDR Social Vulnerability Index 2022, by census tract, population-weighted to ZIPs",
      "note": "the 4-theme-plus-overall structure follows CDC SVI's standard published shape; not each position is individually rendered by name in a template.html card, and the trailing 6th field's meaning is unconfirmed.",
      "confidence": "medium"
    },
    "ti": {
      "topic": "tri",
      "name": "Toxics Release Inventory",
      "type": "array",
      "fields": [
        "total pounds released on-site, 2024",
        "reporting facility count",
        "list of up to a few [facility or chemical name, pounds] top contributors",
        "2020 comparison total (pounds)",
        "trend direction or % change",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?"
      ],
      "source": "EPA Toxics Release Inventory basic data files, Ohio, reporting years 2020-2024 (dioxin rows in grams excluded from pound totals)",
      "note": "not referenced by any card found in template.html; only the leading pounds/facility-count/top-contributor shape is inferred from the layers_meta description. 8 of the 13 fields are unconfirmed.",
      "confidence": "low"
    },
    "uw": {
      "topic": "groundwater",
      "name": "Class V underground injection wells",
      "type": "array",
      "fields": [
        "total UIC wells",
        "active wells",
        "?",
        "?",
        "?",
        "?",
        "?",
        "a flag or additional count"
      ],
      "source": "Ohio EPA Class V underground injection control wells by ZIP",
      "note": "not referenced by any card found in template.html; only the leading total/active-well counts are inferred from the key's evident purpose.",
      "confidence": "low"
    },
    "va": {
      "topic": "hospital",
      "name": "Nearest VA facility",
      "type": "array",
      "fields": [
        "distance (mi)",
        "name",
        "city",
        "facilities within radius 1",
        "facilities within radius 2",
        "count inside ZIP",
        "facility kind (e.g. 'other outpatient site')"
      ],
      "source": "Veterans Health Administration medical facilities (HIFLD copy of the VA station list)"
    },
    "zb": {
      "topic": "jobs",
      "name": "ZIP Business Patterns",
      "type": "array",
      "fields": [
        "establishment count",
        "paid employee count",
        "annual payroll ($1,000s)",
        "list of up to a few [sector name, establishment count] top sectors",
        "a count of NAICS sectors reported, or a related figure",
        "a noise/employment-size-class flag (single letter, Census disclosure-avoidance convention)",
        "a suppression flag (boolean)"
      ],
      "source": "Census ZIP Code Business Patterns 2023",
      "note": "not referenced by any card found in template.html; fields 4-6 (a bare number, a letter code, and a boolean) are guesses based on typical Census ZBP noise-range/disclosure conventions, not confirmed.",
      "confidence": "low"
    },
    "aqf": {
      "topic": "groundwater",
      "name": "Aquifer description (narrative)",
      "type": "array",
      "fields": [
        "aquifer material description text",
        "depth-to-water range (ft, text)",
        "well-depth range (ft, text)",
        "regional aquifer type name",
        "specific local aquifer name",
        "underlying geologic formation",
        "yield range (gpm, text)",
        "an additional figure, usually null"
      ],
      "source": "ODNR glacial, bedrock and sole-source aquifer maps (Ohio EPA hydro/Aquifers)",
      "note": "a companion narrative to the numeric 'gw' vulnerability array; not individually confirmed against a template.html card, but the string values in the sample make most fields self-evident.",
      "confidence": "medium"
    },
    "bsg": {
      "topic": "sewage",
      "name": "Nearest permitted biosolids generator",
      "type": "array",
      "fields": [
        "name",
        "distance (mi)",
        "?",
        "count within radius",
        "count inside ZIP"
      ],
      "source": "Ohio EPA permitted biosolids generators",
      "note": "field 2 not individually confirmed."
    },
    "bsl": {
      "topic": "sewage",
      "name": "Biosolids application fields",
      "type": "array",
      "fields": [
        "acres of permitted application fields inside ZIP",
        "field count",
        "distance to nearest field (mi)",
        "nearest field's permittee/name",
        "?"
      ],
      "source": "Ohio EPA biosolids application fields (SurfaceWater/Biosolids)",
      "note": "not referenced by any card found in template.html; field order inferred from the 'area+count+nearest' pattern used by similar overlay keys.",
      "confidence": "low"
    },
    "el": {
      "topic": "soils",
      "name": "Elevation",
      "type": "number",
      "fields": [
        "ground elevation at the ZIP's population-weighted center (meters, Copernicus GLO-90 model)"
      ],
      "source": "Copernicus GLO-90 elevation model via the Open-Meteo API",
      "note": "unit (meters vs feet) is assumed from the Copernicus GLO-90 model's native units; not confirmed against a template.html display."
    },
    "enb": {
      "topic": "electric",
      "name": "Household energy burden",
      "type": "array",
      "fields": [
        "average energy burden (% of household income)",
        "?",
        "?",
        "low-income household count",
        "total households or income figure",
        "?",
        "households sampled"
      ],
      "source": "DOE LEAD Tool 2022 household energy burden by census tract, apportioned into ZIPs by block population",
      "note": "only field 0 (a small percent-like number) and the presence of larger count-like fields are inferred from magnitude; this key's rendering function (gnisLine-adjacent, truncated in the read excerpt) was not fully captured, so most positions are unconfirmed.",
      "confidence": "low"
    },
    "evi": {
      "topic": "housing",
      "name": "Eviction filings",
      "type": "array",
      "fields": [
        "eviction filings per 100 renter households a year, 2016-2018",
        "share ending in a judgment",
        "filings a year (count)",
        "?",
        "share of the estimate that is modelled rather than observed (below 0.5 triggers a 'mostly modelled' caveat)"
      ],
      "source": "Eviction Lab tract estimates 2016-2018 (Gromis and others 2022), population-weighted to ZIPs",
      "note": "field 3 not individually confirmed; the rest confirmed directly from its rendering in the housing panel."
    },
    "ha": {
      "topic": "housing",
      "name": "Housing assistance and bank branches",
      "type": "array",
      "fields": [
        "LIHTC property count",
        "HUD-assisted multifamily property count",
        "public housing development count",
        "FDIC bank branch count",
        "a bank-related figure",
        "a bank-related figure",
        "credit union branch count",
        "a credit-union-related figure",
        "a share (0-1)",
        "nearest bank name",
        "a year",
        "?",
        "a count",
        "a count"
      ],
      "source": "HUD eGIS open data (LIHTC, HUD-assisted multifamily, public housing); FDIC BankFind branch locations; NCUA call report branch table, March 2026",
      "note": "not referenced by any card found in template.html; field breakdown is a coarse guess from the three named source datasets and the sample's mix of small counts and a bank name/year, not individually confirmed.",
      "confidence": "low"
    },
    "gg": {
      "topic": "watershed",
      "name": "Nearest USGS stream gauge",
      "type": "array",
      "fields": [
        "gauge site id",
        "gauge/stream name",
        "distance (mi)",
        "drainage area (sq mi)",
        "peak discharge of record (cfs)",
        "date of that peak",
        "gauge height at that peak (ft)",
        "a second peak discharge (cfs)",
        "date of that second peak",
        "period-of-record start year",
        "years of record",
        "period-of-record end year"
      ],
      "source": "USGS NWIS annual peak flows for the nearest active stream gauge",
      "note": "not referenced by any card found in template.html; field breakdown is a best-effort guess from a typical USGS annual-peak-flow summary shape (site id/name/distance/drainage area/peak discharge and date/record span), not individually confirmed.",
      "confidence": "low"
    },
    "df": {
      "topic": "sewage",
      "name": "DEFA loan projects",
      "type": "array",
      "fields": [
        "project count since 2016",
        "total award amount ($)",
        "principal-forgiveness amount ($), by analogy with the 'srf' key's 'pf' field",
        "map of {category (e.g. 'drinking water', 'wastewater'): amount $}",
        "list of [project name, year, amount $, category, place] rows"
      ],
      "source": "Ohio EPA Division of Environmental and Financial Assistance (DEFA) loan project funding, awarded 2016 to date",
      "note": "field 2's meaning (principal forgiveness) is inferred by analogy with the structurally similar 'srf' key rather than confirmed in a template.html card for 'df' specifically.",
      "confidence": "medium"
    },
    "ifz": {
      "topic": null,
      "name": "Infrastructure overlay summary",
      "type": "object",
      "fields": {
        "<infra layer id>": "[quantity (miles for linear layers, count for point layers), list of example names] for each infrastructure layer (e.g. pipelines_gas, pipelines_liquids, ust_sites, ust_releases, power_lines, substations) touching or near this ZIP"
      },
      "source": "scripts/build_infra.py per-ZIP infrastructure summary (data/zip_infra.json)",
      "note": "shown in the map's infrastructure panel, not inside a ZIP-card mode; layer ids match D.infra.layers keys."
    }
  },
  "county_tables": {
    "migr": {
      "name": "IRS county-to-county migration",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "returns (households) that moved in, 2022 to 2023",
        "returns that moved out",
        "net returns (in minus out)",
        "average or total adjusted gross income associated with inflow (magnitude suggests $ thousands or a per-return average; not confirmed)",
        "same, for outflow",
        "non-migrant (stayed put) returns",
        "list of up to 3 [origin place, return count] top sources of arrivals",
        "list of up to 3 [destination place, return count] top places leavers went"
      ],
      "source": "IRS Statistics of Income county-to-county migration flows, 2022-2023",
      "note": "fields 0, 1, 2, 5, 6 and 7 are confirmed directly from moving-line rendering in peoplePanel(); fields 3 and 4 are a best-effort guess (typical IRS SOI migration files also carry an AGI figure) and were not confirmed against any card.",
      "confidence": "medium",
      "field_confidence": {
        "3": {
          "confidence": "low",
          "why": "best-effort guess (AGI figure), not confirmed against any card"
        },
        "4": {
          "confidence": "low",
          "why": "best-effort guess (AGI figure), not confirmed against any card"
        }
      }
    },
    "pest": {
      "name": "USGS county pesticide-use estimates",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "estimate year",
        "total pounds of active ingredient applied (all compounds)",
        "second-highest compound's pounds (duplicates a value inside the top-5 list)",
        "highest compound's pounds (duplicates a value inside the top-5 list)",
        "list of up to 5 [compound name, pounds] top compounds",
        "pounds per square mile of cropland (or a similar density figure)",
        "rank among Ohio's 88 counties",
        "distinct compounds reported, or a related count"
      ],
      "source": "USGS preliminary county agricultural pesticide-use estimates, 2018 (high estimate)",
      "note": "not referenced in any card found in template.html; field 0 (year) and field 4 (the top-5 list) are solid from the sample's own shape, but fields 1, 2, 3, 5, 6 and 7 are inferred guesses only, flagged low confidence.",
      "confidence": "low"
    },
    "farms": {
      "name": "2022 Census of Agriculture county profile",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "farm count",
        "total acres in farms",
        "?",
        "average farm size (acres)",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "?",
        "market value of products sold ($)",
        "?",
        "?",
        "?"
      ],
      "source": "USDA NASS 2022 Census of Agriculture county totals (Quick Stats bulk file)",
      "note": "not referenced in any card found in template.html; only a few positions (farm count, total acres, and a large dollar figure consistent with market value of products sold) are reasonably inferred from magnitude; the rest are unconfirmed.",
      "confidence": "low"
    },
    "chr": {
      "name": "County Health Rankings 2025",
      "keyed_by": "county name (plus a synthetic 'Ohio' row)",
      "type": "object",
      "fields": {
        "ypll": "years of potential life lost rate (premature death)",
        "fairpoor": "% adults reporting fair or poor health",
        "flu": "% Medicare enrollees with an annual flu vaccination",
        "pcp": "population per primary care physician",
        "mhp": "population per mental health provider",
        "dent": "population per dentist",
        "prevhosp": "preventable hospital stay rate (per 100,000 Medicare enrollees)",
        "unins": "% uninsured",
        "housing": "% households with severe housing problems",
        "pm25": "average daily PM2.5 (µg/m3)",
        "waterviol": "'Yes'/'No' - any drinking-water violation reported in the county",
        "ineq": "income inequality ratio (80th/20th percentile household income)",
        "childpov": "% children in poverty",
        "injury": "injury death rate (per 100,000)",
        "lifeexp": "life expectancy at birth (years)",
        "childmort": "child mortality rate (per 100,000, under 18)",
        "infant": "infant mortality rate (per 1,000 live births)",
        "suicide": "suicide death rate (per 100,000)",
        "teen": "teen birth rate (per 1,000 females 15-19)",
        "income": "median household income ($)",
        "pop": "county population",
        "hgroup": "health-outcomes ranking group: the county's CHR 2025 decile among U.S. counties, 1 to 10 (1=best)",
        "cgroup": "health-factors ranking group: the county's CHR 2025 decile among U.S. counties, 1 to 10 (1=best)"
      },
      "source": "County Health Rankings & Roadmaps 2025 (University of Wisconsin Population Health Institute)",
      "note": "sub-field meanings are matched to CHR's well-known standard measure set by name and by plausible value magnitude (e.g. pop=1,326,063 for Franklin, income=$71,730); not each one is individually rendered by name in template.html, but the dict keys themselves are highly suggestive abbreviations of the standard CHR ranked measures. hgroup and cgroup are CHR's national ranking groups, which are deciles (1 to 10, 1 = best), not quartiles (D-65, correcting the original wording): template.html's healthLine() prints 'health group N of 10 among U.S. counties', and Ohio's observed values run 1 to 9.",
      "confidence": "medium"
    },
    "od": {
      "name": "CDC county overdose deaths",
      "keyed_by": "county name (plus 'Ohio', CDC's state series)",
      "type": "array",
      "fields": [
        "latest 12-month-ending period (YYYY-MM)",
        "deaths in that period",
        "deaths a year earlier",
        "highest 12-month total since 2020",
        "share still pending investigation (%)",
        "deaths per 100,000 (computed from CHR population)",
        "month of the highest total (optional, only when the source provided one)"
      ],
      "source": "CDC NCHS provisional county drug overdose deaths, 12-month-ending counts; CDC VSRR for the Ohio row"
    },
    "cpop": {
      "name": "Census county population estimates and history",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "April 2020 census population",
        "current population estimate (July of the vintage year in CPOP_YEAR)",
        "a components-of-change or historical figure (not individually confirmed)",
        "a components-of-change or historical figure (not individually confirmed)",
        "net domestic migration, latest year alone (can be negative)",
        "net international migration, latest year alone",
        "a components-of-change or historical figure (not individually confirmed)",
        "a components-of-change or historical figure (not individually confirmed)",
        "cumulative births since 2020",
        "cumulative deaths since 2020",
        "cumulative net migration since 2020",
        "1900 population",
        "1950 population",
        "1970 population",
        "a historical population figure, likely 1990 (not individually confirmed)",
        "2000 population",
        "a historical population figure, likely 2010 (not individually confirmed)",
        "peak year (population estimates program, vintage-to-date)",
        "population in the peak year",
        "year first counted, when before 1900",
        "population in that first-counted year",
        "population by 1850, when first counted before 1850"
      ],
      "source": "Census Bureau Population Estimates Program (vintage 2025, join_popest.py); decennial counts 1900-1990 from 'Population of States and Counties of the United States 1790-1990', 2000/2010 from intercensal files",
      "note": "fields 0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20 and 21 are confirmed directly from peoplePanel()'s 'County growth'/'Since 1900' rows and the CPOP_YEAR code comment. Fields 2, 3, 6, 7, 14 and 16 are not individually confirmed - marked explicitly above rather than guessed silently.",
      "confidence": "medium",
      "field_confidence": {
        "2": {
          "confidence": "low",
          "why": "not individually confirmed"
        },
        "3": {
          "confidence": "low",
          "why": "not individually confirmed"
        },
        "6": {
          "confidence": "low",
          "why": "not individually confirmed"
        },
        "7": {
          "confidence": "low",
          "why": "not individually confirmed"
        },
        "14": {
          "confidence": "low",
          "why": "likely 1990, not individually confirmed"
        },
        "16": {
          "confidence": "low",
          "why": "likely 2010, not individually confirmed"
        }
      }
    },
    "laus": {
      "name": "BLS county unemployment (LAUS)",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "latest month (YYYY-MM)",
        "unemployment rate (%), latest month",
        "unemployment rate (%), a year earlier",
        "labor force",
        "unemployed (looking for work)",
        "unemployment rate (%) for all of 2019, or null"
      ],
      "source": "BLS Local Area Unemployment Statistics"
    },
    "qcew": {
      "name": "BLS Quarterly Census of Employment and Wages",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "year",
        "quarter (1-4)",
        "average weekly wage ($)",
        "% change on the year",
        "employment",
        "% change in employment",
        "establishment count",
        "list of up to 3 [sector name, employment, avg weekly wage] largest private sectors"
      ],
      "source": "BLS Quarterly Census of Employment and Wages, 2026 Q1"
    },
    "fed": {
      "name": "USAspending county federal money",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "contract obligations ($, fiscal 2025)",
        "contract $ per resident",
        "grant obligations ($)",
        "grant $ per resident",
        "loan guarantees and loans ($)",
        "direct payments to people/organizations ($)"
      ],
      "source": "USAspending federal awards by county of performance, fiscal 2025"
    },
    "bea": {
      "name": "BEA county economic accounts",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "GDP year",
        "real GDP ($ millions, 2017 chained dollars)",
        "nominal (current-dollar) GDP ($ millions)",
        "% change in real GDP since 2019",
        "personal income per capita ($)",
        "personal income year",
        "% change in per-capita income since 2019 (before inflation)",
        "rank among Ohio's 88 counties by per-capita income"
      ],
      "source": "BEA regional accounts: county GDP (CAGDP1), per capita personal income (CAINC1), 2024",
      "note": "field 2 (nominal GDP) is present in the array but not printed by beaLine(); inferred from its magnitude being larger than the real-GDP figure at field 1.",
      "confidence": "medium",
      "field_confidence": {
        "2": {
          "confidence": "low",
          "why": "inferred from magnitude only; beaLine() never prints it"
        }
      }
    },
    "rucc": {
      "name": "USDA Rural-Urban Continuum Code",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "RUCC code (1-9, 1=most metro)",
        "code description"
      ],
      "source": "USDA ERS Rural-Urban Continuum Codes, 2023"
    },
    "afff": {
      "name": "County PFAS firefighting-foam stock",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "fire department/holder count registered",
        "total gallons of PFAS-based AFFF registered",
        "gallons in sealed/unopened containers",
        "gallons in opened containers"
      ],
      "source": "Ohio EPA AFFF firefighting-foam inventory",
      "note": "fields 2 and 3 reconcile exactly against field 1 in the sample (635 + 3165 = 3800), confirming the opened/unopened split."
    },
    "nws": {
      "name": "National Weather Service warning counts",
      "keyed_by": "county name",
      "type": "object",
      "fields": {
        "n": "total warning/watch/advisory products issued since 2015",
        "TO.W": "Tornado Warning count",
        "TO.A": "Tornado Watch count",
        "SV.W": "Severe Thunderstorm Warning count",
        "FF.W": "Flash Flood Warning count",
        "FL.W": "Flood Warning count",
        "FA.W": "Areal Flood Warning count",
        "FA.Y": "Areal Flood Advisory count",
        "WS.W": "Winter Storm Warning count",
        "WW.Y": "Winter Weather Advisory count",
        "BZ.W": "Blizzard Warning count",
        "EH.W": "Excessive Heat Warning count",
        "HT.Y": "Heat Advisory count",
        "EC.W": "Extreme Cold Warning count",
        "WC.W": "Wind Chill Warning count",
        "SQ.W": "Snow Squall Warning count",
        "tornado_years": "map of {year: tornado warning count} for years with at least one"
      },
      "source": "National Weather Service warnings/watches/advisories, Iowa Environmental Mesonet VTEC archive, since 2015",
      "note": "codes follow standard NWS VTEC phenomenon.significance pairs (W=Warning, A=Watch, Y=Advisory); confirmed directly against nwsLine()'s field-by-field rendering."
    },
    "cancer": {
      "name": "NCI county cancer incidence/mortality",
      "keyed_by": "county name (plus 'Ohio' and 'US' rows)",
      "type": "object",
      "fields": {
        "all": "[age-adjusted incidence rate per 100,000, a comparison or CI-adjacent figure, another comparison figure, annual case count, trend direction, annual percent change] all invasive cancer sites combined",
        "death": "[age-adjusted death rate per 100,000, annual death count, trend direction, annual percent change]",
        "lung": "[incidence rate per 100,000, annual case count, trend direction] and the same 3-element shape for other site-specific keys",
        "colorectal": "same 3-element shape as 'lung'",
        "breast": "same 3-element shape as 'lung'",
        "prostate": "same 3-element shape as 'lung'",
        "leukemia": "same 3-element shape as 'lung'",
        "bladder": "same 3-element shape as 'lung'"
      },
      "source": "NCI State Cancer Profiles, county incidence 2018-2022 and mortality 2019-2023",
      "note": "the 'all' row's fields 1-2 (452.5 and 463.0 in the Franklin sample, bracketing the rate 457.7) are presumed to be a confidence interval around the headline rate; not confirmed against a template.html card.",
      "confidence": "medium",
      "field_confidence": {
        "all[1]": {
          "confidence": "low",
          "why": "presumed lower confidence bound, not confirmed"
        },
        "all[2]": {
          "confidence": "low",
          "why": "presumed upper confidence bound, not confirmed"
        }
      }
    },
    "cchl": {
      "name": "County H2Ohio chloride-reduction grant count",
      "keyed_by": "county name",
      "type": "number",
      "fields": [
        "count of H2Ohio road-salt/chloride reduction grants awarded in the county"
      ],
      "source": "Ohio EPA H2Ohio chloride reduction grants",
      "note": "read directly as CCHL[p.k] and printed as a bare count in chlorideLine()."
    },
    "ers": {
      "name": "USDA county economic typology",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "metro flag (1=metro, 0=nonmetro)",
        "economic dependency type ('Nonspecialized'/'Manufacturing'/'Federal/State Government'/'Mining'/'Recreation'/'Farming')",
        "low-education flag (0/1)",
        "low-employment flag (0/1)",
        "population-loss flag (0/1)",
        "retirement-destination flag (0/1)",
        "persistent-poverty flag (0/1)",
        "persistent-child-poverty flag (0/1)"
      ],
      "source": "USDA ERS county typology codes, 2015 edition"
    },
    "crac": {
      "name": "County-level FRA rail-accident totals",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "accident count since 2010",
        "derailment count",
        "hazmat car(s) releasing count",
        "people evacuated"
      ],
      "source": "FRA Form 54 rail equipment accident reports, county fallback for railAccidentLine()"
    },
    "ctrend": {
      "name": "NOAA nClimDiv county climate-trend series",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "temperature figure 1",
        "temperature figure 2",
        "temperature figure 3",
        "a year marker",
        "a temperature or degree-day figure",
        "precipitation figure 1",
        "precipitation figure 2",
        "a year marker",
        "a precipitation figure",
        "a year marker",
        "a temperature figure",
        "a precipitation figure"
      ],
      "source": "NOAA nClimDiv county monthly temperature and precipitation, 1895-2026 (climdiv-tmpccy / climdiv-pcpncy)",
      "note": "not referenced by any card found in template.html; the field count (12) is confirmed from the payload but individual positions are unconfirmed beyond 'this is a temperature/precipitation trend series with embedded year markers'.",
      "confidence": "low"
    },
    "medi": {
      "name": "CMS county Medicare enrollment",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "enrollment year",
        "total Medicare enrollees",
        "% choosing Medicare Advantage",
        "enrollees aged 65+",
        "enrollees under 65 with disabilities",
        "% also enrolled in Medicaid (dual-eligible)",
        "% with Part D drug coverage",
        "prior enrollment count (comparison)",
        "year of that prior count"
      ],
      "source": "CMS Medicare Monthly Enrollment by county, 2025"
    },
    "saipe": {
      "name": "Census Small Area Income and Poverty Estimates",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "% poverty (all ages)",
        "% child poverty",
        "median household income ($)"
      ],
      "source": "Census SAIPE 2024 county estimates"
    },
    "aqiy": {
      "name": "2026 year-to-date county AQI",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "days indexed so far in 2026",
        "good AQI days",
        "moderate AQI days",
        "unhealthy-for-sensitive-groups-or-worse days",
        "peak AQI value",
        "pollutant responsible for the peak",
        "date of the peak (YYYY-MM-DD)"
      ],
      "source": "EPA daily county AQI file for 2026 (January to the file's latest date)"
    },
    "airs": {
      "name": "EPA Green Book nonattainment/maintenance status",
      "keyed_by": "county name",
      "type": "object",
      "fields": {
        "n": "list of [pollutant/standard, area name, classification, area-share code] nonattainment rows",
        "m": "list of [pollutant/standard, area name, status, area-share code ('W'=whole county or similar, 'Whole'), year redesignated to maintenance] maintenance rows"
      },
      "source": "EPA Green Book county nonattainment/maintenance status (nayro.xls, September 2026)",
      "note": "the area-share code's exact letter set ('W'/'Whole' vs a fractional-county code) is only partly confirmed from airStdText()'s handling.",
      "field_confidence": {
        "n[3]": {
          "confidence": "low",
          "why": "area-share code: letter set only partly confirmed from airStdText()"
        },
        "m[3]": {
          "confidence": "low",
          "why": "area-share code: letter set only partly confirmed from airStdText()"
        }
      }
    },
    "hma": {
      "name": "FEMA Hazard Mitigation Assistance county history",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "mitigation project count since the start year",
        "total project worth ($)",
        "federal share ($)",
        "properties covered",
        "list of up to 3 [project type, count] rows",
        "start year on file",
        "most recent project year (inferred by symmetry with the start year; not printed directly)",
        "[type, cost $, grantee, fiscal year] largest project"
      ],
      "source": "OpenFEMA Hazard Mitigation Assistance projects, v4 API",
      "field_confidence": {
        "6": {
          "confidence": "low",
          "why": "inferred by symmetry with the start year; not printed by hmaLine()"
        }
      }
    },
    "drought": {
      "name": "U.S. Drought Monitor county history",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "weeks in moderate drought or worse since 2020",
        "weeks severe drought or worse since 2020",
        "worst drought category since 2000",
        "date of that worst reading",
        "share (%) of all weeks since 2000 in any drought",
        "as-of date of the latest reading",
        "current drought status text",
        "weeks at least abnormally dry since 2020",
        "year of the most recent severe-or-worse spell",
        "weeks of that most recent severe spell"
      ],
      "source": "U.S. Drought Monitor weekly county statistics, 2000-2026"
    },
    "wateruse": {
      "name": "USGS 2015 county water-use census",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "total withdrawals (million gallons/day)",
        "public-supply withdrawals (MGD)",
        "a per-capita or share figure",
        "a larger-category withdrawal total (MGD)",
        "population served by public supply (thousands)",
        "a smaller category withdrawal (MGD)",
        "another small category (MGD)",
        "another small category (MGD)",
        "another small category (MGD)",
        "another category (MGD)",
        "another category (MGD)",
        "another category (MGD)"
      ],
      "source": "USGS 2015 county water-use census (Dieter and others 2018)",
      "note": "not referenced by any card found in template.html; only the leading total-withdrawal-shaped figures are plausible by magnitude, the remaining category breakdown (irrigation/industrial/mining/thermoelectric/livestock/aquaculture per the standard USGS water-use categories) is not individually confirmed.",
      "confidence": "low"
    },
    "storms": {
      "name": "NOAA Storm Events county summaries",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "severe-weather report count since 2016",
        "list of up to 4 [event family, count] rows",
        "[largest hail size in, date] or null",
        "[strongest wind gust mph, date] or null",
        "death count",
        "injury count",
        "reported damage ($)",
        "[event name, date, damage $, narrative text] costliest event",
        "list of up to 3 [zone-based advisory family, count] rows",
        "[first year, last year] of the series"
      ],
      "source": "NOAA Storm Events database, 2016-2026"
    },
    "fluor": {
      "name": "County fluoridation-rate summary",
      "keyed_by": "county name",
      "type": "number",
      "fields": [
        "% of county population served by fluoridated water"
      ],
      "source": "Ohio Department of Health county fluoridation profiles (DataOhio)"
    },
    "airtox": {
      "name": "County air-toxics summary",
      "keyed_by": "county name",
      "type": "array",
      "fields": [
        "lifetime cancer risk per million from outdoor air toxics",
        "list of up to 2 [pollutant name, risk contribution] top contributors"
      ],
      "source": "EPA AirToxScreen 2020"
    },
    "hhs": {
      "name": "House-pack source registry",
      "keyed_by": "source slug (mostly one per county auditor or OGRIP grouping)",
      "type": "array",
      "fields": [
        "county",
        "depth ('deep' full appraisal record or a thinner OGRIP-only record)",
        "source label",
        "office name/address",
        "landing page URL",
        "snapshot date",
        "records placed",
        "parcel-page URL pattern ('{pid}' placeholder) or null",
        "share of OGRIP parcels without a land-use class, or null",
        "values status note (e.g. working values not yet certified) or null"
      ],
      "source": "verbatim from scripts/build.py's own 'hhs' assembly comment (line 2049 as read for W1-05)"
    },
    "pm2a": {
      "name": "Permit-v2-pack asset id manifest",
      "keyed_by": "pack name (mostly '<County>.<n>')",
      "type": "string",
      "fields": [
        "artifact asset id for data/permits/v2pack/<name>.json, or the manifest documentation string under the '_doc' key"
      ],
      "source": "scripts/build.py permit-pack asset upload manifest"
    },
    "pm2s": {
      "name": "Permit office record-start dates",
      "keyed_by": "source label (permit office/portal name)",
      "type": "string",
      "fields": [
        "month permit records begin for that office (YYYY-MM)"
      ],
      "source": "data/permits/v2/sources.json, each source's 'first' date"
    }
  },
  "system_fields": {
    "id": {
      "name": "PWSID",
      "type": "string",
      "source": "EPA SDWIS"
    },
    "name": {
      "name": "System name",
      "type": "string",
      "source": "EPA SDWIS pws_name, cleaned up (title-cased, abbreviations expanded)"
    },
    "county": {
      "name": "County",
      "type": "string",
      "source": "derived from the PWSID's state/county code, or a neighboring state's name for border systems"
    },
    "pop": {
      "name": "Population served",
      "type": "number",
      "source": "EPA SDWIS population_served_count"
    },
    "code": {
      "name": "Primary source code",
      "type": "string",
      "fields": [
        "EPA SDWIS primary_source_code: SW surface water, GW groundwater, GU groundwater under surface-water influence, SWP/GWP purchased surface/ground water, etc."
      ],
      "source": "EPA SDWIS"
    },
    "producer": {
      "name": "Is a producer",
      "type": "boolean",
      "fields": [
        "true if the system treats its own source water (own/own_emergency_only in the purchase-chain resolution); false if it purchases finished water"
      ],
      "source": "computed from data/resolved.json purchase chains"
    },
    "cls": {
      "name": "Water-source class",
      "type": "string",
      "fields": [
        "'erie', 'ohio' (Ohio River), 'river' (other river/reservoir), 'reservoir', 'groundwater', 'surface', or 'unknown'"
      ],
      "source": "computed from parsed intake descriptions, or a research override"
    },
    "label": {
      "name": "Source label",
      "type": "string",
      "source": "the card's headline source description, e.g. 'Scioto River (Griggs & O'Shaughnessy), Hoover Reservoir on Big Walnut Ck, plus wells'"
    },
    "bodies": {
      "name": "Named water bodies",
      "type": "array",
      "fields": [
        "up to 6 named rivers/lakes/reservoirs parsed from the system's own (producer) intake descriptions, or inherited from the producer for a purchaser"
      ],
      "source": "regex-parsed from EPA facility intake names, or a research override"
    },
    "intakes": {
      "name": "Intake facility names",
      "type": "array",
      "fields": [
        "up to 6 cleaned intake facility names (producers only)"
      ],
      "source": "EPA SDWIS facility file (facility_type_code IN, active)"
    },
    "wells": {
      "name": "Well count",
      "type": "number",
      "source": "EPA SDWIS facility file (facility_type_code WL, active)"
    },
    "aquifer": {
      "name": "Aquifer name",
      "type": "string",
      "source": "research override (data/overrides.json) when known"
    },
    "notes": {
      "name": "Researcher notes",
      "type": "string",
      "source": "hand-written research prose describing how the system sources its water, especially purchase relationships"
    },
    "urls": {
      "name": "Source URLs",
      "type": "array",
      "fields": [
        "citation links for 'notes'/'label', 0-3 typically"
      ],
      "source": "research override"
    },
    "conf": {
      "name": "Research confidence",
      "type": "string",
      "fields": [
        "'high'/'medium'/'low'/'' - the researcher's own confidence in the label/class/notes"
      ],
      "source": "research override"
    },
    "also": {
      "name": "Additional supply sources",
      "type": "array",
      "fields": [
        "PWSIDs of 'also_buys' secondary suppliers, for producers that also purchase some water"
      ],
      "source": "data/resolved.json purchase-chain resolution"
    },
    "via": {
      "name": "Purchase chain",
      "type": "array",
      "fields": [
        "PWSIDs from this system up to (but not including) its own id, tracing the primary buys_from chain to the ultimate producer; the last entry is the immediate supplier, and producerOf()/supplierOf() walk this to find plant-side data"
      ],
      "source": "data/resolved.json purchase-chain resolution"
    },
    "alt": {
      "name": "Alternate/backup suppliers",
      "type": "array",
      "fields": [
        "PWSIDs reached only through a secondary (non-primary, weight-0) purchase connection that doesn't lead back to the same producer as 'via'"
      ],
      "source": "data/resolved.json purchase-chain resolution"
    },
    "plants": {
      "name": "Treatment plants",
      "type": "array",
      "fields": [
        "list of plant objects: {n name, a address, la/lo coordinates, pt point type, wb water body description, src intake source description, cls plant-level class override, k plant kind, of parent reference, in: list of {n,wb,role,src,la,lo,pt,sh,wells} intake sub-records}"
      ],
      "source": "data/plants.json plant-level research"
    },
    "pnotes": {
      "name": "Plant researcher notes",
      "type": "string",
      "source": "data/plants.json"
    },
    "wl": {
      "name": "Named wells (from SDWIS roster)",
      "type": "object",
      "fields": {
        "n": "total well count on the EPA roster",
        "p": "permanent (non-emergency/non-standby) well count",
        "names": "up to 60 well names, permanent wells first, others annotated with their availability status"
      },
      "source": "EPA SDWIS well roster (data/wells_sdwis.json)"
    },
    "pts": {
      "name": "Located well points",
      "type": "array",
      "fields": [
        "up to 150 rows of [lat, lon, depth ft, yield gpm, aquifer, year drilled, owner, county]"
      ],
      "source": "ODNR well log join (data/wells_join.json)"
    },
    "facts": {
      "name": "Hand-researched fact sheet",
      "type": "object",
      "fields": {
        "hist": "list of [year, event] timeline entries",
        "treat": "treatment-train description text",
        "press": "press/news notes text",
        "rate": "{g: gallons/rate description, n: notes, m: monthly bill or rate figure} residential rate summary",
        "imp": "list of [contaminant, level, unit, limit, year, note] notable compliance results",
        "proj": "list of [name, cost, year, status, note] capital projects",
        "plan": "list of [name, cost, year, status, note] planned projects (same shape as proj)",
        "stress": "text describing supply stress/capacity notes",
        "sew": "{s: sewer notes, st: stormwater notes}",
        "fun": "funding notes text",
        "conf": "research confidence for this fact sheet ('high'/'medium'/'low')",
        "urls": "citation URLs for the fact sheet",
        "src": "map of {source category: list of URLs}, present for ~295 of the 351 researched systems",
        "ver": "verification date or verifier note"
      },
      "source": "hand-researched fact sheets for ~350 systems (data/facts.json); see HANDOFF.md 'Data conventions'"
    },
    "photo": {
      "name": "System photo",
      "type": "object",
      "fields": {
        "b64": "data:image/jpeg;base64,... embedded thumbnail",
        "cap": "caption",
        "cr": "credit",
        "lic": "license name",
        "lu": "license URL",
        "pg": "source page URL",
        "rel": "relation/context note"
      },
      "source": "data/photos.json, shipped only for systems serving 1,500+ (page-size diet)"
    },
    "rr": {
      "topic": "safety",
      "name": "SDWIS regulatory record",
      "type": "object",
      "fields": {
        "hb": "list of health-based violation records: {year, code, name, cat, what, level, limit, status}",
        "n_grp": "violation-group count",
        "n_hb15": "health-based violations since 2015",
        "n_all20": "all violations since 2020",
        "n_mr20": "monitoring/reporting violations since 2020",
        "pb": "{v: latest 90th-percentile lead result (ppb), d: date/year} lead action-level snapshot",
        "cu": "same shape as pb for copper, or null"
      },
      "source": "EPA SDWIS (Envirofacts)"
    },
    "dbp": {
      "topic": "dbp",
      "name": "Disinfection byproducts",
      "type": "array",
      "fields": [
        "latest yearly-mean TTHM (µg/L)",
        "worst-year mean TTHM",
        "highest single TTHM sample",
        "sample count",
        "series start year",
        "series end year",
        "latest yearly-mean HAA5 (µg/L)",
        "worst-year mean HAA5",
        "highest single HAA5 sample",
        "HAA5 sample count"
      ],
      "source": "EPA Six-Year Review 4 compliance monitoring data, 2012-2019"
    },
    "voc": {
      "name": "Volatile organic compound samples",
      "type": "object",
      "fields": {
        "benz": "[highest result µg/L, sample count, detections, ?] benzene",
        "ccl4": "same shape, carbon tetrachloride",
        "dca": "same shape, 1,2-dichloroethane",
        "tce": "same shape, trichloroethylene",
        "pce": "same shape, tetrachloroethylene",
        "vc": "same shape, vinyl chloride"
      },
      "source": "EPA Six-Year Review 4 compliance monitoring data"
    },
    "cx": {
      "name": "Other regulated contaminants",
      "type": "object",
      "fields": {
        "no3": "[highest result mg/L, first year, last year, ?, sample count, ?] nitrate",
        "as": "same shape, arsenic",
        "ra": "same shape, combined radium (when present)",
        "alpha": "same shape, gross alpha (when present)",
        "u": "same shape, uranium (when present)"
      },
      "source": "EPA Six-Year Review 4 compliance monitoring data"
    },
    "cx2": {
      "name": "Herbicides and metals",
      "type": "object",
      "fields": {
        "atr": "[highest result, sample count, detections, ?] atrazine",
        "ala": "same shape, alachlor",
        "d24": "same shape, 2,4-D",
        "cr": "same shape, chromium",
        "cd": "same shape, cadmium",
        "ba": "same shape, barium",
        "hg": "same shape, mercury",
        "se": "same shape, selenium",
        "tl": "same shape, thallium"
      },
      "source": "EPA Six-Year Review 4 compliance monitoring data"
    },
    "flm": {
      "topic": "fluoride",
      "name": "Measured fluoride samples",
      "type": "array",
      "fields": [
        "latest result (mg/L)",
        "highest result (mg/L)",
        "lowest result (mg/L)",
        "sample count",
        "latest sample year",
        "?",
        "?",
        "?"
      ],
      "source": "EPA Six-Year Review 4 compliance monitoring fluoride results, 2012-2019",
      "note": "fields 5-7 not individually confirmed against a template.html card.",
      "confidence": "medium"
    },
    "mic": {
      "name": "Coliform/E. coli samples",
      "type": "array",
      "fields": [
        "sample count",
        "total-coliform-positive count",
        "positivity share",
        "?",
        "E. coli sample count",
        "E. coli-positive count",
        "?",
        "?"
      ],
      "source": "EPA Six-Year Review 4 compliance monitoring data (total coliform and E. coli, presence/absence)",
      "note": "fields 3, 6, 7 not individually confirmed.",
      "confidence": "medium"
    },
    "li": {
      "topic": "pfas",
      "name": "Lithium (UCMR 5)",
      "type": "array",
      "fields": [
        "highest result (µg/L)",
        "detection count",
        "sample count",
        "average of detections",
        "last-sampled date/year"
      ],
      "source": "EPA UCMR 5 lithium results, August 2026 release",
      "note": "confirmed directly from lithiumLine()'s destructuring."
    },
    "pf": {
      "topic": "pfas",
      "name": "PFAS occurrence",
      "type": "object",
      "fields": {
        "u": "[highest PFOA ng/L, highest PFOS ng/L, highest of any PFAS, list of up to 3 [compound, ng/L] detections, sample count, [start year, end year], treatment-in-place list, funding-source list, ?, a location key, facility name where the max occurred (multi-plant systems only), per-plant breakdown from _pf_plants()] UCMR 5 results",
        "o": "[detection count, plant count, highest result, sample date, ? (pp)] Ohio EPA statewide PFAS sampling results, or null"
      },
      "source": "EPA UCMR 5 occurrence data, August 2026 final release (347 Ohio systems); Ohio EPA statewide PFAS sampling 2019-2021 (1,479 systems)",
      "note": "not to be confused with the ZIP-level 'pf' field, which is the nearest post office."
    },
    "ab": {
      "topic": "algae",
      "name": "Harmful algal bloom monitoring",
      "type": "array",
      "fields": [
        "highest raw-water microcystin result (µg/L)",
        "date of that result",
        "raw-water detection count",
        "list of years with a raw detection",
        "finished-water detection count",
        "highest finished-water result (µg/L)",
        "date of that finished result",
        "monitoring start year",
        "monitoring end year",
        "date of latest sample",
        "sample count",
        "most recent raw-water result in the last 3 samples",
        "raw-water sample count"
      ],
      "source": "Ohio EPA public water system harmful algal bloom monitoring (2016-present)"
    },
    "ld": {
      "topic": "lead",
      "name": "Lead and copper / service lines",
      "type": "array",
      "fields": [
        "latest 90th-percentile lead period (YYYY-MM)",
        "latest 90th-percentile lead result (ppb)",
        "highest 90th-percentile lead period on file",
        "highest lead result (ppb)",
        "sample count",
        "samples over 15 ppb (current action level)",
        "samples over 10 ppb (2027 action level)",
        "[period, copper 90th-percentile mg/L] or null - Envirofacts carries CU90 only for periods that exceeded 1.3 mg/L",
        "first period on file",
        "[unknown material lines, galvanized-requiring-replacement, lead lines, non-lead lines, GRR-plus-lead total, service-line inventory reporting note, submission date, submitted-N/A flag] EPA service line inventory (2026 Q2)"
      ],
      "source": "SDWIS lead and copper 90th-percentile tap results (Envirofacts); EPA service line inventory dashboard, 2026 Q2"
    },
    "tr": {
      "topic": "fluoride",
      "name": "Registered treatment steps",
      "type": "array",
      "fields": [
        "list of SDWIS treatment process codes, e.g. 'CC' coagulation, 'CG' ?, 'CL' chlorination, 'FE' iron/manganese removal, 'FL' fluoridation, 'IX' ion exchange, 'LS' lime softening, 'OZ' ozonation, 'PC' ?, 'SF' sand filtration, 'UV' UV disinfection, 'NT' no treatment"
      ],
      "source": "SDWIS treatment table (Envirofacts)",
      "note": "code expansions for CG and PC were not confirmed against any legend in template.html; the rest follow standard SDWIS treatment process abbreviations."
    },
    "mwf": {
      "topic": "fluoride",
      "name": "CDC My Water's Fluoride status",
      "type": "array",
      "fields": [
        "fluoridated flag (1/0)",
        "fluoride concentration (mg/L) parsed from the CDC sentence, or null",
        "status code: 'adj' adjusts fluoride, 'mix' blended sources at the recommended level, 'high'/'low'/'nat' natural above/below/at the recommended level, 'no' not fluoridated, any of these prefixed 'buy' when the system buys water of that kind",
        "list of PWSIDs this system buys fluoridated water from, per the CDC sentence"
      ],
      "source": "CDC My Water's Fluoride (Ohio Department of Health reporting), fetched 2026-09-10"
    },
    "ws": {
      "name": "SDWIS system facts",
      "type": "array",
      "fields": [
        "ownership type text (e.g. 'owned by a local government')",
        "connection count",
        "population served (SDWIS figure, may differ slightly from 'pop')",
        "wholesale flag (0/1)",
        "last-inspection or last-update year",
        "?",
        "phone number",
        "primacy/contact city",
        "system type code (e.g. 'CWS' community water system)"
      ],
      "source": "EPA SDWIS system-level facts (data/sdwis/ws_systems.json)",
      "note": "field 5 not individually confirmed."
    },
    "rt": {
      "name": "Water/sewer rates",
      "type": "array",
      "fields": [
        "[connection count or index, ?, monthly bill $ at a reference usage] water rate row",
        "same shape for sewer"
      ],
      "source": "Ohio EPA 2023 Sewer and Water Rate Survey (Ohio State, May 2025)",
      "note": "sub-array element meaning inferred from context (rtLine-style usage); individual positions not each confirmed."
    },
    "sab": {
      "name": "Service area boundary quality",
      "type": "array",
      "fields": [
        "boundary-source label (e.g. \"from the utility's own map\", 'modelled by EPA (random forest)', 'modelled by EPA (decision tree)', 'drawn by EPA from parcel data', 'drawn by EPA from OpenStreetMap', or a municipal-boundary-substitution note)",
        "estimated residents inside the EPA polygon divided by population served (can exceed or fall well below 1)",
        "estimated residents inside the polygon (count)"
      ],
      "source": "computed from EPA Service Area Boundaries (SAB) metadata and each ZIP's population-weighted overlap"
    },
    "pl": {
      "name": "Ohio EPA PFAS plant-sampling status",
      "type": "array",
      "fields": [
        "status-as-of date",
        "?",
        "sampling-events or plants-sampled count",
        "?"
      ],
      "source": "Ohio EPA water treatment plant PFAS sampling status layer (DrinkingWater/PFAS_SAMPLING)",
      "note": "not to be confused with the ZIP-level 'pl' field, which is the nearest gas transmission pipeline. Fields 1 and 3 not individually confirmed."
    },
    "rc": {
      "name": "RCAP lead-assistance flag",
      "type": "number",
      "fields": [
        "always 1 when present: the system is a H2Ohio RCAP lead service line inventory assistance site"
      ],
      "source": "Ohio EPA H2Ohio RCAP lead service line inventory assistance sites"
    }
  }
}
