{"id": "charleston-wv", "label": "Charleston, WV", "city": "Charleston", "state": "WV", "county": "Kanawha County", "geography": "single-radius town", "population": 46117, "researched_on": "2026-09-14", "pipeline_version": "2.1.0", "model": "grok-4.3", "counts": {"total": 80, "sourced": 29, "derived": 31, "estimated": 20}, "gaps": 1, "citations": {"checked": 15, "passed": 11, "failed": 4}, "research_cost_usd": 0.0, "summary": "This is a planning tool, not a prediction. Of the 80 numbers behind a season in Charleston, 29 are published figures, 31 are worked out from published figures, and 20 are our own estimates. 43 of them were read straight out of a federal file that covers every city in the country, so there was no citation to trust and no page to misread. You can change any of them. Your result is only as good as the numbers you agree with.", "pack": {"id": "charleston-wv", "city": "Charleston", "state": "WV", "label": "Charleston, WV", "county": "Kanawha County", "geography_type": "single-radius town", "researched_on": "2026-09-14", "pipeline_version": "2.1.0", "model": "grok-4.3", "records": [{"id": "population", "label": "People living here", "value": 46117, "unit": "people", "basis": "sourced", "why": "US Census Bureau vintage 2025 population estimate for Charleston city, West Virginia.", "math": null, "source": {"name": "US Census Bureau, Subcounty Population Estimates", "date": "2025", "url": "https://www2.census.gov/programs-surveys/popest/datasets/2020-2025/cities/totals/sub-est2025.csv", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "SUMLEV 162, GEOID 5414600 -- Charleston city, West Virginia"}, "range": [23058, 92234], "editable": true, "theme": "people", "bulk": true}, {"id": "land_area_sqmi", "label": "How big the city is", "value": 31.397, "unit": "sq mi", "basis": "sourced", "why": "Census Bureau Gazetteer land area for Charleston city. Water is excluded.", "math": null, "source": {"name": "US Census Bureau Gazetteer", "date": "2025", "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_54.txt", "tier": "primary", "verified_on": "2026-09-08", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "GEOID 5414600 -- Charleston city"}, "range": [15.7, 62.8], "editable": true, "theme": "people", "bulk": true}, {"id": "density", "label": "People per square mile", "value": 1469, "unit": "people/sq mi", "basis": "derived", "why": "How tightly packed the town is, which is what decides how far an average trip runs and how much empty driving there is between fares.", "math": "46,117 residents divided by 31.397 square miles of land = 1,469 people per square mile.", "source": null, "range": [587, 3672], "editable": true, "theme": "people", "bulk": true}, {"id": "metro_population", "label": "People in the surrounding county", "value": 172381, "unit": "people", "basis": "sourced", "why": "US Census Bureau vintage 2025 estimate for Kanawha County, West Virginia. This is the pool a fleet actually draws on, because trips do not stop at the city line.", "math": null, "source": {"name": "US Census Bureau, County Population Estimates", "date": "2025", "url": "https://www2.census.gov/programs-surveys/popest/datasets/2020-2025/counties/totals/co-est2025-alldata.csv", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "SUMLEV 050, GEOID 54039 -- Kanawha County, West Virginia"}, "range": [86190, 344762], "editable": true, "theme": "people", "bulk": true}, {"id": "airport_name", "label": "Airport name", "value": "West Virginia International Yeager", "unit": "", "basis": "sourced", "why": "The nearest commercial service airport to this city in the FAA's own traffic file, matched by distance from the Census Bureau's internal point for the city rather than by name.", "math": null, "source": {"name": "FAA, CY2024 Passenger Boarding (Enplanement) Data for U.S. Airports", "date": "CY2024", "url": "https://www.faa.gov/airports/planning_capacity/passenger_allcargo_stats/passenger/arp-cy2024-commercial-service-enplanements.xlsx", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "Locid CRW -- West Virginia International Yeager, Charleston WV"}, "range": null, "editable": true, "depends_on": null, "bulk": true, "theme": "airport"}, {"id": "airport_code", "label": "Airport code", "value": "CRW", "unit": "", "basis": "sourced", "why": "The FAA location identifier, which is the key this pack joins the traffic file and the airport coordinate file on.", "math": null, "source": {"name": "FAA, CY2024 Passenger Boarding (Enplanement) Data for U.S. Airports", "date": "CY2024", "url": "https://www.faa.gov/airports/planning_capacity/passenger_allcargo_stats/passenger/arp-cy2024-commercial-service-enplanements.xlsx", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "Locid CRW -- West Virginia International Yeager, Charleston WV"}, "range": null, "editable": true, "depends_on": null, "bulk": true, "theme": "airport"}, {"id": "airport_passengers_year", "label": "Passengers boarding a year", "value": 202303, "unit": "enplanements/year", "basis": "sourced", "why": "FAA calendar year 2024 ENPLANEMENTS -- passengers BOARDING, which is about half of the arrivals-plus-departures figure an airport press release quotes. This is the federal count, read out of the FAA's own file.", "math": null, "source": {"name": "FAA, CY2024 Passenger Boarding (Enplanement) Data for U.S. Airports", "date": "CY2024", "url": "https://www.faa.gov/airports/planning_capacity/passenger_allcargo_stats/passenger/arp-cy2024-commercial-service-enplanements.xlsx", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "Locid CRW -- West Virginia International Yeager, Charleston WV"}, "range": [101151, 404606], "editable": true, "depends_on": null, "bulk": true, "theme": "airport"}, {"id": "airport_traffic_change_pct", "label": "Change in airport traffic, 2023 to 2024", "value": 3.8, "unit": "%", "basis": "derived", "why": "Whether the airport is growing or shrinking, which says more about the direction of airport ride demand than the level does.", "math": "FAA CY2024 enplanements 202,303 against CY2023 194,898, both from the same file (https://www.faa.gov/airports/planning_capacity/passenger_allcargo_stats/passenger/arp-cy2024-commercial-service-enplanements.xlsx): (202,303 - 194,898) / 194,898 = 3.8%.", "source": null, "range": [-50, 50], "editable": true, "depends_on": null, "bulk": true, "theme": "airport"}, {"id": "airport_distance_mi", "label": "Airport distance from the city centre", "value": 2.9, "unit": "mi", "basis": "derived", "why": "STRAIGHT-LINE miles from the Census Bureau's internal point for the city to the FAA's published coordinate for the airport. A road trip is longer -- there is no routing engine here and we do not pretend there is -- so treat this as the floor.", "math": "Great-circle distance between the city's Census internal point (38.348692, -81.632324, from the Census Gazetteer place file) and the FAA's airport coordinate (38.376021, -81.592897, from https://services6.arcgis.com/ssFJjBXIUyZDrSYZ/arcgis/rest/services/US_Airport/FeatureServer/0) = 2.9 miles. Straight line, not road miles.", "source": null, "range": [1.4, 7.1], "editable": true, "depends_on": null, "bulk": true, "theme": "airport"}, {"id": "airport_alternatives_note", "label": "Busier airports within reach", "value": "Roanoke/Blacksburg Regional (Woodrum Field) (ROA) 115 mi away, 382,103 boardings a year", "unit": "", "basis": "sourced", "why": "The nearest airport is not always the one people use. These are the busier commercial airports within 120 miles, from the same FAA file, so a reader can see the choice a traveller here actually has.", "math": null, "source": {"name": "FAA, CY2024 Passenger Boarding (Enplanement) Data for U.S. Airports", "date": "CY2024", "url": "https://www.faa.gov/airports/planning_capacity/passenger_allcargo_stats/passenger/arp-cy2024-commercial-service-enplanements.xlsx", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "Locid CRW -- West Virginia International Yeager, Charleston WV"}, "range": null, "editable": true, "depends_on": null, "bulk": true, "theme": "airport"}, {"id": "power_state_avg", "label": "Average price of electricity in this state", "value": 0.1545, "unit": "$/kWh", "basis": "sourced", "why": "The EIA's own average price to residential customers across West Virginia in June 2026. This is the all-in price actually billed, averaged over every utility in the state -- not a tariff line.", "math": null, "source": {"name": "US Energy Information Administration, Electric Power Monthly, Table 5.6.A", "date": "June 2026", "url": "https://www.eia.gov/electricity/monthly/xls/table_5_06_a.xlsx", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "West Virginia, June 2026"}, "range": [0.077, 0.309], "editable": true, "depends_on": null, "bulk": true, "theme": "power"}, {"id": "power_state_avg_commercial", "label": "Average business electricity price in this state", "value": 0.1109, "unit": "$/kWh", "basis": "sourced", "why": "The same EIA table, commercial sector. A depot charging cars overnight is billed on a commercial tariff, not a residential one, so this is usually the closer comparison.", "math": null, "source": {"name": "US Energy Information Administration, Electric Power Monthly, Table 5.6.A", "date": "June 2026", "url": "https://www.eia.gov/electricity/monthly/xls/table_5_06_a.xlsx", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "West Virginia, June 2026"}, "range": [0.055, 0.222], "editable": true, "depends_on": null, "bulk": true, "theme": "power"}, {"id": "power_state_avg_ytd", "label": "Average electricity price this year so far", "value": 0.1542, "unit": "$/kWh", "basis": "sourced", "why": "The same EIA series averaged across the year to date rather than a single month. A tool that models a whole season should lean on this one: a single month can be 5% off the year in either direction, and June 2026 YTD is a season, not a day.", "math": null, "source": {"name": "US Energy Information Administration, Electric Power Monthly, Table 5.6.B (year to date)", "date": "June 2026 YTD", "url": "https://www.eia.gov/electricity/monthly/xls/table_5_06_b.xlsx", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "West Virginia, June 2026 YTD"}, "range": [0.077, 0.308], "editable": true, "depends_on": null, "bulk": true, "theme": "power"}, {"id": "power_utility", "label": "Electric utility", "value": "Appalachian Power Co", "unit": "", "basis": "sourced", "why": "The electric utility whose EIA-861 service territory includes Kanawha County, WV -- the same county this city sits in. Matched on the county, not on the utility's trading name. 2 utilities file a service territory in this county; this is the largest by customers and the others are listed in power_utility_alternatives.", "math": null, "source": {"name": "US Energy Information Administration, Form EIA-861 2024, service territory and sales to ultimate customers", "date": "2024", "url": "https://www.eia.gov/electricity/data/eia861/zip/f8612024.zip", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "utility Appalachian Power Co (#733), Kanawha County County rows, WV"}, "range": null, "editable": true, "depends_on": null, "bulk": true, "theme": "power"}, {"id": "power_utility_alternatives", "label": "Other utilities in this county", "value": "Black Diamond Power Co (3,479 customers)", "unit": "", "basis": "sourced", "why": "Every other utility whose EIA-861 service territory covers this county. A city on the edge of a county can be on any of them, so the choice is shown rather than hidden.", "math": null, "source": {"name": "US Energy Information Administration, Form EIA-861 2024, service territory and sales to ultimate customers", "date": "2024", "url": "https://www.eia.gov/electricity/data/eia861/zip/f8612024.zip", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "utility Appalachian Power Co (#733), Kanawha County County rows, WV"}, "range": null, "editable": true, "depends_on": null, "bulk": true, "theme": "power"}, {"id": "power_utility_rate", "label": "What this utility's residential customers pay on average", "value": 0.1677, "unit": "$/kWh", "basis": "derived", "why": "Revenue divided by sales for Appalachian Power Co, out of the EIA's own annual file. Bundled service only: a delivery-only row charges a delivery fee against the full kilowatt-hours and folding it in produces a rate nobody is billed.", "math": "Form EIA-861 2024 for Appalachian Power Co: residential revenue of $776,640.0 thousand against 4,632,296 MWh sold. (776,640.0 x 1,000 dollars) / (4,632,296 x 1,000 kWh) = $0.1677 a kWh. This is the utility's own average across its whole residential class -- it is not a tariff, and a customer on a particular rate schedule will pay more or less.", "source": null, "range": [0.084, 0.335], "editable": true, "depends_on": null, "bulk": true, "theme": "power"}, {"id": "power_utility_rate_commercial", "label": "What this utility's business customers pay on average", "value": 0.1235, "unit": "$/kWh", "basis": "derived", "why": "The same calculation for the commercial class, which is the one a leased bay with a charger would be billed on.", "math": "Form EIA-861 2024 for Appalachian Power Co: commercial revenue of $383,165.0 thousand against 3,102,967 MWh sold, so $0.1235 a kWh.", "source": null, "range": [0.062, 0.247], "editable": true, "depends_on": null, "bulk": true, "theme": "power"}, {"id": "climate_station", "label": "Weather station these figures come from", "value": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 miles from the city centre", "unit": "", "basis": "sourced", "why": "The nearest NOAA station with a complete thirty-year record, chosen by distance from the Census Bureau's internal point for the city. 0 nearer station(s) were skipped because they measure rainfall but not temperature.", "math": null, "source": {"name": "NOAA National Centers for Environmental Information, 1991-2020 U.S. Climate Normals, station USW00013866", "date": "1991-2020", "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00013866.csv", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre"}, "range": null, "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "temp_annual_avg_f", "label": "Average temperature over the year", "value": 56.2, "unit": "F", "basis": "derived", "why": "The mean of the twelve monthly normals, 1991-2020.", "math": "NOAA 1991-2020 monthly normals for station USW00013866: the twelve MLY-TAVG-NORMAL values averaged = 56.2F.", "source": null, "range": [41.2, 71.2], "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "temp_coldest_month_avg_f", "label": "Average temperature in the coldest month", "value": 35.0, "unit": "F", "basis": "sourced", "why": "January is the coldest month here on the 1991-2020 normals. Cold is what puts range into a battery pack and puts people into a car instead of on a bike.", "math": null, "source": {"name": "NOAA National Centers for Environmental Information, 1991-2020 U.S. Climate Normals, station USW00013866", "date": "1991-2020", "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00013866.csv", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre"}, "range": [20.0, 50.0], "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "temp_hottest_month_avg_f", "label": "Average temperature in the hottest month", "value": 75.8, "unit": "F", "basis": "sourced", "why": "July is the hottest month here on the 1991-2020 normals.", "math": null, "source": {"name": "NOAA National Centers for Environmental Information, 1991-2020 U.S. Climate Normals, station USW00013866", "date": "1991-2020", "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00013866.csv", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre"}, "range": [60.8, 90.8], "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "precip_year_in", "label": "Rain and melted snow in a year", "value": 46.24, "unit": "in/year", "basis": "derived", "why": "The twelve monthly precipitation normals added up. Wet weather is one of the few things that reliably lifts ride-hail demand.", "math": "NOAA 1991-2020 monthly normals for station USW00013866: the twelve MLY-PRCP-NORMAL values summed = 46.24 inches a year.", "source": null, "range": [23.1, 83.2], "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "wet_days_year", "label": "Days a year with measurable rain", "value": 151.0, "unit": "days/year", "basis": "derived", "why": "Days with at least a hundredth of an inch. The COUNT of wet days moves demand more than the total depth does -- one downpour is one busy evening.", "math": "NOAA 1991-2020 normals for station USW00013866: the twelve MLY-PRCP-AVGNDS-GE001HI values summed = 151.0 days a year.", "source": null, "range": [0, 250], "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "snow_year_in", "label": "Snow in a year", "value": 31.5, "unit": "in/year", "basis": "derived", "why": "From station USW00013866, 3.1 miles away -- NOT the temperature station above. Fewer stations report snowfall than report temperature, so the nearest one that does is used and named rather than the figure being written down as zero.", "math": "NOAA 1991-2020 normals for station CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 miles from the city centre: the twelve MLY-SNOW-NORMAL values summed = 31.5 inches a year.", "source": null, "range": [0, 63], "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "snow_days_year", "label": "Days a year with measurable snow", "value": 23.9, "unit": "days/year", "basis": "sourced", "why": "Days with at least a tenth of an inch of snowfall, from the same station as the annual total.", "math": null, "source": {"name": "NOAA NCEI 1991-2020 U.S. Climate Normals, station USW00013866", "date": "1991-2020", "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00013866.csv", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre"}, "range": [0, 200], "editable": true, "depends_on": null, "bulk": true, "theme": "weather"}, {"id": "adult_share", "label": "Share of residents who are adults", "value": 0.8094, "unit": "share", "basis": "derived", "why": "Residents 18 and over in Charleston, WV, from the Census Bureau's own age table. This is the first link in the rides-a-day chain, so it is worth having from the primary file rather than a re-publication of it.", "math": "ACS 2020-2024 5-year table B01001 for GEO_ID 1600000US5414600: total population 47,421, of whom 9,039 are under 18 (the eight under-18 age bands for males and females). (47,421 - 9,039) / 47,421 = 0.8094.", "source": null, "range": [0.55, 0.95], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "median_household_income", "label": "What a household here earns in a year", "value": 65812, "unit": "$/year", "basis": "sourced", "why": "The median household income in Charleston, WV. It is the ceiling on what a ride can be priced at before people walk, and it is published for every city in the country.", "math": null, "source": {"name": "US Census Bureau, American Community Survey 2020-2024 5-year estimates, table B19013", "date": "2020-2024", "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b19013.dat", "tier": "primary", "verified_on": "2026-09-07", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "GEO_ID 1600000US5414600, B19013_E001"}, "range": [32906, 131624], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "no_vehicle_share", "label": "Share of households with no car", "value": 0.1242, "unit": "share", "basis": "derived", "why": "Households in Charleston, WV with no vehicle available. This is the strongest published local signal there is for who has to hire a ride, and it is the one number in this pack that most directly separates a town where everyone drives from one where a fleet has a market.", "math": "ACS 2020-2024 5-year table B25044 for GEO_ID 1600000US5414600: 21,116 occupied households, of which 537 owner-occupied (B25044_E003) and 2,086 renter-occupied (B25044_E010) have no vehicle available. (537 + 2,086) / 21,116 = 0.1242, or 12.4%.", "source": null, "range": [0, 0.6], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "commute_drove_alone_share", "label": "Share who drive to work alone", "value": 0.7202, "unit": "share", "basis": "derived", "why": "How car-shaped the town is. A place where four in five drive alone is one where a ride is a substitute for a car nobody wants to give up.", "math": "ACS 2020-2024 5-year table B08301 for GEO_ID 1600000US5414600: 15,130 of 21,008 workers 16 and over (B08301_E003 / B08301_E001) = 0.7202, or 72.02%.", "source": null, "range": [0, 1], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "commute_transit_share", "label": "Share who take public transport to work", "value": 0.0099, "unit": "share", "basis": "derived", "why": "The competition, and the floor under demand when it stops running at night.", "math": "ACS 2020-2024 5-year table B08301 for GEO_ID 1600000US5414600: 207 of 21,008 workers 16 and over (B08301_E010 / B08301_E001) = 0.0099, or 0.99%.", "source": null, "range": [0, 1], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "commute_taxi_ridehail_share", "label": "Share who commute by taxi or ride-hail", "value": 0.0046, "unit": "share", "basis": "derived", "why": "The Census counts this line explicitly. It is a small number everywhere, and it is the only published local measurement of ride-hail use there is.", "math": "ACS 2020-2024 5-year table B08301 for GEO_ID 1600000US5414600: 96 of 21,008 workers 16 and over (B08301_E016 / B08301_E001) = 0.0046, or 0.46%.", "source": null, "range": [0, 1], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "commute_wfh_share", "label": "Share who work from home", "value": 0.1303, "unit": "share", "basis": "derived", "why": "Workers who make no commute trip at all, which takes the top off weekday morning demand.", "math": "ACS 2020-2024 5-year table B08301 for GEO_ID 1600000US5414600: 2,737 of 21,008 workers 16 and over (B08301_E021 / B08301_E001) = 0.1303, or 13.03%.", "source": null, "range": [0, 1], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "mean_commute_minutes", "label": "How long the average commute takes", "value": 16.9, "unit": "minutes", "basis": "derived", "why": "The mean one-way journey to work in Charleston, WV. It is the best published proxy for how far a typical local trip runs, and the trip-length estimate should be argued against it.", "math": "ACS 2020-2024 5-year tables B08013 and B08303 for GEO_ID 1600000US5414600: 309,140 aggregate minutes of travel to work divided by 18,271 workers who did not work from home = 16.9 minutes.", "source": null, "range": [5, 60], "editable": true, "depends_on": null, "bulk": true, "theme": "people"}, {"id": "local_cleaner_wage", "label": "What a car cleaner is paid here", "value": 13.32, "unit": "$/hour", "basis": "sourced", "why": "The median hourly wage for Cleaners of Vehicles and Equipment (occupation 53-7061) in Charleston, WV, from the Bureau of Labor Statistics' own May 2024 estimates. This is the single biggest component of every cleaning price below, and it is published for every metropolitan AND non-metropolitan area in the country -- which is why a town of three thousand people gets a real figure here and a web search for a local detailer gets nothing.", "math": "BLS Occupational Employment and Wage Statistics, May 2024, occupation 53-7061, area area 'Charleston, WV', 180 people employed in it: median hourly wage $13.32. The national median for the same occupation is $16.96, so this town's labour index is 13.32 / 16.96 = 0.785.", "source": {"name": "US Bureau of Labor Statistics, Occupational Employment and Wage Statistics, May 2024", "date": "2024-05", "url": "https://www.bls.gov/oes/special-requests/oesm24ma.zip", "tier": "primary", "verified_on": "2026-09-09", "verified_by": "read directly out of the federal bulk file at this URL, matched on a key rather than on a name", "row_key": "OCC_CODE 53-7061, AREA 16620 -- Charleston, WV"}, "range": [7.99, 23.98], "editable": true, "depends_on": null, "bulk": true, "derived_from": [{"name": "US Bureau of Labor Statistics, Occupational Employment and Wage Statistics, May 2024", "date": "2024-05", "url": "https://www.bls.gov/oes/special-requests/oesm24ma.zip", "read_on": "2026-09-09", "value": 13.32, "unit": "$/hour", "note": "occupation 53-7061, Charleston, WV"}], "theme": "costs"}, {"id": "labour_note", "label": "What hand work costs here", "value": "Cleaners of Vehicles and Equipment in Charleston, WV are paid a median of $13.32 an hour (BLS May 2024, occupation 53-7061, 180 employed). The national median for the same job is $16.96, so hand work here costs 79% of what it costs nationally.", "unit": "", "basis": "derived", "why": "The wage that scales every cleaning price below. It is published for every metropolitan and non-metropolitan area in the country, which is why a town of three thousand people gets a real figure where a web search for a local detailer's rate gets nothing.", "math": "Read out of the BLS Occupational Employment and Wage Statistics May 2024 bulk files, occupation 53-7061, at the area level. No search was made for it.", "source": null, "range": null, "editable": true, "depends_on": ["local_cleaner_wage"], "bulk": true, "theme": "costs"}, {"id": "local_labour_index", "label": "How this town's labour costs compare with the country", "value": 0.785, "unit": "x national", "basis": "derived", "why": "Everything a person does by hand costs roughly what a person costs here. This one ratio scales every cleaning price in the pack, and it is measured rather than guessed.", "math": "BLS May 2024, occupation 53-7061 (Cleaners of Vehicles and Equipment): the area figure for 'Charleston, WV' is $13.32 an hour against $16.96 nationally, so 13.32 / 16.96 = 0.785. This is a genuine local labour market estimate.", "source": null, "range": [0.5, 2.0], "editable": true, "depends_on": null, "bulk": true, "theme": "costs"}, {"id": "local_rent_index", "label": "How this town's property costs compare with the country", "value": 0.643, "unit": "x national", "basis": "derived", "why": "Rent is the other half of a local cost. There is no published rent for small commercial bays anywhere in the country, so the pack uses the one property price that IS published for 32,330 places -- what people pay to rent a home here against what they pay nationally. It is housing, not industrial space, and it is used as a proxy on purpose rather than by accident.", "math": "ACS 2020-2024 5-year table B25064, median gross rent: $908 a month in Charleston, WV (place level) against $1,413 for the United States from the same table (GEO_ID 0100000US), so 908 / 1413 = 0.643.", "source": null, "range": [0.2, 3.0], "editable": true, "depends_on": null, "bulk": true, "theme": "costs"}, {"id": "clean_wipe_cost", "label": "A quick interior wipe between shifts", "value": 27, "unit": "$", "basis": "derived", "why": "This is a derivation, not a local quote: a national published figure scaled by a published local index. Nobody publishes a quick contracted interior wipe-down in a town this size, because it is a manual service: keeping a price list current is work, and the price is whatever the owner says on the day. A real quote from a real local supplier beats this number, and it is exactly what you should type over it. The national half of it is what Uber and Lyft themselves pay a driver for a minor mess -- published, national, and kept current because money moves on it every day.", "math": "NATIONAL BASELINE $35.00, then scaled to this town.\n  Lyft publishes a flat $25 for minor 'small food/beverage spills, scuff marks, mud, dirt, or animal fur in the car'.\n  Uber publishes $30 to $60 for a minor mess: 'spills or messes that require extensive cleaning' -- centre $45.00.\n  Average of the two operators' central values: ($25 + $45.00) / 2 = $35.00.\n  Both platforms pay the fee straight to the driver, and Uber requires an itemised receipt from a cleaning service for a professional claim, so these tiers are the platforms' own published view of what such a clean costs.\n  LOCAL STEP: $35.00 x labour index 0.785 = $27.\n  DIRECTION OF ERROR, stated rather than hidden: a platform fee prices a MESS, not a booked clean, so it brackets the right number rather than being it. Neither page carries a publication date; both were read on 2026-09-09.", "source": null, "range": [11, 69], "editable": true, "depends_on": ["local_labour_index"], "bulk": true, "derived_from": [{"name": "Lyft, damage fee policy", "date": null, "url": "https://help.lyft.com/hc/en-us/all/articles/115012927367-I-was-charged-a-damage-fee", "read_on": "2026-09-09", "value": 25.0, "unit": "$", "note": "minor damage"}, {"name": "Uber, driver cleaning fee policy", "date": null, "url": "https://help.uber.com/en/riders/article/uber-driver-cleaning-fee-policy?nodeId=2dba264f-edb9-4ae7-8186-68dd399874f0", "read_on": "2026-09-09", "value": [30.0, 60.0], "unit": "$", "note": "minor mess"}], "theme": "costs", "game_id": "wipe_cost_contract"}, {"id": "clean_deep_cost", "label": "A full interior clean", "value": 57, "unit": "$", "basis": "derived", "why": "This is a derivation, not a local quote: a national published figure scaled by a published local index. Nobody publishes a full interior detail in a town this size, because it is a manual service: keeping a price list current is work, and the price is whatever the owner says on the day. A real quote from a real local supplier beats this number, and it is exactly what you should type over it. The national half of it is what Uber and Lyft themselves pay a driver for a moderate mess -- published, national, and kept current because money moves on it every day.", "math": "NATIONAL BASELINE $72.50, then scaled to this town.\n  Lyft publishes a flat $75 for moderate 'biowaste outside of the car'.\n  Uber publishes $55 to $85 for a moderate mess: 'larger contained spills or biological messes that require focused cleaning, time, and specialized supplies' -- centre $70.00.\n  Average of the two operators' central values: ($75 + $70.00) / 2 = $72.50.\n  Both platforms pay the fee straight to the driver, and Uber requires an itemised receipt from a cleaning service for a professional claim, so these tiers are the platforms' own published view of what such a clean costs.\n  LOCAL STEP: $72.50 x labour index 0.785 = $57.\n  DIRECTION OF ERROR, stated rather than hidden: a platform fee prices a MESS, not a booked clean, so it brackets the right number rather than being it. Neither page carries a publication date; both were read on 2026-09-09.", "source": null, "range": [23, 142], "editable": true, "depends_on": ["local_labour_index"], "bulk": true, "derived_from": [{"name": "Lyft, damage fee policy", "date": null, "url": "https://help.lyft.com/hc/en-us/all/articles/115012927367-I-was-charged-a-damage-fee", "read_on": "2026-09-09", "value": 75.0, "unit": "$", "note": "moderate damage"}, {"name": "Uber, driver cleaning fee policy", "date": null, "url": "https://help.uber.com/en/riders/article/uber-driver-cleaning-fee-policy?nodeId=2dba264f-edb9-4ae7-8186-68dd399874f0", "read_on": "2026-09-09", "value": [55.0, 85.0], "unit": "$", "note": "moderate mess"}], "theme": "costs", "game_id": "deep_clean_cost"}, {"id": "clean_biohazard_cost", "label": "A biohazard clean-out", "value": 119, "unit": "$", "basis": "derived", "why": "This is a derivation, not a local quote: a national published figure scaled by a published local index. Nobody publishes an emergency biohazard clean-out in a town this size, because it is a manual service: keeping a price list current is work, and the price is whatever the owner says on the day. A real quote from a real local supplier beats this number, and it is exactly what you should type over it. The national half of it is what Uber and Lyft themselves pay a driver for a severe mess -- published, national, and kept current because money moves on it every day.", "math": "NATIONAL BASELINE $151.25, then scaled to this town.\n  Lyft publishes a flat $150 for severe 'large biowaste spills that would require specialized cleaning'.\n  Uber publishes $80 to $225 for a severe mess: 'substantial messes involving large amounts of bodily fluids or difficult-to-clean matter across multiple areas' -- centre $152.50.\n  Average of the two operators' central values: ($150 + $152.50) / 2 = $151.25.\n  Both platforms pay the fee straight to the driver, and Uber requires an itemised receipt from a cleaning service for a professional claim, so these tiers are the platforms' own published view of what such a clean costs.\n  LOCAL STEP: $151.25 x labour index 0.785 = $119.\n  DIRECTION OF ERROR, stated rather than hidden: a platform fee prices a MESS, not a booked clean, so it brackets the right number rather than being it. Neither page carries a publication date; both were read on 2026-09-09.", "source": null, "range": [48, 297], "editable": true, "depends_on": ["local_labour_index"], "bulk": true, "derived_from": [{"name": "Lyft, damage fee policy", "date": null, "url": "https://help.lyft.com/hc/en-us/all/articles/115012927367-I-was-charged-a-damage-fee", "read_on": "2026-09-09", "value": 150.0, "unit": "$", "note": "severe damage"}, {"name": "Uber, driver cleaning fee policy", "date": null, "url": "https://help.uber.com/en/riders/article/uber-driver-cleaning-fee-policy?nodeId=2dba264f-edb9-4ae7-8186-68dd399874f0", "read_on": "2026-09-09", "value": [80.0, 225.0], "unit": "$", "note": "severe mess"}], "theme": "costs", "game_id": "bio_contractor_cost"}, {"id": "depot_rent_month", "label": "A small commercial bay, per month", "value": 819, "unit": "$/month", "basis": "derived", "why": "This is a derivation, not a local quote: a national published figure scaled by a published local index. Nobody publishes what a 1,500 square foot bay lets for in a town this size, because small commercial bays let privately, one handshake at a time, and no index tracks them. A real quote from a real local supplier beats this number, and it is exactly what you should type over it.", "math": "NATIONAL BASELINE: Cushman & Wakefield, MarketBeat United States Industrial Q1 2026 reports an overall US industrial asking rent of $10.20 a square foot a year, NNN. 1,500 square feet x $10.20 = $15,300 a year = $1,275.00 a month nationally.\n  LOCAL STEP: $1,275.00 x rent index 0.643 = $819 a month.\n  TWO WAYS THIS IS LOW, said rather than hidden: the national figure is the overall industrial average, dominated by large logistics buildings, and a 1,500 square foot service bay asks MORE per square foot than a 500,000 square foot warehouse -- no premium is applied because no published figure supports one. And NNN means taxes, insurance and common-area costs are on top of this. Treat it as a floor. Read on 2026-09-09.", "source": null, "range": [328, 2458], "editable": true, "depends_on": ["local_rent_index"], "bulk": true, "derived_from": [{"name": "Cushman & Wakefield, MarketBeat United States Industrial Q1 2026", "date": "2026-Q1", "url": "https://assets.cushmanwakefield.com/-/media/cw/marketbeat-pdfs/2026/q1/us-reports/national/q12026usindustrialmarketbeat.pdf", "read_on": "2026-09-09", "value": 10.2, "unit": "$/sq ft/year", "note": "overall US industrial asking rent, NNN"}], "theme": "costs", "game_id": "depot_bay_rent"}, {"id": "insurance_base_month", "label": "Insurance on the first car", "value": 284, "unit": "$/month", "basis": "derived", "why": "This is a derivation, not a local quote: a national published figure scaled by a published local index. Nobody publishes a price for commercial for-hire cover on a single car in a town this size, because a premium is quoted to a particular operator on particular facts, and no insurer publishes a rate table for for-hire cars. A real quote from a real local supplier beats this number, and it is exactly what you should type over it. What stands in for it is general commercial auto adjusted upward for for-hire use, and that adjustment is our judgement, not a published figure.", "math": "NATIONAL BASELINE: Insureon, Commercial auto insurance cost (updated 2026-03-04) reports a median of $245 a month for commercial auto across 100,000 small-business policyholders, calculated as 'the median cost of policies sold by leading insurance carriers to Insureon's small business customers'.\n  FOR-HIRE UPLIFT x1.40 -- THIS IS OUR JUDGEMENT, NOT A PUBLISHED FIGURE. Progressive publish their own 2025 new-policy premium per power unit by class: business auto $276 a month against for-hire specialty truck $734 and for-hire transport truck $926, so their for-hire classes run 2.7 to 3.4 times general business auto. Those classes are TRUCKS; a for-hire passenger car sits between a tradesman's van and a truck, and 1.40 is a conservative reading of that gap.\n  STATE STEP: NAIC 2023 average auto expenditure is $1,062.98 in WV against $1,281.60 countrywide, so the state index is 1062.98 / 1281.60 = 0.829. It is PERSONAL auto -- nobody publishes commercial for-hire premiums by state -- but what it measures is the part that genuinely varies between states: the loss environment, the tort and rate-filing regime, the uninsured rate and the minimum limits.\n  $245 x 1.40 x 0.829 = $284 a month. This is the number in the pack most worth replacing with a real quote. Read on 2026-09-09.", "source": null, "range": [114, 852], "editable": true, "depends_on": null, "bulk": true, "derived_from": [{"name": "Insureon, Commercial auto insurance cost", "date": "2026-03-04", "url": "https://www.insureon.com/small-business-insurance/commercial-auto/cost", "read_on": "2026-09-09", "value": 245.0, "unit": "$/month", "note": "median commercial auto, small business"}, {"name": "Progressive Commercial, average commercial auto cost by business type", "date": "2025", "url": "https://www.progressivecommercial.com/commercial-auto-insurance/commercial-auto-cost/", "read_on": "2026-09-09", "note": "evidence for the direction and rough size of a for-hire uplift"}, {"name": "National Association of Insurance Commissioners, 2023 Auto Insurance Database Average Premium Supplement, Table 4", "date": "2025-06", "url": "https://content.naic.org/sites/default/files/aut-db_1.pdf", "read_on": "2026-09-09", "value": 1062.98, "unit": "$/year", "note": "WV average expenditure per insured vehicle, personal auto"}], "theme": "costs", "game_id": "insurance_base"}, {"id": "insurance_per_car_month", "label": "Insurance on each car after the first", "value": 241, "unit": "$/month", "basis": "derived", "why": "What each additional vehicle adds to the premium. Lower than the first car because a fleet policy spreads the administrative part of a premium across the vehicles while the risk part scales with them -- which is part of why growing is the way out of the trap.", "math": "$284 (the first car, above) x 0.85 = $241. NOBODY PUBLISHES THAT SPLIT: the 0.85 is ours, and it is the reason a second car is cheaper to run than the first.", "source": null, "range": [96, 723], "editable": true, "depends_on": ["insurance_base_month"], "bulk": true, "theme": "costs", "game_id": "insurance_per_car"}, {"id": "power_offpeak", "theme": "power", "label": "Overnight electricity", "value": 0.107665, "unit": "$/kWh", "basis": "sourced", "why": "Appalachian Power WV Schedule R.S.-T.O.D. all-in off-peak (base energy + ENEC with embedded CRRC + EE/DR + ECS + RET; CS/BBS/BRSP are $0). Midnight–06:00 is fully inside the tariff off-peak window of 9 p.m.–7 a.m. weekdays (and all weekend/holidays). Charleston’s 4.17% municipal B&O surcharge is not included. This is a secondary source -- it republishes a figure it did not itself produce. Note: the cited page prints 10.795 where this record says 0.107665 -- close enough to be the same figure rounded or a neighbouring year, but they are not identical.", "math": null, "source": {"name": "Appalachian Power Co. P.S.C. W.Va. Tariff No. 16, Exhibit of Standard Schedule Rates (Sheet 38)", "date": "2026-09", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "found 10.795 a line or two from 'off-peak' (printed in cents) -- the page says 10.795, the record says 0.107665"}, "range": [0.05, 0.2], "editable": true, "depends_on": null, "game_id": "power_offpeak"}, {"id": "power_mid", "theme": "power", "label": "Daytime electricity", "value": 0.239805, "unit": "$/kWh", "basis": "estimated", "why": "Appalachian Power WV R.S.-T.O.D. has no mid-peak period—only on-peak and off-peak. Weekday 06:00–16:00 is almost entirely on-peak (on-peak is 7 a.m.–9 p.m.), so this is the tariff’s all-in on-peak rate (base + ENEC/CRRC + EE/DR + ECS + RET). Only 06:00–07:00 is actually off-peak. Unconfirmed -- treated as our estimate.", "math": "Verification failed on https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf: the cited page loads but does not carry the figure (the digits 24 appear near 'r.s.-t.o.d.' but on a different row -- that is a neighbouring entry in the same table, not this city's figure). We checked the citation the research pass gave us and could not confirm it, so this number is presented as our own estimate rather than as a published figure.", "source": null, "range": [0.1, 0.4], "editable": true, "depends_on": null, "game_id": "power_mid"}, {"id": "power_onpeak", "theme": "power", "label": "Evening peak electricity", "value": 0.239805, "unit": "$/kWh", "basis": "estimated", "why": "Appalachian Power WV Schedule R.S.-T.O.D. all-in on-peak (base 17.077¢ + ENEC 5.857¢ with CRRC embedded + EE/DR 0.1826¢ + ECS 0.650¢ + RET 0.21386¢). Tariff on-peak is 7 a.m.–9 p.m. weekdays, so 16:00–21:00 is on-peak and 21:00–24:00 is actually off-peak at $0.107665. Unconfirmed -- treated as our estimate.", "math": "Verification failed on https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf: the cited page loads but does not carry the figure (the digits 24 appear near 'r.s.-t.o.d.' but on a different row -- that is a neighbouring entry in the same table, not this city's figure). We checked the citation the research pass gave us and could not confirm it, so this number is presented as our own estimate rather than as a published figure.", "source": null, "range": [0.1, 0.45], "editable": true, "depends_on": null, "game_id": "power_onpeak"}, {"id": "power_dcfc", "theme": "power", "label": "Public DC fast charging", "value": 0.44, "unit": "$/kWh", "basis": "sourced", "why": "Tesla Supercharger at 2 Kanawha Boulevard E, Charleston, WV 25301 (8 stalls, 150 kW). DCFC Tracker reports Tesla’s member rate of $0.44/kWh as of 2026-09-14. This downtown site is Tesla vehicles only; the nearest Supercharger open to all EVs is Marmet (10410 MacCorkle Ave) at $0.61/kWh public / $0.42 member. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "DCFC Tracker (Tesla public station pricing)", "date": "2026-09", "url": "https://dcfctracker.com/stations/102505", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the exact quoted text is on the page"}, "range": [0.25, 0.8], "editable": true, "depends_on": null, "game_id": "supercharger_kwh", "federal_check": {"verdict": "confirmed", "subject": "chargers", "claim": "8 fast-charging stalls (Tesla Supercharger)", "federal": "the note counts 8 stalls; the snapshot lists Charleston, WV - Tesla Supercharger with 8 fast ports 0.7 mi from the town center (TESLA)", "checked_on": "2026-09-18", "findings": 2}}, {"id": "power_tou_note", "theme": "power", "label": "Time-of-use tariff available", "value": "Yes: Schedule R.S.-T.O.D. (any residential customer; off-peak 9pm–7am weekdays and all weekend/holidays); also Schedule PEV for EV owners with AMI meters (off-peak 8pm–6am) and G.S.-T.O.D. for commercial.", "unit": "", "basis": "sourced", "why": "Appalachian Power’s West Virginia tariff book lists Schedule R.S.-T.O.D. as a voluntary residential time-of-day rate through a single multi-register meter, plus Schedule PEV for plug-in EV charging and commercial TOD schedules. A small overnight operator can take R.S.-T.O.D. without owning an EV; PEV requires a licensed PEV and a dedicated charging circuit. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "Appalachian Power Co. P.S.C. W.Va. Tariff No. 16, Schedule R.S.-T.O.D. and Schedule PEV", "date": "2026-07", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the page carries 13 of the 14 distinctive words in this note"}, "range": [], "editable": true, "depends_on": null}, {"id": "ridehail_present", "theme": "demand", "label": "Ride-hail and taxi supply", "value": "Uber and Lyft operate 24/7 but supply is thin (Uber warns pickups take longer than in bigger cities); C&H Taxi is the local 24/7 cab (~30 cars) and posts driver shortages and long waits.", "unit": "", "basis": "sourced", "why": "Operator pages confirm Uber/Lyft and the hometown cab actually serve Charleston, WV today, and both Uber and C&H describe thin supply rather than a dense fleet. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "Uber (Charleston, WV city page)", "date": "2026-09", "url": "https://www.uber.com/global/en/r/cities/charleston-wv-us/", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the page carries 9 of the 14 distinctive words in this note"}, "range": [0, 1], "editable": true, "depends_on": null}, {"id": "transit_note", "theme": "demand", "label": "Public bus evenings and weekends", "value": "KRT buses run Monday–Saturday from as early as 4:00 a.m. to as late as 1:55 a.m. depending on the route, with no Sunday service; on-demand KRT Plus is Monday–Saturday 6 a.m.–6 p.m. only.", "unit": "", "basis": "sourced", "why": "KRT’s own passenger-info page is the operator schedule: evening buses exist on some routes, but Sunday is a complete gap, which pushes Sunday and late-night trips onto cars and paid rides. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "Kanawha Valley Regional Transportation Authority", "date": "2026-05", "url": "https://rideonkrt.com/passenger-info/", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the page carries 8 of the 14 distinctive words in this note"}, "range": [0, 1], "editable": true, "depends_on": null}, {"id": "trip_mi_avg", "theme": "demand", "label": "Average paid trip length", "value": 4.8, "unit": "miles", "basis": "derived", "why": "Charleston’s 31.397 sq mi land area and 16.9-minute mean commute imply short hops; Uber’s own Charleston page publishes a 13-minute average ride, which at urban street speed is about 5 miles, not a 10-mile suburban mean.", "math": "Land area 31.397 sq mi → equivalent-circle radius sqrt(31.397/π) ≈ 3.16 mi (diameter ≈ 6.3 mi). Mean distance between random points in a disk is about 0.90×radius ≈ 2.9 mi, a floor for intra-city hops. Uber’s Charleston page states average rides last 13 minutes; at 22 mph city-street speed that is 13/60×22 ≈ 4.8 mi. The local mean commute is 16.9 minutes (short vs a ~26-minute U.S. mean), so we step the national TNC-length analog DOWN on that commute ratio rather than using a 6–8 mi large-metro figure. Uber also lists Charleston–South Charleston as 7 mi, so 4.8 mi sits between the 2.9 mi random-in-city floor and the 7 mi adjacent-suburb hop. Likely a little high if most paid trips are downtown/hospital/bar hops; a little low if airport-plus-Southridge trips dominate.", "source": null, "range": [2.5, 8], "editable": true, "depends_on": null}, {"id": "trip_mi_short_share", "theme": "demand", "label": "Share of trips under 3 miles", "value": 0.42, "unit": "", "basis": "estimated", "why": "A 31 sq mi city with a 4.8-mile mean paid trip and a 2–3 mile airport run should have a large under-3-mile share; this is not a long-haul metro.", "math": "With trip_mi_avg = 4.8 and most generators (downtown, CAMC campuses, Capitol, Yeager at ~2–4 mi, University of Charleston) inside a ~6 mi envelope, a log-normal sketch with median near 3.3 mi puts P(length<3) around 0.40–0.45. We use 0.42. Stepped DOWN from a national all-trips short-share because paid rides skip walkable errands but Charleston’s no-vehicle households (0.1242) and short 16.9-minute commute keep many paid trips local. Likely conservative (too low) if downtown bar/hospital hops dominate; too high if South Charleston/Southridge jobs dominate.", "source": null, "range": [0.2, 0.7], "editable": true, "depends_on": ["trip_mi_avg"]}, {"id": "trip_mi_long_share", "theme": "demand", "label": "Share of trips over 10 miles", "value": 0.12, "unit": "", "basis": "estimated", "why": "The city’s own diameter is only about 6 miles, so trips over 10 miles are the minority (Nitro, Cross Lanes, Institute, Huntington-bound) rather than the typical paid ride.", "math": "Uber’s listed Charleston–South Charleston hop is 7 mi (under the 10 mi cutoff). Cross Lanes/Nitro/Institute sit ~8–15 mi; Huntington is ~50 mi and rare. With mean 4.8 mi, P(length>10) on a right-skewed distribution is about 0.10–0.15. Use 0.12. Stepped DOWN from national person-trip long shares because this geography is compact and the 16.9-minute commute says residents do not routinely travel 10+ mi for daily trips. Likely a little high if almost all paid demand is in-city; a floor if airport-to-suburb and medical-referral trips are common.", "source": null, "range": [0.03, 0.3], "editable": true, "depends_on": ["trip_mi_avg"]}, {"id": "night_share", "theme": "demand", "label": "Share of demand 21:00–03:00", "value": 0.16, "unit": "", "basis": "estimated", "why": "CAMC is a large 24-hour employer, UC has an on-campus population, and KRT runs no Sunday buses, but Charleston is not a nightlife city, so overnight is above a sleepy suburb and well below a bar-district metro.", "math": "The 21:00–03:00 window is 6/24 = 0.25 of clock time. Uniform demand would be 0.25; TNC demand is usually evening-weighted in cities with bars and hospitals, daytime-weighted where people have cars. Local facts used: 0.1242 of households have no vehicle (ACS, established); KRT has no Sunday service and KRT Plus stops at 6 p.m.; CAMC reports 11,905 employees and is a 24-hour Level I trauma center, so night shift changes are real; UC enrollment is 3,032 with 722 living on campus (2025). We put night share at 0.16 — below 0.25 because this is a car-owning capital city with thin bar demand, above 0.10 because hospital nights, no-Sunday-bus, and no-car households cannot be ignored. Likely conservative (low) on Friday/Saturday and on nights KRT has already stopped; high on weekday midnights.", "source": null, "range": [0.08, 0.28], "editable": true, "depends_on": null}, {"id": "visitors_year", "theme": "demand", "label": "Annual visitors", "value": 1140000, "unit": "visitors/year", "basis": "derived", "why": "Calendar year 2023 is the latest year Tourism Economics published both statewide visitor volume and Kanawha County spending; Charleston CVB does not publish a citywide annual visitor total. This is an overnight-oriented city figure, not the 77.2 million 2024 statewide count.", "math": "Tourism Economics (Aug 2024 report, year 2023): 75 million visitors to West Virginia, of which 16.5 million were overnight and 58.5 million day; statewide spending $6.335 billion. Kanawha County visitor spending in that report is $624.25 million (9.85% of $6.335B). Implied Kanawha overnight person-visits = 16.5e6 × (624.25/6335) ≈ 1,626,000. Charleston city is 46,117 of 172,381 county residents (26.8%) but holds the capitol, CAMC, the coliseum, and most hotels; assign 70% of Kanawha overnight visits to the city → 1,138,000, rounded to 1,140,000. Year locked to 2023 because the 2024 statewide report (77.2 million visitors, $6.6 billion spend) has no county table, and mixing years is what made prior packs unreproducible. Direction: this OMITS most day visitors (statewide 78% of volume), who mostly drive; it is therefore a floor on total person-visits and the right order of magnitude for overnight parties that might actually hail a ride. A chain that treated Charleston like a tourist city and used 77 million would be badly wrong.", "source": null, "range": [200000, 4000000], "editable": true, "depends_on": null}, {"id": "visitor_party_size", "theme": "demand", "label": "Average visiting party size", "value": 2.1, "unit": "people", "basis": "estimated", "why": "Charleston’s visitor mix is high-school sports families, conventions, and medical/government trips, not solo backpackers; the CVB does not publish a party size.", "math": "No Charleston CVB or Tourism Economics county table gives party size. Mix: business/government/medical often 1.0–1.3 people; WVSSAC championships and USA Cycling bring families of 3–4; leisure couples ~2. Weight ~40% business/medical at 1.3, 35% leisure at 2.0, 25% sports/family at 3.2 → 0.40×1.3 + 0.35×2.0 + 0.25×3.2 = 0.52+0.70+0.80 = 2.02, rounded to 2.1. Not 1, because sports tourism is the CVB’s stated 2025 story. Likely a little high if medical overnight dominates; a little low on championship weekends. Parties share one car, so this steps visitor counts down into ride counts.", "source": null, "range": [1.2, 3.5], "editable": true, "depends_on": null}, {"id": "visitor_nights_avg", "theme": "demand", "label": "Average nights per visiting party", "value": 1.5, "unit": "nights", "basis": "estimated", "why": "This is a weekday capital/convention/sports-weekend market, not a multi-night vacation destination; the CVB does not publish length of stay.", "math": "Statewide 2023 overnight visitors spent $145 per person vs $67 for day visitors (Tourism Economics). Charleston’s draw is one-night government/medical stays, two-night high-school championships, and occasional three-night conventions (USA Cycling 2024 was a five-day event but not the typical party). Weight 50% at 1 night, 35% at 2 nights, 15% at 3 nights → 0.50×1 + 0.35×2 + 0.15×3 = 1.55, rounded to 1.5. Applies to overnight parties in visitors_year, not to the large statewide day-trip majority. Likely conservative (short) for sports tourism weekends; long if most ‘visitors’ are same-day capitol/hospital trips that should have been left out of visitors_year.", "source": null, "range": [1.0, 3.5], "editable": true, "depends_on": ["visitors_year"]}, {"id": "rides_reported", "theme": "demand", "label": "Published paid-ride count", "value": 0, "unit": "trips/year", "basis": "estimated", "why": "No West Virginia, Kanawha, Charleston, Yeager Airport, or RIC MPO source publishes taxi or TNC trip counts for this city; value 0 flags that absence rather than a measured zero market.", "math": "Checked the five required places: (1) State taxicab/TNC authority — WV Code §17-29 has DMV TNC permits and a $1,000 fee but no published trip-count series; locals are barred from TNC taxes or licenses (§17-29-19), so there is no Nevada-style monthly PDF. (2) City/county TNC or for-hire reports / open data — none found; preemption means Charleston and Kanawha do not issue TNC trip reports. (3) Airport ground transportation — Yeager/CRW board reports and Gazette-Mail coverage give 218,546 commercial enplanements for 2025, not TNC or taxi pickups; yeagerairport.com board packets reviewed via public notices do not tabulate TNC trips. (4) MPO travel survey — RIC (Kanawha-Putnam MPO) publishes a TIP, safety/corridor studies, and a bike plan, not a household travel survey with TNC/taxi trip totals (wvregion3.org/subarea_studies). (5) Local reporting — C&H Taxi posts driver shortages and Uber/Lyft presence is reported, but no article quotes a trip total from any of the above. WVDOT’s Transportation Providers Directory lists taxi companies by county (2022 PDFs) without trip counts; Kanawha was not in the first-page county list as a trip-statistics file. Absence is therefore audited, not assumed. Do not treat 0 as ‘no rides happen’ — ACS already records 0.0046 of workers here commuting by taxi or ride-hail.", "source": null, "range": [0, 5000000], "editable": true, "depends_on": null}, {"id": "geography_type", "theme": "geography", "label": "City shape", "value": "single-radius town", "unit": "", "basis": "estimated", "why": "Charleston city proper is a compact river-valley capital: 31.4 sq mi of land and a 3.16-mile equivalent radius, with hill suburbs a 15-minute drive from downtown. The Kanawha and Elk rivers split named neighborhoods, but they sit inside one valley a single car covers; the 203k metro is other municipalities, not this city.", "math": "Settled land area 31.397 sq mi gives r = sqrt(31.397/π) ≈ 3.16 mi. Wikivoyage (opened this session) says urban development is linear along the Kanawha and 1960s-vintage suburbs are within a 15-minute drive of downtown. That is one-car coverage. Distinct districts exist inside that radius (capitol, hospital-college, South Hills, West Side) so a dispatcher should know them, but this is not a metro where a fleet must pick one district and abandon the others. Likely conservative as a 'town' label — the urbanized area is ~141,000 and South Charleston sits immediately west.", "source": null, "range": [0, 1], "editable": true, "depends_on": null}, {"id": "city_radius_mi", "theme": "geography", "label": "City radius", "value": 3.16, "unit": "mi", "basis": "derived", "why": "No published centre-to-edge mileage; this is the equivalent-circle radius of the settled Census land area (31.397 sq mi), the right compact-city default. The real built-up area is elongated along the Kanawha so the east-west tail is longer.", "math": "r = sqrt(area/π) = sqrt(31.397 / 3.14159265) = sqrt(9.995) = 3.16 miles. Wikivoyage’s 15-minute drive from downtown to the hill suburbs matches this scale. Direction of uncertainty: a little low for the far Kanawha City / East End river tail, which stretches farther than a circle of the same area; not low for north-south, which is pinched by the hills.", "source": null, "range": [2.0, 8.0], "editable": true, "depends_on": null}, {"id": "district_count", "theme": "geography", "label": "Demand districts", "value": 5, "unit": "", "basis": "estimated", "why": "Five river-separated clusters generate different trip patterns a fleet would actually station between: downtown/riverfront, East End/capitol, Kanawha City (hospital + university + retail), West Side across the Elk, and South Hills across the Kanawha.", "math": "Wikipedia lists 15 named neighborhoods inside city limits; Wikivoyage groups the ones that matter as Downtown, East End, West Side, South Hills, Kanawha City (plus Edgewood and Oakridge/Greenbrier as hill residential). Collapse the residential catchments into the five cores that have their own jobs, venues, or a river in between. Not 15 (too many names, same demand) and not 1 (Memorial Hospital and the university sit in Kanawha City, across the Kanawha from downtown and the capitol).", "source": null, "range": [3, 8], "editable": true, "depends_on": null}, {"id": "districts_note", "theme": "geography", "label": "Districts", "value": "downtown / riverfront (coliseum, Haddad Park); East End / State Capitol; Kanawha City (Memorial Hospital, University of Charleston, MacCorkle retail); West Side / Elk City across the Elk; South Hills across the Kanawha", "unit": "", "basis": "estimated", "why": "These are the named places on opposite banks of the Kanawha and Elk that actually pull different demand — government and nightlife downtown/capitol, hospital-college-retail in Kanawha City, residential South Hills, West Side across the Elk.", "math": "Wikivoyage’s neighborhood list (Downtown; East End with the capitol; West Side across the Elk; South Hills across the Kanawha; Kanawha City on the south bank) plus Wikipedia’s confirmation that CAMC Memorial and the University of Charleston sit in Kanawha City. Airport road is not a fifth commercial core — CRW is 2.9 miles north on a hilltop, already settled.", "source": null, "range": [0, 1], "editable": true, "depends_on": ["district_count"]}, {"id": "airport_flights_note", "theme": "geography", "label": "Airport flights", "value": "About 12 scheduled passenger departures a day on 4 airlines to 8 U.S. cities: year-round to Charlotte (American), Atlanta (Delta), Chicago O'Hare (United) and Washington Reagan (American), plus Breeze to Orlando, Newark, Tampa and seasonal Myrtle Beach. Spoke, not a hub.", "unit": "", "basis": "estimated", "why": "CRW is a small spoke: a dozen daily departures, not a connecting hub. Daily count and destination list are from the Directflights schedule compiler (opened this session); the airport’s own flycrw.com/flight-info page lists the same four airlines and the same eight cities. Unconfirmed -- treated as our estimate.", "math": "Verification failed on https://www.directflights.com/CRW: the cited page could not be fetched (HTTP 403). We checked the citation the research pass gave us and could not confirm it, so this number is presented as our own estimate rather than as a published figure.", "source": null, "range": [0, 1], "editable": true, "depends_on": null}, {"id": "generators_note", "theme": "geography", "label": "Demand generators", "value": "CAMC Memorial (472 licensed beds, Kanawha City), CAMC General (268 beds, downtown Level I trauma), CAMC Women and Children's (146); University of Charleston (3,032); State Capitol / state government; Vandalia Health (Kanawha County's largest employer, 10,187 systemwide); Kanawha County Schools; Charleston Coliseum (~13,250 concert seats)", "unit": "", "basis": "estimated", "why": "These are the named places that actually fill cars: the three in-city CAMC campuses, the university, state government at the capitol, the county’s largest employer, and the coliseum that hosts championships and concerts.", "math": "Beds from CAMC Snapshot 2025 (Memorial 472, General 268, Women and Children's 146 — licensed, not staffed). Enrollment from UC’s Oct 2025 release (3,032). Employees 10,187 from the same CAMC snapshot (systemwide, so high for city-only). Coliseum concert capacity 13,247 from the venue’s Wikipedia page (opened this session). City ACFR Table 17 ranks Vandalia Health / CAMC and Kanawha County Schools as the county’s top two employers. WVSU (3,570) is 8 miles west in Institute and Thomas Memorial is in South Charleston — real metro generators, omitted from this city string.", "source": null, "range": [0, 1], "editable": true, "depends_on": ["hospital_beds", "college_enrollment"]}, {"id": "hospital_beds", "theme": "geography", "label": "Largest hospital beds", "value": 472, "unit": "licensed beds", "basis": "sourced", "why": "CAMC Memorial in Kanawha City is the largest single hospital campus in the city. CAMC’s own Snapshot 2025 publishes 472 licensed beds there (system total 1,138 across seven hospitals). These are licensed, not staffed — staffed is unpublished at campus level and is typically lower. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "CAMC Health System Snapshot 2025", "date": "2025-01", "url": "https://www.camc.org/sites/default/files/2024-12/Snapshot%202025%20WEB%20Version%208.5x11%2038767-I23.pdf", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "found 472 on the same line as 'memorial hospital'"}, "range": [250, 900], "editable": true, "depends_on": null, "federal_check": {"verdict": "skipped", "subject": "hospitals", "claim": "hospital bed count", "federal": "no federal hospital file is cached (CMS Hospital General Information would be the file; it is not fetched by this rule)", "checked_on": "2026-09-18", "findings": 1}}, {"id": "college_enrollment", "theme": "geography", "label": "College enrollment", "value": 3032, "unit": "students", "basis": "sourced", "why": "University of Charleston is the only four-year campus inside city limits. UC’s own October 2025 announcement: 3,032 students for 2025, a record. This is system-wide (Charleston + Beckley + online), so it overstates bodies on the Kanawha City campus — 722 live on campus. WVSU (3,570) is in Institute, 8 miles west; BridgeValley is in South Charleston. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "University of Charleston", "date": "2025-10", "url": "https://www.ucwv.edu/2025/10/uc-sets-another-enrollment-record-bucking-statewide-trend/", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the exact quoted text is on the page"}, "range": [700, 9000], "editable": true, "depends_on": null}, {"id": "events_note", "theme": "geography", "label": "Annual events", "value": "FestivALL arts festival May 22-31; Live on the Levee free concerts May 22-Jul 31; USA Cycling Pro Road Nationals mid-June; Sternwheel Regatta Jul 2-5 (city estimate 225,000 attendees); Multifest early August; FestivFALL Sept 30-Oct 4; WVSSAC high-school basketball championships in March at the Coliseum", "unit": "", "basis": "estimated", "why": "These are the recurring events that actually move people, each dated on a page opened this session. The Regatta is the one with a published crowd; the others fill downtown/riverfront without a sourced headcount here.", "math": "FestivALL May 22-31 and Multifest Aug 6-9 and March basketball from charlestonwv.com/top-things-to-do-in-charleston-wv-in-2026/ (opened). Live on the Levee May 22-Jul 31 from the City of Charleston 2026 lineup release. USA Cycling June 16-21 from charlestonwv.com/usa-cycling/. Sternwheel Regatta Jul 2-5 and 225,000 attendees from the city’s 18 Sep 2025 impact release (2025 event; 2026 dates announced there). FestivFALL Sept 30-Oct 4 from festivfall.com. Named only events with a sourced month. 225,000 is the city’s estimate for the 2025 Regatta, not a turnstile count.", "source": null, "range": [0, 1], "editable": true, "depends_on": null}, {"id": "insurance_min_liability", "theme": "costs", "label": "Minimum TNC liability limits", "value": "$50,000/$100,000/$25,000 logged-on; $1,000,000 on a prearranged ride", "unit": "", "basis": "sourced", "why": "West Virginia Code §17-29-8 is the TNC financial-responsibility statute: $50,000 per person / $100,000 per incident / $25,000 property damage while logged on but not on a ride, and $1,000,000 combined for death, bodily injury and property damage while on a prearranged ride. Traditional PSC taxis are a different regime (150 CSR 9) and are not what a TNC vehicle must carry.", "math": null, "source": {"name": "West Virginia Code §17-29-8", "date": "2016-07", "url": "https://code.wvlegislature.gov/17-29-8/", "tier": "primary", "verified_on": "2026-09-14", "verified_by": "the page carries 2 of the 3 distinctive words in this note", "redirected_from": "https://code.wvlegislature.gov/17-29-8"}, "range": [25000, 1000000], "editable": true, "depends_on": null}, {"id": "registration_note", "theme": "costs", "label": "For-hire / TNC vehicle registration", "value": "$1,000/yr WV DMV TNC company permit; TNC cars stay on ordinary Class A plates (no Charleston TNC license)", "unit": "", "basis": "estimated", "why": "W. Va. Code §17-29-3 requires the transportation network company — not each car — to pay a $1,000 annual DMV permit. TNC vehicles are personal vehicles, not taxicabs or for-hire (§17-29-2), and municipalities including Charleston may not add a TNC license or fee (§17-29-19). Ordinary Class A registration is $50/yr (§17A-10-3) plus a $1 litter fee and a $0.50 insurance fee; taxi Class J is $85/yr if the car is actually a for-hire cab. Unconfirmed -- treated as our estimate.", "math": "Verification failed on https://code.wvlegislature.gov/17-29-3: the cited page loads but does not carry the figure (the page carries only 4 of the 9 distinctive words in this note). We checked the citation the research pass gave us and could not confirm it, so this number is presented as our own estimate rather than as a published figure.", "source": null, "range": [50, 1000], "editable": true, "depends_on": null}, {"id": "parking_month", "theme": "costs", "label": "Downtown monthly parking", "value": 65, "unit": "$/month", "basis": "sourced", "why": "City of Charleston reserved monthly rate at the two main downtown garages (City Service Center / 915 Quarrier and Shanklin next to City Hall). Same figure is on the city's August 2024 garage-rate sheet. Cheaper general parking is $35 at Park Place Cinema; rooftop reserved is $45; Summers Street reserved is $80. Spaces are weekday 7 a.m.–5 p.m., not 24/7. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "City of Charleston Parking Department", "date": "2026-09", "url": "https://charlestonwvpayments.com/parking-department", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the exact quoted text is on the page"}, "range": [35, 80], "editable": true, "depends_on": null}, {"id": "ridehail_ever_share", "label": "US adults who have ever used a ride-hailing app", "value": 0.36, "unit": "share", "basis": "sourced", "why": "The published national benchmark the local figure is built from. It is pinned in the pipeline rather than researched fresh each time, because asking a language model for a published fact four times returns four answers, and that variance was landing straight in rides per day. The page is still fetched and checked on every run. This is a secondary source -- it republishes a figure it did not itself produce.", "math": null, "source": {"name": "Pew Research Center", "date": "2019-01-04", "url": "https://www.pewresearch.org/short-reads/2019/01/04/more-americans-are-using-ride-hailing-apps/", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the exact quoted text is on the page"}, "range": [0.2, 0.55], "editable": true, "theme": "demand", "depends_on": null}, {"id": "ridehail_active_share_of_users", "label": "Of people who have ever used it, the share who ride in a given month", "value": 0.32, "unit": "share", "basis": "sourced", "why": "The second half of the same national survey, taken from the same page so that the two halves describe the same population. Ten per cent of users ride at least weekly and another 22% monthly; the other 67% ride less than once a month. This is a secondary source -- it republishes a figure it did not itself produce.", "math": "0.10 riding at least weekly + 0.22 riding monthly = 0.32 of ever-users taking a trip in a given month. The complement the page prints, 67% riding less than monthly, agrees with it to within rounding.", "source": {"name": "Pew Research Center", "date": "2019-01-04", "url": "https://www.pewresearch.org/short-reads/2019/01/04/more-americans-are-using-ride-hailing-apps/", "tier": "secondary", "verified_on": "2026-09-14", "verified_by": "the exact quoted text is on the page"}, "range": [0.2, 0.5], "editable": true, "theme": "demand", "depends_on": null}, {"id": "ridehail_local_multiplier", "label": "How much more, or less, this town hires rides than the country does", "value": 1.618, "unit": "x national", "basis": "derived", "why": "The step from the national figure to this town, built only from measured Census figures so that it is the same number every time it is computed. It replaces the sentence a language model used to write here -- '0.115 x 1.25 plus a modest nightlife premium' -- in which the premium was invisible and unrepeatable.", "math": "Two measured local signals, each taken against the same figure summed over all 3144 county rows of the same ACS 2020-2024 file. Households with no vehicle: 0.1242 here against 0.0835 nationally = 1.49x. Workers commuting by taxi or ride-hail (ACS B08301_016, a line the Census counts explicitly): 0.00460 here against 0.00261 nationally = 1.76x. Each ratio is clamped to 0.25-4.00 because one ACS cell in a small place rests on very few responses, then blended as a geometric mean because these are ratios, giving 1.62x, clamped to 0.30-3.50. WHAT THIS CANNOT SEE: whether drivers are actually available. In a small town supply, not demand, is usually what binds.", "source": null, "range": [0.81, 3.24], "editable": true, "depends_on": ["no_vehicle_share", "commute_taxi_ridehail_share"], "theme": "demand"}, {"id": "ridehail_month_share", "label": "Local adults taking a ride-hail trip in a given month", "value": 0.1864, "unit": "share", "basis": "derived", "why": "The share of adults in Charleston who hire a ride in a typical month. This is one of the two numbers that decide rides per day, so it is now computed rather than judged: nothing about it is asked of a language model.", "math": "Computed, not estimated. 0.36 of US adults have ever used a ride-hail app x 0.32 of those users taking a trip in a given month = 0.1152 of US adults in a typical month (fall 2018 survey, Pew Research Center). Stepped to this town by the measured multiplier of 1.62x: 0.1152 x 1.62 = 0.1864. CHANGE THIS FIRST IF YOU KNOW THE TOWN. It and the visitor chain are the two numbers the whole ride estimate turns on, and this one is built from a national survey and two Census ratios -- it cannot see how many drivers are actually on the road here, which in a small market is usually the real limit. The editable band runs 0.0746 to 0.4660, roughly 0.4x to 2.5x, which is how uncertain this honestly is. Pew's State of Gig Work (December 2021) separately found that 22% of US adults had used a ride-hailing app in the previous twelve months. A national monthly share of 11.5% sits sensibly inside that; it would not if the monthly share were near the annual one.", "source": null, "range": [0.0746, 0.466], "editable": true, "depends_on": ["ridehail_ever_share", "ridehail_active_share_of_users", "ridehail_local_multiplier"], "theme": "demand"}, {"id": "trips_per_user_month", "label": "Trips a month, per local who rides at all that month", "value": 2.5, "unit": "trips", "basis": "estimated", "why": "Counted only over the people who are active in that month, so it can never be below 1. It multiplies the entire resident stream, which is why it is drawn several times rather than once.", "math": "How many rides a local who uses ride-hail at all in a month takes in that month. Drawn 5 times independently with no web search, so that the run-to-run wobble is measured rather than hidden: 2.5, 2.5, 2.3, 2.5, 2.5. The MEDIAN, 2.5, is used; the draws spanned 2.3 to 2.5, a factor of 1.09. A 16.9-minute mean commute in a 46,117-person city means ride-hail is not a work habit, so even active users among the 0.1242 of households with no vehicle take only a small handful of trips a month.", "source": null, "range": [1.0, 6.0], "editable": true, "theme": "demand", "depends_on": null}, {"id": "visitor_air_arrival_share", "label": "Share of visitors who arrive by air", "value": 0.1775, "unit": "share", "basis": "derived", "why": "A party that flies in has two airport transfers to make and no car; a party that drives in has neither. This is the fork the whole visitor chain turns on, and where two published counts exist it is division rather than judgement.", "math": "202,303 boardings at CRW in calendar 2024 (FAA, a federal file) divided by 1,140,000 visitors a year = 0.177. Boardings count DEPARTING passengers, and one visiting party that flies in also flies out, so this is the share of visitors who came by air. DIRECTION OF ERROR, STATED: boardings also include residents flying out on their own trips, so this OVERSTATES the visitor air share, and by more in a city whose residents fly a lot. It is capped at 0.95.", "source": null, "range": [0.089, 0.266], "editable": true, "depends_on": ["airport_passengers_year", "visitors_year"], "theme": "demand", "federal_check": {"verdict": "confirmed", "subject": "airports", "claim": "202,303 passengers or enplanements", "federal": "the note gives 202,303; FAA CY2024 enplanements for CRW = 202,303 -- within 5%", "checked_on": "2026-09-18", "findings": 1}}, {"id": "visitor_airport_ridehail_share", "label": "Of air arrivals, the share whose airport transfer is a hired ride", "value": 0.25, "unit": "share", "basis": "estimated", "why": "The rest rent a car, take a hotel or casino shuttle, ride a rail or bus link, or get a lift. This is judgement -- no federal file counts it -- but it is a narrow question about one airport rather than an open one about a whole city.", "math": "How many air-arriving parties hire their ride from the airport. Drawn 5 times independently with no web search, so that the run-to-run wobble is measured rather than hidden: 0.22, 0.32, 0.28, 0.25, 0.25. The MEDIAN, 0.25, is used; the draws spanned 0.22 to 0.32, a factor of 1.45. CRW is only 2.9 miles from the centre with 202,303 annual boardings and no rail, so a short taxi is cheap for some air parties, but rental cars and local pickups still take most of a small regional airport.", "source": null, "range": [0.05, 0.8], "editable": true, "theme": "demand", "depends_on": null, "federal_check": {"verdict": "confirmed", "subject": "airports", "claim": "202,303 passengers or enplanements", "federal": "the note gives 202,303; FAA CY2024 enplanements for CRW = 202,303 -- within 5%", "checked_on": "2026-09-18", "findings": 1}}, {"id": "visitor_local_trips_per_stay", "label": "Hired rides a visiting party takes in town, per visit", "value": 0.5, "unit": "trips", "basis": "estimated", "why": "Trips during the stay, not counting the two airport transfers. A resort where everything is walkable from the hotel is low; a spread-out city is higher.", "math": "How many hired rides a visiting party takes while it is here, excluding the airport transfers. Drawn 5 times independently with no web search, so that the run-to-run wobble is measured rather than hidden: 0.4, 0.4, 0.6, 0.5, 0.6. The MEDIAN, 0.5, is used; the draws spanned 0.4 to 0.6, a factor of 1.50. A 1.5-night stay and 1.14 million visitors versus only 202,303 CRW boardings imply most parties already arrived by car and take at most a rare in-stay taxi in a 31.4-square-mile city.", "source": null, "range": [0.0, 5.0], "editable": true, "theme": "demand", "depends_on": null}, {"id": "visitor_trips_per_stay", "label": "Hired rides one visiting party takes per visit, all in", "value": 0.589, "unit": "trips", "basis": "estimated", "why": "Every hired ride one visiting PARTY takes on one visit, airport transfers included. Per party and per visit -- not per head and not per night. A party shares one car, so a count of visitors is never a count of rides.", "math": "Built from its parts rather than answered as one number, because answered as one number it came back 1.2 on one run and 3.5 on the next and moved the whole town's ride estimate by a factor of three. 2 airport transfers x 0.177 arriving by air x 0.250 of those hiring a ride = 0.089, plus 0.500 trips in town = 0.589 trips a party. Pushing every judgement piece to its own measured extreme gives a range of 0.44 to 0.77. CHANGE THIS FIRST IF YOU KNOW THE TOWN -- this and the monthly ride-hail share are the two numbers the whole estimate rests on, and this one is judgement about tourists that no federal file counts.", "source": null, "range": [0.0, 8.0], "editable": true, "theme": "demand", "depends_on": null}, {"id": "rides_per_day", "label": "Rides a day, whole town", "value": 1448, "unit": "rides/day", "basis": "estimated", "why": "Total app-hailed trips a day across every operator in the city -- the pool your fleet competes for a share of, not the number you will get.", "math": "Nobody publishes rides per day for a town this size, so this is built as a chain and every link is visible. People living here = 46117 (a published figure); Share of residents who are adults = 0.8094 (worked out from published figures); Local adults taking a ride-hail trip in a given month = 0.1864 (worked out from published figures); Trips a month, per local who rides at all that month = 2.5 (our estimate); Annual visitors = 1140000 (worked out from published figures); Average visiting party size = 2.1 (our estimate); Hired rides one visiting party takes per visit, all in = 0.589 (our estimate). Residents: 46,117 people x 0.8094 adults = 37,327 adults; x 0.1864 who take a ride-hail trip in a given month = 6,958 people; x 2.5 trips each a month = 17,394 trips a month; divided by 30.4 days = 572 resident rides a day. Visitors: 1,140,000 a year / 2.1 people in a party = 542,857 visiting parties; x 0.589 ride-hail trips a party takes while it is here / 365 days = 876 visitor rides a day. A party shares one car, so a count of visitors is not a count of rides. Visitors are 60% of this total, so the answer turns on the visitor figures more than on the residents. Total: 1,448 rides a day across ALL operators, not just yours. RANGE, HONESTLY: running the same arithmetic with every judgement link at its own low bound gives 864 rides a day, and at its own high bound 2,576. The 1,448 above is the midpoint of a real range, not a measurement. The bounds are this run's own -- the panel's lowest and highest draws and the computed share's editable band -- so the width of this range is a report of how unsure the research was. NO CROSS-CHECK EXISTS, AND THE SEARCH IS ON THE RECORD. Checked the five required places: (1) State taxicab/TNC authority — WV Code §17-29 has DMV TNC permits and a $1,000 fee but no published trip-count series; locals are barred from TNC taxes or licenses (§17-29-19), so there is no Nevada-style monthly PDF. (2) City/county TNC or for-hire reports / open data — none found; preemption means Charleston and Kanawha do not issue TNC trip reports. (3) Airport ground transportation — Yeager/CRW board reports and Gazette-Mail coverage give 218,546 commercial enplanements for 2025, not TNC or taxi pickups; yeagerairport.com board packets reviewed via public notices do not tabulate TNC trips. (4) MPO travel survey — RIC (Kanawha-Putnam MPO) publishes a TIP, safety/corridor studies, and a bike plan, not a household travel survey with TNC/taxi trip totals (wvregion3.org/subarea_studies). (5) Local reporting — C&H Taxi posts driver shortages and Uber/Lyft presence is reported, but no article quotes a trip total from any of the above. WVDOT’s Transportation Providers Directory lists taxi companies by county (2022 PDFs) without trip counts; Kanawha was not in the first-page county list as a trip-statistics file. Absence is therefore audited, not assumed. Do not treat 0 as ‘no rides happen’ — ACS already records 0.0046 of workers here commuting by taxi or ride-hail. Nothing independent confirms this chain. That absence is stated rather than hidden: a pack with no cross-check is weaker than one with a disagreeing cross-check, because the disagreeing one at least tells you which way you might be wrong. Direction of uncertainty: this counts only app-hailed rides and ignores taxis, shuttles, non-emergency medical transport and the airport's own courtesy runs, so it is more likely low than high. It also assumes supply exists to meet the demand, which in a small town is often the binding constraint rather than demand itself.", "source": null, "range": [362, 5793], "editable": true, "low": 864, "high": 2576, "cross_check": {"has_cross_check": false, "search_was_audited": true, "searched": "Checked the five required places: (1) State taxicab/TNC authority — WV Code §17-29 has DMV TNC permits and a $1,000 fee but no published trip-count series; locals are barred from TNC taxes or licenses (§17-29-19), so there is no Nevada-style monthly PDF. (2) City/county TNC or for-hire reports / open data — none found; preemption means Charleston and Kanawha do not issue TNC trip reports. (3) Airport ground transportation — Yeager/CRW board reports and Gazette-Mail coverage give 218,546 commercial enplanements for 2025, not TNC or taxi pickups; yeagerairport.com board packets reviewed via public notices do not tabulate TNC trips. (4) MPO travel survey — RIC (Kanawha-Putnam MPO) publishes a TIP, safety/corridor studies, and a bike plan, not a household travel survey with TNC/taxi trip totals (wvregion3.org/subarea_studies). (5) Local reporting — C&H Taxi posts driver shortages and Uber/Lyft presence is reported, but no article quotes a trip total from any of the above. WVDOT’s Transportation Providers Directory lists taxi companies by county (2022 PDFs) without trip counts; Kanawha was not in the first-page county list as a trip-statistics file. Absence is therefore audited, not assumed. Do not treat 0 as ‘no rides happen’ — ACS already records 0.0046 of workers here commuting by taxi or ride-hail.", "verdict": ["none", "five named sources were checked and none of them publishes a trip count for this city"], "our_estimate_per_day": 1448, "our_range_per_day": [362, 5793]}, "theme": "people", "federal_check": {"verdict": "confirmed", "subject": "population", "claim": "46,117 people", "federal": "the note says 46,117; the Census file says Charleston city 46,117 (Census vintage 2025) -- within 5%", "checked_on": "2026-09-18", "findings": 1}}], "notes": {"power": "All TOU $/kWh figures are Appalachian Power WV all-in from the company’s own Sheet 38 exhibit effective 1 Sep 2026 (Case 26-0469-E-ENEC), not EIA averages. Charleston municipal B&O tax (4.00% residential; 4.17% surcharge on Sheet 4-2) is extra and not in these rates. Schedule PEV off-peak base is 5.685¢/kWh vs R.S.-T.O.D. 4.459¢, so PEV all-in overnight is a bit higher than $0.107665 if the same riders apply; PEV’s off-peak window starts earlier (8 p.m.). S.G.S. Load Management TOD all-in off-peak is $0.079663 but only for energy-storage devices that consume solely off-peak—a public charger that also runs by day would not qualify. G.S.-T.O.D. secondary all-in is $0.158791 on-peak / $0.090881 off-peak for larger commercial. Downtown Charleston Supercharger is Tesla-only at $0.44/kWh member (DCFC Tracker 14 Sep 2026); Marmet Supercharger 8 miles south is open to all EVs at $0.61 public / $0.42 member (13 Sep 2026, https://dcfctracker.com/stations/330973). ChargePoint at Astorg Auto (5 Dudley Farms Ln, Charleston) is $0.43/kWh plus $0.99 session at only 40 kW (price last posted 30 Apr 2026).", "demand": "City is Charleston, WV (not Charleston, SC). Established Census facts used throughout: pop 46,117; land 31.397 sq mi; county pop 172,381; 18+ share 0.8094; no-vehicle households 0.1242; mean commute 16.9 min; taxi/ride-hail commute share 0.0046; transit commute 0.0099; WFH 0.1303; median HH income $65,812. This is a capital/hospital city with a real but secondary visitor economy — residents without cars and CAMC night shifts should dominate ride-hail, not tourists. visitors_year is locked to Tourism Economics calendar year 2023 (latest year with a Kanawha spending table); the 2024 statewide 77.2 million figure was not used for the city. Supporting pages actually opened: Uber Charleston city and taxi pages; C&H Taxi; Alignable C&H; KRT passenger-info and about; WSAZ KRT Plus; Uphail Charleston; WV Code §17-29-19; WVDOT Transportation Providers Directory; RIC MPO studies; Tourism Economics 2023 PDF; WV Explorer 2024 statewide tourism; City of Charleston 2024 Regatta release; Cause IQ CAMC; UC enrollment 2025; Gazette-Mail Yeager 2025 enplanements (paywalled body; search extract used only as a check that airport stats are enplanements not TNC pickups). C&H 30-car fleet is an Alignable company statement, not a regulator count. KRT Plus (Mon–Sat 6 a.m.–6 p.m.) does not fill the Sunday or late-night gap.", "geography": "City pack for Charleston, WV. Airport name/code/distance/boardings are settled from FAA bulk files (CRW, 2.9 mi, 202,303 CY2024 enplanements) and are not in this pack. Hospital 472 is CAMC Memorial LICENSED beds from CAMC Snapshot 2025 (printed Jan 2025); CAMC does not publish staffed beds by campus — Wikipedia’s older 838 staffed figure is three Charleston campuses combined, so do not swap it in as Memorial. College 3,032 is UC system-wide Fall 2025 (includes online and Beckley); 722 live on the Charleston campus. WVSU (Institute, 8 mi west, 3,570) and BridgeValley (South Charleston) are real metro generators but outside city limits. Daily flight count 12 is from Directflights’ schedule compiler; flycrw.com/flight-info lists the same 4 airlines and 8 cities but no daily total. Geography is single-radius (one car covers the valley) with 5 river-split districts a dispatcher should still know. Land area 31.397 sq mi and population 46,117 are the settled bulk figures this pack was told not to re-research.", "costs": "TNC $1,000 is a company-level WV DMV permit, not a per-car plate. On-trip TNC liability is $1,000,000 CSL; the 50/100/25 split is only while logged on and waiting. Charleston city garages are free nights, weekends and holidays except special events, so $65 is a weekday reserved stall. The city rate sheet at https://www.charlestonwv.gov/sites/default/files/documents/2024-08/Monthly%20parking%20rates%20in%20garages%20and%20lots.pdf (Aug 2024) matches the live payment portal; first-month admin fee is $10 extra, not in the monthly rate. PSC 150 CSR 9 taxi minimums ($100k/$200k/$25k for 5 passengers or fewer) apply only if the vehicle is a certificated for-hire cab, not a TNC personal vehicle."}, "gaps": ["rides_per_day: the five named sources were checked and none publishes a trip count for this city, so the estimate stands on its own arithmetic"], "counts": {"total": 80, "sourced": 29, "derived": 31, "estimated": 20}, "applies_to_game": {"overrides": 10, "how": "A record carrying `game_id` replaces that id in the game's assumptions.js when this city is selected. The rest of the pack is city context the model has no slot for yet -- rides per day, the trip-length split, the airport's traffic, the demand generators -- and is stated rather than quietly mapped onto something it is not.", "unmapped": ["adult_share", "airport_alternatives_note", "airport_code", "airport_distance_mi", "airport_flights_note", "airport_name", "airport_passengers_year", "airport_traffic_change_pct", "city_radius_mi", "climate_station", "college_enrollment", "commute_drove_alone_share", "commute_taxi_ridehail_share", "commute_transit_share", "commute_wfh_share", "density", "district_count", "districts_note", "events_note", "generators_note", "geography_type", "hospital_beds", "insurance_min_liability", "labour_note", "land_area_sqmi", "local_cleaner_wage", "local_labour_index", "local_rent_index", "mean_commute_minutes", "median_household_income", "metro_population", "night_share", "no_vehicle_share", "parking_month", "population", "power_state_avg", "power_state_avg_commercial", "power_state_avg_ytd", "power_tou_note", "power_utility", "power_utility_alternatives", "power_utility_rate", "power_utility_rate_commercial", "precip_year_in", "registration_note", "ridehail_active_share_of_users", "ridehail_ever_share", "ridehail_local_multiplier", "ridehail_month_share", "ridehail_present", "rides_per_day", "rides_reported", "snow_days_year", "snow_year_in", "temp_annual_avg_f", "temp_coldest_month_avg_f", "temp_hottest_month_avg_f", "transit_note", "trip_mi_avg", "trip_mi_long_share", "trip_mi_short_share", "trips_per_user_month", "visitor_air_arrival_share", "visitor_airport_ridehail_share", "visitor_local_trips_per_stay", "visitor_nights_avg", "visitor_party_size", "visitor_trips_per_stay", "visitors_year", "wet_days_year"]}, "source_mix": {"with_a_citation": 29, "primary": 19, "secondary": 10, "tier_unknown": 0, "no_citation_derived_or_estimated": 51, "read_from_a_federal_bulk_file": 43, "how": "A `primary` citation is the body that produced the figure -- a .gov file, or the utility, airport or operator publishing its own number. `secondary` is somebody re-publishing a number they did not produce. Records with no citation are the derived and estimated ones, and their working is in `math`."}, "bulk_sources": {"records": 43, "records_needing_no_citation_check": 18, "record_ids": ["adult_share", "airport_alternatives_note", "airport_code", "airport_distance_mi", "airport_name", "airport_passengers_year", "airport_traffic_change_pct", "clean_biohazard_cost", "clean_deep_cost", "clean_wipe_cost", "climate_station", "commute_drove_alone_share", "commute_taxi_ridehail_share", "commute_transit_share", "commute_wfh_share", "density", "depot_rent_month", "insurance_base_month", "insurance_per_car_month", "labour_note", "land_area_sqmi", "local_cleaner_wage", "local_labour_index", "local_rent_index", "mean_commute_minutes", "median_household_income", "metro_population", "no_vehicle_share", "population", "power_state_avg", "power_state_avg_commercial", "power_state_avg_ytd", "power_utility", "power_utility_alternatives", "power_utility_rate", "power_utility_rate_commercial", "precip_year_in", "snow_days_year", "snow_year_in", "temp_annual_avg_f", "temp_coldest_month_avg_f", "temp_hottest_month_avg_f", "wet_days_year"], "how": "These came out of national files that cover every city in the country. The file is downloaded ONCE and shared by every city in the run; the city is matched to its row by a key -- a place or county FIPS code, an FAA airport identifier, or a coordinate -- never by name. They do not go through the citation verifier, because there is no cited page to check: the federal file is the source. What guards them instead is a plausibility band applied when the record is built, and anything outside it is flagged into `gaps` rather than accepted.", "files": {"sub-est2025.csv": {"downloads": 0, "bytes": 7464556, "wire_bytes": 0, "reuses": 7, "url": "https://www2.census.gov/programs-surveys/popest/datasets/2020-2025/cities/totals/sub-est2025.csv"}, "gaz_place_16.txt": {"downloads": 0, "bytes": 23876, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_16.txt"}, "co-est2025-alldata.csv": {"downloads": 0, "bytes": 2071735, "wire_bytes": 0, "reuses": 7, "url": "https://www2.census.gov/programs-surveys/popest/datasets/2020-2025/counties/totals/co-est2025-alldata.csv"}, "faa-cy2024-commercial-service-enplanements.xlsx": {"downloads": 0, "bytes": 58201, "wire_bytes": 0, "reuses": 1, "url": "https://www.faa.gov/airports/planning_capacity/passenger_allcargo_stats/passenger/arp-cy2024-commercial-service-enplanements.xlsx"}, "faa-us-airports.json": {"downloads": 0, "bytes": 3686620, "wire_bytes": 0, "reuses": 1, "url": "https://services6.arcgis.com/ssFJjBXIUyZDrSYZ/arcgis/rest/services/US_Airport/FeatureServer/0"}, "eia-epm-table-5-06-a.xlsx": {"downloads": 0, "bytes": 19709, "wire_bytes": 0, "reuses": 1, "url": "https://www.eia.gov/electricity/monthly/xls/table_5_06_a.xlsx"}, "eia-epm-table-5-06-b.xlsx": {"downloads": 0, "bytes": 19788, "wire_bytes": 0, "reuses": 1, "url": "https://www.eia.gov/electricity/monthly/xls/table_5_06_b.xlsx"}, "eia-861-2024.zip": {"downloads": 0, "bytes": 4568208, "wire_bytes": 0, "reuses": 3, "url": "https://www.eia.gov/electricity/data/eia861/zip/f8612024.zip"}, "noaa-normals-inventory-30yr.txt": {"downloads": 0, "bytes": 1342890, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/doc/inventory_30yr.txt"}, "noaa\\USW00024131.csv": {"downloads": 0, "bytes": 41666, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00024131.csv"}, "acs2024-b01001-places-counties.psv": {"downloads": 0, "bytes": 11267969, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b01001.dat"}, "acs2024-b08301-places-counties.psv": {"downloads": 0, "bytes": 4910243, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b08301.dat"}, "acs2024-b08303-places-counties.psv": {"downloads": 0, "bytes": 3510917, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b08303.dat"}, "acs2024-b08013-places-counties.psv": {"downloads": 0, "bytes": 1608092, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b08013.dat"}, "acs2024-b25044-places-counties.psv": {"downloads": 0, "bytes": 3952608, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b25044.dat"}, "acs2024-b19013-places-counties.psv": {"downloads": 0, "bytes": 1058767, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b19013.dat"}, "acs2024-b25064-places-counties.psv": {"downloads": 0, "bytes": 1025542, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b25064.dat"}, "bls-oes2024-53-7061-national.psv": {"downloads": 0, "bytes": 120, "wire_bytes": 0, "reuses": 1, "url": "https://www.bls.gov/oes/special-requests/oesm24nat.zip"}, "bls-oes2024-area-definitions.xlsx": {"downloads": 0, "bytes": 147222, "wire_bytes": 0, "reuses": 7, "url": "https://www.bls.gov/oes/2024/may/area_definitions_m2024.xlsx"}, "bls-oes2024-53-7061-areas.psv": {"downloads": 0, "bytes": 33711, "wire_bytes": 0, "reuses": 1, "url": "https://www.bls.gov/oes/special-requests/oesm24ma.zip"}, "acs2024-b25064-us-states.psv": {"downloads": 0, "bytes": 1043, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/programs-surveys/acs/summary_file/2024/table-based-SF/data/5YRData/acsdt5y2024-b25064.dat"}, "gaz_place_38.txt": {"downloads": 0, "bytes": 39566, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_38.txt"}, "noaa\\US1NDCS0015.csv": {"downloads": 0, "bytes": 1534, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/US1NDCS0015.csv"}, "noaa\\US1NDCS0001.csv": {"downloads": 0, "bytes": 1594, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/US1NDCS0001.csv"}, "noaa\\USC00322860.csv": {"downloads": 0, "bytes": 23054, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USC00322860.csv"}, "noaa\\US1NDCS0004.csv": {"downloads": 0, "bytes": 1522, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/US1NDCS0004.csv"}, "noaa\\USC00215586.csv": {"downloads": 0, "bytes": 41546, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USC00215586.csv"}, "gaz_place_35.txt": {"downloads": 0, "bytes": 53366, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_35.txt"}, "noaa\\US1NMSF0073.csv": {"downloads": 0, "bytes": 1570, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/US1NMSF0073.csv"}, "noaa\\US1NMSF0013.csv": {"downloads": 0, "bytes": 1570, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/US1NMSF0013.csv"}, "noaa\\USC00298085.csv": {"downloads": 0, "bytes": 41570, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USC00298085.csv"}, "gaz_place_37.txt": {"downloads": 0, "bytes": 79093, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_37.txt"}, "noaa\\US1NCBC0110.csv": {"downloads": 0, "bytes": 1582, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/US1NCBC0110.csv"}, "noaa\\US1NCBC0051.csv": {"downloads": 0, "bytes": 1582, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/US1NCBC0051.csv"}, "noaa\\USW00013872.csv": {"downloads": 0, "bytes": 41558, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00013872.csv"}, "gaz_place_23.txt": {"downloads": 0, "bytes": 16173, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_23.txt"}, "noaa\\USW00014764.csv": {"downloads": 0, "bytes": 41702, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00014764.csv"}, "gaz_place_50.txt": {"downloads": 0, "bytes": 18777, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_50.txt"}, "noaa\\USW00014742.csv": {"downloads": 0, "bytes": 41666, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00014742.csv"}, "gaz_place_54.txt": {"downloads": 0, "bytes": 44282, "wire_bytes": 0, "reuses": 1, "url": "https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2025_Gazetteer/2025_gaz_place_54.txt"}, "noaa\\USW00013866.csv": {"downloads": 0, "bytes": 41690, "wire_bytes": 0, "reuses": 1, "url": "https://www.ncei.noaa.gov/data/normals-monthly/1991-2020/access/USW00013866.csv"}}, "downloads_this_run": 0, "cache_reuses_this_run": 61, "not_bulk_sourced_and_why": "What is still researched is the LOCAL STORY, and it is researched because it is real, published and findable: the utility's time-of-use split (a filed tariff, not a table), public fast-charge prices, the visitor economy, the state's minimum liability statute, the city's own parking schedule, and the named demand generators -- hospitals with their bed counts, colleges with their enrolments, the venue that fills the town. That is the half of a pack no federal file will ever carry, and it is the half worth having: Dover, Tennessee is a town of 1,918 people in the federal files and nothing more, and what makes it interesting is that 84% of its rides are visitors to Fort Donelson National Battlefield.", "derived_rather_than_researched": "Cleaning, depot rent and insurance USED to be researched and are not any more. They are manual-service prices that nobody publishes, because maintaining a price page is work and the price is whatever the owner says on the day. Searching for them found nothing at all in the smallest town and found ONE detailer's advertised price in the others, which was then stamped `sourced` -- a claim of rigour a sample of one does not have. Each is now a national published baseline times a published local index (BLS area wages for hand work, ACS median gross rent for property, NAIC state expenditure for insurance), with the arithmetic in `math`. See local_costs.py."}, "verification": {"bulk_records": 43, "bulk_needing_no_verification": 18, "citations_checked": 15, "citations_passed": 11, "citations_failed": 4, "primary": 1, "secondary": 10, "derived_downgraded": 0, "method": "Every record the model returned as 'sourced' had its cited URL fetched. The page had to load, and the figure had to be in its text within 400 characters of one of the record's own keywords. Anything that failed was demoted to 'estimated' with the failure written into its math.", "reports": [{"id": "population", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "SUMLEV 162, GEOID 5414600 -- Charleston city, West Virginia", "action": "not checked (read straight from a federal bulk file)"}, {"id": "land_area_sqmi", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "GEOID 5414600 -- Charleston city", "action": "not checked (read straight from a federal bulk file)"}, {"id": "density", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "metro_population", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "SUMLEV 050, GEOID 54039 -- Kanawha County, West Virginia", "action": "not checked (read straight from a federal bulk file)"}, {"id": "airport_name", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "Locid CRW -- West Virginia International Yeager, Charleston WV", "action": "not checked (read straight from a federal bulk file)"}, {"id": "airport_code", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "Locid CRW -- West Virginia International Yeager, Charleston WV", "action": "not checked (read straight from a federal bulk file)"}, {"id": "airport_passengers_year", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "Locid CRW -- West Virginia International Yeager, Charleston WV", "action": "not checked (read straight from a federal bulk file)"}, {"id": "airport_traffic_change_pct", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "airport_distance_mi", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "airport_alternatives_note", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "Locid CRW -- West Virginia International Yeager, Charleston WV", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_state_avg", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "West Virginia, June 2026", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_state_avg_commercial", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "West Virginia, June 2026", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_state_avg_ytd", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "West Virginia, June 2026 YTD", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_utility", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "utility Appalachian Power Co (#733), Kanawha County County rows, WV", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_utility_alternatives", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "utility Appalachian Power Co (#733), Kanawha County County rows, WV", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_utility_rate", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_utility_rate_commercial", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "climate_station", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre", "action": "not checked (read straight from a federal bulk file)"}, {"id": "temp_annual_avg_f", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "temp_coldest_month_avg_f", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre", "action": "not checked (read straight from a federal bulk file)"}, {"id": "temp_hottest_month_avg_f", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre", "action": "not checked (read straight from a federal bulk file)"}, {"id": "precip_year_in", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "wet_days_year", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "snow_year_in", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "snow_days_year", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "CHARLESTON YEAGER AP, WV US (USW00013866), 3.1 mi from the city centre", "action": "not checked (read straight from a federal bulk file)"}, {"id": "adult_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "median_household_income", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "GEO_ID 1600000US5414600, B19013_E001", "action": "not checked (read straight from a federal bulk file)"}, {"id": "no_vehicle_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "commute_drove_alone_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "commute_transit_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "commute_taxi_ridehail_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "commute_wfh_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "mean_commute_minutes", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "local_cleaner_wage", "basis_in": "sourced", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "OCC_CODE 53-7061, AREA 16620 -- Charleston, WV", "action": "not checked (read straight from a federal bulk file)"}, {"id": "labour_note", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "local_labour_index", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "local_rent_index", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "clean_wipe_cost", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "clean_deep_cost", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "clean_biohazard_cost", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "depot_rent_month", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "insurance_base_month", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "insurance_per_car_month", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": "primary", "detail": "read out of the federal file named in its source", "action": "not checked (read straight from a federal bulk file)"}, {"id": "power_offpeak", "basis_in": "sourced", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "found 10.795 a line or two from 'off-peak' (printed in cents) -- the page says 10.795, the record says 0.107665", "action": "kept"}, {"id": "power_mid", "basis_in": "sourced", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "status": 200, "url_ok": true, "figure_ok": false, "tier": "secondary", "detail": "the cited page loads but does not carry the figure (the digits 24 appear near 'r.s.-t.o.d.' but on a different row -- that is a neighbouring entry in the same table, not this city's figure)", "action": "demoted to estimated"}, {"id": "power_onpeak", "basis_in": "sourced", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "status": 200, "url_ok": true, "figure_ok": false, "tier": "secondary", "detail": "the cited page loads but does not carry the figure (the digits 24 appear near 'r.s.-t.o.d.' but on a different row -- that is a neighbouring entry in the same table, not this city's figure)", "action": "demoted to estimated"}, {"id": "power_dcfc", "basis_in": "sourced", "url": "https://dcfctracker.com/stations/102505", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the exact quoted text is on the page", "action": "kept"}, {"id": "power_tou_note", "basis_in": "sourced", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the page carries 13 of the 14 distinctive words in this note", "action": "kept"}, {"id": "ridehail_present", "basis_in": "sourced", "url": "https://www.uber.com/global/en/r/cities/charleston-wv-us/", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the page carries 9 of the 14 distinctive words in this note", "action": "kept"}, {"id": "transit_note", "basis_in": "sourced", "url": "https://rideonkrt.com/passenger-info/", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the page carries 8 of the 14 distinctive words in this note", "action": "kept"}, {"id": "trip_mi_avg", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "trip_mi_short_share", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "trip_mi_long_share", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "night_share", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "visitors_year", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "visitor_party_size", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "visitor_nights_avg", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "rides_reported", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "geography_type", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "city_radius_mi", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "district_count", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "districts_note", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "airport_flights_note", "basis_in": "sourced", "url": "https://www.directflights.com/CRW", "status": 0, "url_ok": false, "figure_ok": null, "tier": "secondary", "detail": "the cited page could not be fetched (HTTP 403)", "action": "demoted to estimated"}, {"id": "generators_note", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "hospital_beds", "basis_in": "sourced", "url": "https://www.camc.org/sites/default/files/2024-12/Snapshot%202025%20WEB%20Version%208.5x11%2038767-I23.pdf", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "found 472 on the same line as 'memorial hospital'", "action": "kept"}, {"id": "college_enrollment", "basis_in": "sourced", "url": "https://www.ucwv.edu/2025/10/uc-sets-another-enrollment-record-bucking-statewide-trend/", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the exact quoted text is on the page", "action": "kept"}, {"id": "events_note", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "insurance_min_liability", "basis_in": "sourced", "url": "https://code.wvlegislature.gov/17-29-8", "status": 200, "url_ok": true, "figure_ok": true, "tier": "primary", "detail": "the page carries 2 of the 3 distinctive words in this note", "action": "kept"}, {"id": "registration_note", "basis_in": "sourced", "url": "https://code.wvlegislature.gov/17-29-3", "status": 200, "url_ok": true, "figure_ok": false, "tier": "primary", "detail": "the cited page loads but does not carry the figure (the page carries only 4 of the 9 distinctive words in this note)", "action": "demoted to estimated"}, {"id": "parking_month", "basis_in": "sourced", "url": "https://charlestonwvpayments.com/parking-department", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the exact quoted text is on the page", "action": "kept"}, {"id": "ridehail_ever_share", "basis_in": "sourced", "url": "https://www.pewresearch.org/short-reads/2019/01/04/more-americans-are-using-ride-hailing-apps/", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the exact quoted text is on the page", "action": "kept"}, {"id": "ridehail_active_share_of_users", "basis_in": "sourced", "url": "https://www.pewresearch.org/short-reads/2019/01/04/more-americans-are-using-ride-hailing-apps/", "status": 200, "url_ok": true, "figure_ok": true, "tier": "secondary", "detail": "the exact quoted text is on the page", "action": "kept"}, {"id": "ridehail_local_multiplier", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "ridehail_month_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "trips_per_user_month", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "visitor_air_arrival_share", "basis_in": "derived", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "visitor_airport_ridehail_share", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "visitor_local_trips_per_stay", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}, {"id": "visitor_trips_per_stay", "basis_in": "estimated", "url": null, "status": null, "url_ok": null, "figure_ok": null, "tier": null, "detail": "", "action": "not checked (not a sourced record)"}]}, "cost": {"calls": 9, "input_tokens": 0, "output_tokens": 0, "web_searches": 0, "cost_usd": 0.0, "seconds": 1915.6}, "search_ceiling": {"scope": "charleston-wv", "searches_charged": 112, "search_ceiling": 200, "searches_left": 88, "calls_made": 9, "call_ceiling": 12, "search_enabled_calls": 4, "per_call_ceiling": 60, "charged_by_estimate": 112, "how_the_cli_is_charged": "The Grok CLI does not report how many web searches it made, so every search-enabled call is charged a flat 28 -- the measured mean of the runs this ceiling exists to prevent (668 searches over 24 search-enabled calls). It is deliberately the worst case, so the ceiling binds early rather than late.", "per_call_breaches": [], "refusals": [], "bound": false, "why": "Six cities on 2026-09-08 made 668 web searches between them and pulled 13,057,511 input tokens, because nothing counted them. This ceiling refuses a call the remaining budget cannot pay for. It is set well above the shape of a normal city on purpose: it is a guard rail against a loop that has run away, not a reason to ask fewer questions about the town. If it bound, the fields that went unresearched are named in `gaps`."}, "reproducibility": {"why": "Re-running the same research prompt for the same city used to return materially different judgement figures, and those figures dominate rides per day. Three variables were taken off the model and rebuilt: the monthly ride-hail share is now computed from a pinned national survey and two measured Census ratios; the per-party visitor trip rate is composed from narrower questions; and what judgement is left is drawn several times and reported as a median with its spread.", "computed_not_judged": ["ridehail_ever_share", "ridehail_active_share_of_users", "ridehail_local_multiplier", "ridehail_month_share", "visitor_air_arrival_share"], "panel_draws": 5, "panel": {"visitor_airport_ridehail_share": {"median": 0.25, "draws": [0.22, 0.32, 0.28, 0.25, 0.25], "min": 0.22, "max": 0.32, "spread_x": 1.45}, "visitor_local_trips_per_stay": {"median": 0.5, "draws": [0.4, 0.4, 0.6, 0.5, 0.6], "min": 0.4, "max": 0.6, "spread_x": 1.5}, "trips_per_user_month": {"median": 2.5, "draws": [2.5, 2.5, 2.3, 2.5, 2.5], "min": 2.3, "max": 2.5, "spread_x": 1.09}}, "panel_answers_clipped_to_bounds": [], "rides_per_day_range": [864, 2576]}, "cross_check": {"has_cross_check": false, "search_was_audited": true, "searched": "Checked the five required places: (1) State taxicab/TNC authority — WV Code §17-29 has DMV TNC permits and a $1,000 fee but no published trip-count series; locals are barred from TNC taxes or licenses (§17-29-19), so there is no Nevada-style monthly PDF. (2) City/county TNC or for-hire reports / open data — none found; preemption means Charleston and Kanawha do not issue TNC trip reports. (3) Airport ground transportation — Yeager/CRW board reports and Gazette-Mail coverage give 218,546 commercial enplanements for 2025, not TNC or taxi pickups; yeagerairport.com board packets reviewed via public notices do not tabulate TNC trips. (4) MPO travel survey — RIC (Kanawha-Putnam MPO) publishes a TIP, safety/corridor studies, and a bike plan, not a household travel survey with TNC/taxi trip totals (wvregion3.org/subarea_studies). (5) Local reporting — C&H Taxi posts driver shortages and Uber/Lyft presence is reported, but no article quotes a trip total from any of the above. WVDOT’s Transportation Providers Directory lists taxi companies by county (2022 PDFs) without trip counts; Kanawha was not in the first-page county list as a trip-statistics file. Absence is therefore audited, not assumed. Do not treat 0 as ‘no rides happen’ — ACS already records 0.0046 of workers here commuting by taxi or ride-hail.", "verdict": ["none", "five named sources were checked and none of them publishes a trip count for this city"], "our_estimate_per_day": 1448, "our_range_per_day": [362, 5793]}, "replayed_from_saved_research": false, "summary": "This is a planning tool, not a prediction. Of the 80 numbers behind a season in Charleston, 29 are published figures, 31 are worked out from published figures, and 20 are our own estimates. 43 of them were read straight out of a federal file that covers every city in the country, so there was no citation to trust and no page to misread. You can change any of them. Your result is only as good as the numbers you agree with.", "federal_cross_check": {"rule": "Every research claim about charging stations, population or airports is checked against a federal bulk file the pipeline already holds on disk: chargers against the DOE/AFDC station snapshot (open, public sites within 10 straight-line miles of the Census town center), population against the Census place and county estimates, airports against the FAA enplanement file. Confirmed means the federal file agrees within tolerance (a stall count within 25% or one stall; a figure within 5%). Disputed means the federal file holds a different figure -- both are printed and the pack keeps its own citation. Unconfirmed means the federal file has no record of the thing claimed, which is never treated as false: the locator is voluntary submission and grant-funded sites lag it. Hospital claims are not checked because no federal hospital file is cached. A planned or permitted site never counts as present.", "checked_on": "2026-09-18", "town_center": [38.348692, -81.632324], "geoid": "5414600", "files": {"chargers": {"name": "US DOE Alternative Fuels Data Center station locator", "snapshot": "2026-09-16", "rows": "89386", "views": "dcfc_public / l2_public (status E, public, unrestricted)", "path": "../../american_adventurer/data/camp_leads.sqlite"}, "population": {"place": {"name": "Charleston city", "population": 46117, "vintage": "2025", "file": "sub-est2025.csv", "read_on": "2026-09-07"}, "county": {"name": "Kanawha County", "population": 172381, "vintage": "2025", "file": "co-est2025-alldata.csv", "read_on": "2026-09-07"}, "name": "US Census Bureau population estimates, vintage 2025"}, "airports": {"name": "FAA CY2024 commercial service enplanements + FAA airport layer", "read_on": "2026-09-07"}, "hospitals": {"skipped": "no federal hospital file is cached (CMS Hospital General Information would be the file; it is not fetched by this rule)"}}, "federal_chargers_within_10mi": {"dcfc_sites": 7, "dcfc_ports": 22, "dcfc_list": [{"name": "Moses Cadillac GMC Truck", "network": "EV Connect", "ports": 2, "connectors": "J1772COMBO", "miles": 0.5, "open_date": "2025-05-15"}, {"name": "Charleston, WV - Tesla Supercharger", "network": "Tesla", "ports": 8, "connectors": "TESLA", "miles": 0.7, "open_date": "2017-06-13"}, {"name": "JH HYUNDAI 1", "network": "ChargePoint Network", "ports": 1, "connectors": "CHADEMO J1772COMBO", "miles": 3.9, "open_date": "2025-01-24"}, {"name": "JH HYUNDAI 2", "network": "ChargePoint Network", "ports": 1, "connectors": "CHADEMO J1772COMBO", "miles": 3.9, "open_date": "2025-01-24"}, {"name": "JH HYUNDAI SHOWROOM SIDE", "network": "ChargePoint Network", "ports": 1, "connectors": "CHADEMO J1772COMBO", "miles": 4.0, "open_date": "2022-12-13"}, {"name": "ASTORG AUTO JLR CHARLESTON", "network": "ChargePoint Network", "ports": 1, "connectors": "CHADEMO J1772COMBO", "miles": 4.6, "open_date": "2022-12-13"}, {"name": "Marmet, WV - Tesla Supercharger", "network": "Tesla", "ports": 8, "connectors": "TESLA", "miles": 8.4, "open_date": "2024-03-13"}], "l2_sites": 10, "l2_ports": 29, "nearest_dcfc": {"name": "Moses Cadillac GMC Truck", "network": "EV Connect", "ports": 2, "connectors": "J1772COMBO", "miles": 0.5, "city": "East Charleston", "state": "WV"}}, "counts": {"confirmed": 9, "disputed": 0, "unconfirmed": 0, "skipped_no_file": 2, "claims": 11, "records_touched": 8, "records_read_from_a_federal_file_not_rechecked": 43}, "findings": [{"record": "power_dcfc", "field": "why", "subject": "chargers", "claim": "8 fast-charging stalls (Tesla Supercharger)", "claim_text": "Tesla Supercharger at 2 Kanawha Boulevard E, Charleston, WV 25301 (8 stalls, 150 kW).", "verdict": "confirmed", "federal": "the note counts 8 stalls; the snapshot lists Charleston, WV - Tesla Supercharger with 8 fast ports 0.7 mi from the town center (TESLA)", "tolerance": "within 10 straight-line miles of the Census town center; a stall count within 25% or one stall"}, {"record": "power_dcfc", "field": "why", "subject": "chargers", "claim": "Tesla Supercharger fast charging here", "claim_text": "DCFC Tracker reports Tesla’s member rate of $0.44/kWh as of 2026-09-14.", "verdict": "confirmed", "federal": "the snapshot lists Charleston, WV - Tesla Supercharger (Tesla, 8 fast ports, 0.7 mi)", "tolerance": "within 10 straight-line miles of the Census town center; a stall count within 25% or one stall"}, {"record": "hospital_beds", "field": "why", "subject": "hospitals", "claim": "hospital bed count", "claim_text": "CAMC’s own Snapshot 2025 publishes 472 licensed beds there (system total 1,138 across seven hospitals).", "verdict": "skipped", "federal": "no federal hospital file is cached (CMS Hospital General Information would be the file; it is not fetched by this rule)", "tolerance": ""}, {"record": "visitor_air_arrival_share", "field": "math", "subject": "airports", "claim": "202,303 passengers or enplanements", "claim_text": "202,303 boardings at CRW in calendar 2024 (FAA, a federal file) divided by 1,140,000 visitors a year = 0.177.", "verdict": "confirmed", "federal": "the note gives 202,303; FAA CY2024 enplanements for CRW = 202,303 -- within 5%", "tolerance": "within 5%"}, {"record": "visitor_airport_ridehail_share", "field": "math", "subject": "airports", "claim": "202,303 passengers or enplanements", "claim_text": "CRW is only 2.9 miles from the centre with 202,303 annual boardings and no rail, so a short taxi is cheap for some air parties, but rental cars and local pickups still take most of a small regional airport.", "verdict": "confirmed", "federal": "the note gives 202,303; FAA CY2024 enplanements for CRW = 202,303 -- within 5%", "tolerance": "within 5%"}, {"record": "rides_per_day", "field": "math", "subject": "population", "claim": "46,117 people", "claim_text": "Residents: 46,117 people x 0.8094 adults = 37,327 adults;", "verdict": "confirmed", "federal": "the note says 46,117; the Census file says Charleston city 46,117 (Census vintage 2025) -- within 5%", "tolerance": "within 5%"}, {"record": "notes.power", "field": "text", "subject": "chargers", "claim": "Tesla Supercharger fast charging here", "claim_text": "Downtown Charleston Supercharger is Tesla-only at $0.44/kWh member (DCFC Tracker 14 Sep 2026);", "verdict": "confirmed", "federal": "the snapshot lists Charleston, WV - Tesla Supercharger (Tesla, 8 fast ports, 0.7 mi)", "tolerance": "within 10 straight-line miles of the Census town center; a stall count within 25% or one stall"}, {"record": "notes.demand", "field": "text", "subject": "population", "claim": "46,117 people", "claim_text": "Established Census facts used throughout: pop 46,117;", "verdict": "confirmed", "federal": "the note says 46,117; the Census file says Charleston city 46,117 (Census vintage 2025) -- within 5%", "tolerance": "within 5%"}, {"record": "notes.demand", "field": "text", "subject": "population", "claim": "172,381 people", "claim_text": "county pop 172,381;", "verdict": "confirmed", "federal": "the note says 172,381; the Census file says Kanawha County 172,381 (Census vintage 2025) -- within 5%", "tolerance": "within 5%"}, {"record": "notes.geography", "field": "text", "subject": "hospitals", "claim": "hospital bed count", "claim_text": "Hospital 472 is CAMC Memorial LICENSED beds from CAMC Snapshot 2025 (printed Jan 2025);", "verdict": "skipped", "federal": "no federal hospital file is cached (CMS Hospital General Information would be the file; it is not fetched by this rule)", "tolerance": ""}, {"record": "notes.geography", "field": "text", "subject": "population", "claim": "46,117 people", "claim_text": "Land area 31.397 sq mi and population 46,117 are the settled bulk figures this pack was told not to re-research.", "verdict": "confirmed", "federal": "the note says 46,117; the Census file says Charleston city 46,117 (Census vintage 2025) -- within 5%", "tolerance": "within 5%"}]}, "citation_recheck": {"on": "2026-09-24", "how": "Every citation this pack's build-time check reported as failed was fetched again by hand on 2026-09-24: one request at a time, with the header set a real browser sends, a pause between hosts, a retry with a back-off on 403, 429 and 5xx, and redirects followed and recorded.", "counts": {"rechecked": 4, "gone": 0, "moved": 0, "blocked": 0, "flaky": 0, "answers_normally": 4, "passes_the_same_test_now": 1, "still_fails_the_same_test": 1, "could_not_be_read_today": 2}, "what_this_means": "A citation counted as failed at build time is not the same thing as a dead link. None of this pack's failed citations is a dead page. Where the URL answers and the same test now passes, the original failure was our own fetch being refused, not the source.", "citations": [{"record": "airport_flights_note", "url": "https://www.directflights.com/CRW", "url_today": "answers normally", "detail_today": "HTTP 200 on the first attempt", "build_time_verdict": "never fetched: the cited page could not be fetched (HTTP 403)", "same_test_now": "passes", "same_test_detail": "the page carries 10 of the 14 distinctive words in this note"}, {"record": "power_mid", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "url_today": "answers normally", "detail_today": "HTTP 200 on the first attempt", "build_time_verdict": "the cited page loads but does not carry the figure (the digits 24 appear near 'r.s.-t.o.d.' but on a different row -- that is a neighbouring entry in the same table, not this city's figure)", "same_test_now": null, "same_test_detail": "the page could not be read today either"}, {"record": "power_onpeak", "url": "https://www.appalachianpower.com/lib/docs/ratesandtariffs/WestVirginia/ENEC_Tariff_Sheets_Eff_9-1-26.pdf", "url_today": "answers normally", "detail_today": "HTTP 200 on the first attempt", "build_time_verdict": "the cited page loads but does not carry the figure (the digits 24 appear near 'r.s.-t.o.d.' but on a different row -- that is a neighbouring entry in the same table, not this city's figure)", "same_test_now": null, "same_test_detail": "the page could not be read today either"}, {"record": "registration_note", "url": "https://code.wvlegislature.gov/17-29-3", "url_today": "answers normally", "detail_today": "HTTP 200 on the first attempt", "build_time_verdict": "the cited page loads but does not carry the figure (the page carries only 4 of the 9 distinctive words in this note)", "same_test_now": "still fails", "same_test_detail": "the page carries only 4 of the 9 distinctive words in this note"}]}}, "ok": true}