whatchanged.us Weekly Data Audit

Report generated: 2026-03-29 18:20 UTC
Auditor: Automated Audit System v1.0
Zip codes tested: 10
FAIL

Executive Summary

664
Passed
2
Failed
14
Warnings
83
Skipped
Critical Findings:
Advisory Findings:
Jump to: 00601 National PARTIAL 06510 Metro PARTIAL 10001 Metro PARTIAL 25301 Metro PARTIAL 46204 Metro PARTIAL 72201 Metro PARTIAL 78701 Metro FAIL 84101 Metro PARTIAL 90210 Metro PARTIAL 99723 Metro FAIL

00601 — Adjuntas, PR (Adjuntas Municipio)

CPI: National PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (U.S.). Tolerance: ±$0.05/gal. gas 4.096 4.096 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 318.898 318.898 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 2.6 2.6 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 3.3 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi 1.5 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 16.7 16.7 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 18571 18571.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 381 381 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 381.0 381.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 4.1 4.1 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 2.6 2.6 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 3.3 3.3 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.867 0.867 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 2.6 2.6 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation 3.5 3.5 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 121 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national View source WARN
national_gas_present Verify national gas price nationalSeries is present in the API response. national View source WARN
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 20.0pp would be unusual and likely indicates a data mapping error. national 16.7 4.4 12.3 percentage points (tol: 20.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.867 0.867 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 381 381 0 PASS
metro_match_groceries Verify BLS series CUUR0000SAF11 actually maps to the metro area the site claims ('National'). A mismatch means data from the wrong city. metro_mapping National U.S. city average PASS
metro_match_shelter Verify BLS series CUUR0000SAH1 actually maps to the metro area the site claims ('National'). A mismatch means data from the wrong city. metro_mapping National U.S. city average PASS
metro_match_energy Verify BLS series CUUR0000SA0E actually maps to the metro area the site claims ('National'). A mismatch means data from the wrong city. metro_mapping National U.S. city average PASS
cpi_region_appropriate Verify regional/division CPI assignment matches the zip's Census region. geo_mapping SKIP
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping National avg National (any state) PASS
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 3.229 3.229 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 13.2 13.2 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 310.936 310.936 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Adjuntas PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 4 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency National avg PASS
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0000SAF11 https://data.bls.gov/timeseries/CUUR0000SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0000SAH1 https://data.bls.gov/timeseries/CUUR0000SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0000SA0E https://data.bls.gov/timeseries/CUUR0000SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN720010000000003 LAUCN720010000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
aaa_cross_check: AAA data unavailable (best-effort scraper)
national_cpi_present: cpi.data.nationalSeries is missing or empty
national_gas_present: gas.data.nationalSeries is missing or empty
cpi_region_appropriate: Not a division/regional CPI assignment (tier=4, metro='National')
metro_state_appropriate: National CPI (tier=4) — no state check needed (metro='National')
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response

Screenshots

Whatchanged Full
Whatchanged Full

06510 — New Haven, CT (New Haven County)

CPI: Metro PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (PADD 1A). Tolerance: ±$0.05/gal. gas 3.848 3.848 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 128.169 128.169 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 3.6 3.6 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 3.1 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi -7.3 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 4 4.0 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 63598 63598.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 1304 1304 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 1304.0 1304.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3.85 3.85 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 3.6 3.6 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 3.1 3.1 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.689 0.689 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 3.6 3.6 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation 0.1 0.1 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 121 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 4 4.4 0.4 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 3.6 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 3.848 4.096 0.248 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.689 0.689 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 1304 1304 0 PASS
metro_match_groceries Verify BLS series CUUR0110SAF11 actually maps to the metro area the site claims ('New England'). A mismatch means data from the wrong city. metro_mapping New England New England PASS
metro_match_shelter Verify BLS series CUUR0110SAH1 actually maps to the metro area the site claims ('New England'). A mismatch means data from the wrong city. metro_mapping New England New England PASS
metro_match_energy Verify BLS series CUUR0110SA0E actually maps to the metro area the site claims ('New England'). A mismatch means data from the wrong city. metro_mapping New England New England PASS
cpi_region_appropriate Verify division CPI assignment matches the zip's Census division. geo_mapping New England New England division PASS
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping New England (PADD 1A) avg PADD 1A states PASS
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 3.159 3.159 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 3.9 3.9 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 123.702 123.702 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness New Haven PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 2 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency New England (PADD 1A) avg PASS
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0110SAF11 https://data.bls.gov/timeseries/CUUR0110SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0110SAH1 https://data.bls.gov/timeseries/CUUR0110SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0110SA0E https://data.bls.gov/timeseries/CUUR0110SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN091700000000003 LAUCN091700000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
aaa_cross_check: AAA data unavailable (best-effort scraper)
metro_state_appropriate: Division CPI (tier=2) — use verify_cpi_region_appropriate instead (metro='New England')
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response

Screenshots

Whatchanged Full
Whatchanged Full

10001 — New York, NY (New York County)

CPI: Metro PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (NEW YORK CITY). Tolerance: ±$0.05/gal. gas 3.977 3.977 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 335.211 335.211 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 4.1 4.1 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 4.3 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi 5.8 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 4.9 4.9 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 123393 123393.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 2530 2530 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 2530.0 2530.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3.98 3.98 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 4.1 4.1 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 4.3 4.3 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.764 0.764 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 4.1 4.1 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation 0.1 0.1 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 73 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 4.9 4.4 0.5 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 4.1 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 3.977 4.096 0.119 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.764 0.764 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 2530 2530 0 PASS
metro_match_groceries Verify BLS series CUURS12ASAF11 actually maps to the metro area the site claims ('New York-Newark-Jersey City'). A mismatch means data from the wrong city. metro_mapping New York-Newark-Jersey City New York-Newark-Jersey City, NY-NJ-PA PASS
metro_match_shelter Verify BLS series CUURS12ASAH1 actually maps to the metro area the site claims ('New York-Newark-Jersey City'). A mismatch means data from the wrong city. metro_mapping New York-Newark-Jersey City New York-Newark-Jersey City, NY-NJ-PA PASS
metro_match_energy Verify BLS series CUURS12ASA0E actually maps to the metro area the site claims ('New York-Newark-Jersey City'). A mismatch means data from the wrong city. metro_mapping New York-Newark-Jersey City New York-Newark-Jersey City, NY-NJ-PA PASS
cpi_region_appropriate Verify regional/division CPI assignment matches the zip's Census region. geo_mapping SKIP
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping New York-Newark-Jersey City New York metro states PASS
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping New York City area avg New York area states PASS
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 3.213 3.213 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 4.8 4.8 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 322.052 322.052 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness New York PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 1 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency New York City area avg PASS
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUURS12ASAF11 https://data.bls.gov/timeseries/CUURS12ASAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUURS12ASAH1 https://data.bls.gov/timeseries/CUURS12ASAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUURS12ASA0E https://data.bls.gov/timeseries/CUURS12ASA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN360610000000003 LAUCN360610000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2020 <= 2018 (PASS) or <= 2020 (WARN) WARN
aaa_cross_check: AAA data unavailable (best-effort scraper)
cpi_region_appropriate: Not a division/regional CPI assignment (tier=1, metro='New York-Newark-Jersey City')
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response
unemployment_10y_depth: Unemployment earliest year: 2020 (limited history (BLS LAUS county data — expected))

Screenshots

Whatchanged Full
Whatchanged Full

25301 — Charleston, WV (Kanawha County)

CPI: Metro PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (PADD 1C). Tolerance: ±$0.05/gal. gas 3.863 3.863 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 134.043 134.043 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 2.5 2.5 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 2.8 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi -0.4 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 4.2 4.2 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 21063 21063.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 432 432 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 432.0 432.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3.86 3.86 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 2.5 2.5 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 2.8 2.8 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.769 0.769 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 2.5 2.5 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation 0 0.0 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 121 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 4.2 4.4 0.2 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 2.5 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 3.863 4.096 0.233 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.769 0.769 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 432 432 0 PASS
metro_match_groceries Verify BLS series CUUR0350SAF11 actually maps to the metro area the site claims ('South Atlantic'). A mismatch means data from the wrong city. metro_mapping South Atlantic South Atlantic PASS
metro_match_shelter Verify BLS series CUUR0350SAH1 actually maps to the metro area the site claims ('South Atlantic'). A mismatch means data from the wrong city. metro_mapping South Atlantic South Atlantic PASS
metro_match_energy Verify BLS series CUUR0350SA0E actually maps to the metro area the site claims ('South Atlantic'). A mismatch means data from the wrong city. metro_mapping South Atlantic South Atlantic PASS
cpi_region_appropriate Verify division CPI assignment matches the zip's Census division. geo_mapping South Atlantic South Atlantic division PASS
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping Lower Atlantic (PADD 1C) avg PADD 1C states PASS
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 3.094 3.094 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 4.2 4.2 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 130.794 130.794 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Charleston PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 2 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency Lower Atlantic (PADD 1C) avg PASS
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0350SAF11 https://data.bls.gov/timeseries/CUUR0350SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0350SAH1 https://data.bls.gov/timeseries/CUUR0350SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0350SA0E https://data.bls.gov/timeseries/CUUR0350SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN540390000000003 LAUCN540390000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
aaa_cross_check: AAA data unavailable (best-effort scraper)
metro_state_appropriate: Division CPI (tier=2) — use verify_cpi_region_appropriate instead (metro='South Atlantic')
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response

Screenshots

Whatchanged Full
Whatchanged Full

46204 — Indianapolis, IN (Marion County)

CPI: Metro PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (PADD 2). Tolerance: ±$0.05/gal. gas 3.772 3.772 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 133.377 133.377 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 2 2.0 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 5.1 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi 2.8 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 2.8 2.8 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 88081 88081.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 1806 1806 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 1806.0 1806.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3.77 3.77 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 2.0 2 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 5.1 5.1 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.708 0.708 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 2 2.0 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation -1.5 -1.5 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 121 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 2.8 4.4 1.6 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 2 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 3.772 4.096 0.324 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.708 0.708 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 1806 1806 0 PASS
metro_match_groceries Verify BLS series CUUR0230SAF11 actually maps to the metro area the site claims ('East North Central'). A mismatch means data from the wrong city. metro_mapping East North Central East North Central PASS
metro_match_shelter Verify BLS series CUUR0230SAH1 actually maps to the metro area the site claims ('East North Central'). A mismatch means data from the wrong city. metro_mapping East North Central East North Central PASS
metro_match_energy Verify BLS series CUUR0230SA0E actually maps to the metro area the site claims ('East North Central'). A mismatch means data from the wrong city. metro_mapping East North Central East North Central PASS
cpi_region_appropriate Verify division CPI assignment matches the zip's Census division. geo_mapping East North Central East North Central division PASS
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping Midwest avg WARN
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 3.064 3.064 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 4.3 4.3 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 130.745 130.745 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Indianapolis PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 2 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency Midwest avg WARN
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0230SAF11 https://data.bls.gov/timeseries/CUUR0230SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0230SAH1 https://data.bls.gov/timeseries/CUUR0230SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0230SA0E https://data.bls.gov/timeseries/CUUR0230SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN180970000000003 LAUCN180970000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
aaa_cross_check: AAA data unavailable (best-effort scraper)
metro_state_appropriate: Division CPI (tier=2) — use verify_cpi_region_appropriate instead (metro='East North Central')
gas_region_appropriate: Unrecognized geoLevel format 'Midwest avg' — cannot verify region appropriateness
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
gas_geolevel_label: Gas geoLevel 'Midwest avg' looks like a region label without a PADD identifier. This may be a stale cache entry. Expected format: '<Region> (PADD N) avg' (e.g. 'Midwest (PADD 2) avg').
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response

Screenshots

Whatchanged Full
Whatchanged Full

72201 — Little Rock, AR (Pulaski County)

CPI: Metro PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (PADD 3). Tolerance: ±$0.05/gal. gas 3.702 3.702 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 130.99 130.99 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 1.7 1.7 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 1.4 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi -0.3 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 4.3 4.3 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 112045 112045.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 2297 2297 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 2297.0 2297.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3.7 3.7 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 1.7 1.7 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 1.4 1.4 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.914 0.914 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 1.7 1.7 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation 0.4 0.4 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 121 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 4.3 4.4 0.1 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 1.7 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 3.702 4.096 0.394 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.914 0.914 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 2297 2297 0 PASS
metro_match_groceries Verify BLS series CUUR0370SAF11 actually maps to the metro area the site claims ('West South Central'). A mismatch means data from the wrong city. metro_mapping West South Central West South Central PASS
metro_match_shelter Verify BLS series CUUR0370SAH1 actually maps to the metro area the site claims ('West South Central'). A mismatch means data from the wrong city. metro_mapping West South Central West South Central PASS
metro_match_energy Verify BLS series CUUR0370SA0E actually maps to the metro area the site claims ('West South Central'). A mismatch means data from the wrong city. metro_mapping West South Central West South Central PASS
cpi_region_appropriate Verify division CPI assignment matches the zip's Census division. geo_mapping West South Central West South Central division PASS
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping Gulf Coast avg WARN
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 2.788 2.788 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 3.9 3.9 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 128.84 128.84 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Little Rock PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 2 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency Gulf Coast avg WARN
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0370SAF11 https://data.bls.gov/timeseries/CUUR0370SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0370SAH1 https://data.bls.gov/timeseries/CUUR0370SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0370SA0E https://data.bls.gov/timeseries/CUUR0370SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN051190000000003 LAUCN051190000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
aaa_cross_check: AAA data unavailable (best-effort scraper)
metro_state_appropriate: Division CPI (tier=2) — use verify_cpi_region_appropriate instead (metro='West South Central')
gas_region_appropriate: Unrecognized geoLevel format 'Gulf Coast avg' — cannot verify region appropriateness
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
gas_geolevel_label: Gas geoLevel 'Gulf Coast avg' looks like a region label without a PADD identifier. This may be a stale cache entry. Expected format: '<Region> (PADD N) avg' (e.g. 'Midwest (PADD 2) avg').
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response

Screenshots

Whatchanged Full
Whatchanged Full

78701 — Austin, TX (Travis County)

CPI: Metro FAIL
Check Description Category Site Value Source Value Difference Status
eia_price_match EIA gas price comparison skipped — the site's exact EIA regional series ID (duoarea) was not available in the API response. gas 3.706 View source SKIP
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 130.99 130.99 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 1.7 1.7 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 1.4 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi -0.3 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 3.2 3.2 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 154867 154867.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 3175 3175 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3175.0 3175.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3.71 3.71 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 1.7 1.7 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 1.4 1.4 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.954 0.954 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 1.7 1.7 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation -0.2 -0.2 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 73 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 3.2 4.4 1.2 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 1.7 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 3.706 4.096 0.39 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.954 0.954 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 3175 3175 0 PASS
metro_match_groceries Verify BLS series CUUR0370SAF11 actually maps to the metro area the site claims ('West South Central'). A mismatch means data from the wrong city. metro_mapping West South Central West South Central PASS
metro_match_shelter Verify BLS series CUUR0370SAH1 actually maps to the metro area the site claims ('West South Central'). A mismatch means data from the wrong city. metro_mapping West South Central West South Central PASS
metro_match_energy Verify BLS series CUUR0370SA0E actually maps to the metro area the site claims ('West South Central'). A mismatch means data from the wrong city. metro_mapping West South Central West South Central PASS
cpi_region_appropriate Verify division CPI assignment matches the zip's Census division. geo_mapping West South Central West South Central division PASS
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping Texas state avg TX state avg PASS
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 2.752 2.752 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 3.4 3.4 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 128.84 128.84 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Austin PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 2 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency Texas state avg PASS
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0370SAF11 https://data.bls.gov/timeseries/CUUR0370SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0370SAH1 https://data.bls.gov/timeseries/CUUR0370SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0370SA0E https://data.bls.gov/timeseries/CUUR0370SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN484530000000003 LAUCN484530000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable The audit attempted to call the EIA API to cross-check gas prices but received no data. All EIA gas cross-checks were silently skipped. Verify that EIA_API_KEY is set and the EIA API is reachable. audit_health FAIL
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2020 <= 2018 (PASS) or <= 2020 (WARN) WARN
eia_price_match: EIA comparison skipped — exact regional series not available from site API.
aaa_cross_check: AAA data unavailable (best-effort scraper)
metro_state_appropriate: Division CPI (tier=2) — use verify_cpi_region_appropriate instead (metro='West South Central')
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
eia_api_reachable: Audit's EIA API call returned None — cross-check impossible. Check EIA_API_KEY env var.
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response
unemployment_10y_depth: Unemployment earliest year: 2020 (limited history (BLS LAUS county data — expected))

Screenshots

Whatchanged Full
Whatchanged Full

84101 — Salt Lake City, UT (Salt Lake County)

CPI: Metro PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (PADD 4). Tolerance: ±$0.05/gal. gas 3.982 3.982 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 137.447 137.447 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 2.6 2.6 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 1.9 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi -0.4 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 3.4 3.4 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 70391 70391.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 1443 1443 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 1443.0 1443.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3.98 3.98 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 2.6 2.6 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 1.9 1.9 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 0.948 0.948 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 2.6 2.6 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation 0.2 0.2 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 73 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 3.4 4.4 1.0 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 2.6 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 3.982 4.096 0.114 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 0.948 0.948 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 1443 1443 0 PASS
metro_match_groceries Verify BLS series CUUR0480SAF11 actually maps to the metro area the site claims ('Mountain'). A mismatch means data from the wrong city. metro_mapping Mountain Mountain PASS
metro_match_shelter Verify BLS series CUUR0480SAH1 actually maps to the metro area the site claims ('Mountain'). A mismatch means data from the wrong city. metro_mapping Mountain Mountain PASS
metro_match_energy Verify BLS series CUUR0480SA0E actually maps to the metro area the site claims ('Mountain'). A mismatch means data from the wrong city. metro_mapping Mountain Mountain PASS
cpi_region_appropriate Verify division CPI assignment matches the zip's Census division. geo_mapping Mountain Mountain division PASS
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping Rocky Mountain avg WARN
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 3.034 3.034 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 3.2 3.2 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 133.943 133.943 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Salt Lake City PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 2 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency Rocky Mountain avg WARN
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0480SAF11 https://data.bls.gov/timeseries/CUUR0480SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0480SAH1 https://data.bls.gov/timeseries/CUUR0480SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0480SA0E https://data.bls.gov/timeseries/CUUR0480SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN490350000000003 LAUCN490350000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2020 <= 2018 (PASS) or <= 2020 (WARN) WARN
aaa_cross_check: AAA data unavailable (best-effort scraper)
metro_state_appropriate: Division CPI (tier=2) — use verify_cpi_region_appropriate instead (metro='Mountain')
gas_region_appropriate: Unrecognized geoLevel format 'Rocky Mountain avg' — cannot verify region appropriateness
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
gas_geolevel_label: Gas geoLevel 'Rocky Mountain avg' looks like a region label without a PADD identifier. This may be a stale cache entry. Expected format: '<Region> (PADD N) avg' (e.g. 'Midwest (PADD 2) avg').
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response
unemployment_10y_depth: Unemployment earliest year: 2020 (limited history (BLS LAUS county data — expected))

Screenshots

Whatchanged Full
Whatchanged Full

90210 — Beverly Hills, CA (Los Angeles County)

CPI: Metro PARTIAL
Check Description Category Site Value Source Value Difference Status
eia_price_match Gas price from whatchanged.us vs EIA API for the same area (LOS ANGELES). Tolerance: ±$0.05/gal. gas 5.778 5.778 0.0 $/gal (tol: 0.05) PASS
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 339.865 339.865 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 3.4 3.4 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 3.7 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi 4.3 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 5 5.0 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 190382 190382.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 3903 3903 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 3903.0 3903.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 5.78 5.78 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 3.4 3.4 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 3.7 3.7 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 1.469 1.469 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 3.4 3.4 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation -0.8 -0.8 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 73 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 5 4.4 0.6 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 3.4 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 5.778 4.096 1.682 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 1.469 1.469 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 3903 3903 0 PASS
metro_match_groceries Verify BLS series CUURS49ASAF11 actually maps to the metro area the site claims ('Los Angeles-Long Beach-Anaheim'). A mismatch means data from the wrong city. metro_mapping Los Angeles-Long Beach-Anaheim Los Angeles-Long Beach-Anaheim, CA PASS
metro_match_shelter Verify BLS series CUURS49ASAH1 actually maps to the metro area the site claims ('Los Angeles-Long Beach-Anaheim'). A mismatch means data from the wrong city. metro_mapping Los Angeles-Long Beach-Anaheim Los Angeles-Long Beach-Anaheim, CA PASS
metro_match_energy Verify BLS series CUURS49ASA0E actually maps to the metro area the site claims ('Los Angeles-Long Beach-Anaheim'). A mismatch means data from the wrong city. metro_mapping Los Angeles-Long Beach-Anaheim Los Angeles-Long Beach-Anaheim, CA PASS
cpi_region_appropriate Verify regional/division CPI assignment matches the zip's Census region. geo_mapping SKIP
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping Los Angeles-Long Beach-Anaheim Los Angeles metro states PASS
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping Los Angeles area avg Los Angeles area states PASS
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 4.309 4.309 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 5.8 5.8 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 328.687 328.687 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Beverly Hills PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 1 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency Los Angeles area avg PASS
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUURS49ASAF11 https://data.bls.gov/timeseries/CUURS49ASAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUURS49ASAH1 https://data.bls.gov/timeseries/CUURS49ASAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUURS49ASA0E https://data.bls.gov/timeseries/CUURS49ASA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN060370000000003 LAUCN060370000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable Verify the audit's EIA API call succeeded so cross-checks are valid. audit_health 0 PASS
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2020 <= 2018 (PASS) or <= 2020 (WARN) WARN
aaa_cross_check: AAA data unavailable (best-effort scraper)
cpi_region_appropriate: Not a division/regional CPI assignment (tier=1, metro='Los Angeles-Long Beach-Anaheim')
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response
unemployment_10y_depth: Unemployment earliest year: 2020 (limited history (BLS LAUS county data — expected))

Screenshots

Whatchanged Full
Whatchanged Full

99723 — Barrow, AK (North Slope Borough)

CPI: Metro FAIL
Check Description Category Site Value Source Value Difference Status
eia_price_match EIA gas price comparison skipped — the site's exact EIA regional series ID (duoarea) was not available in the API response. gas 5.394 View source SKIP
aaa_cross_check AAA scraping failed even with Playwright browser rendering. The site may have changed its layout. gas View source SKIP
grocery_index_match BLS CPI grocery index value from the site vs directly from the BLS API for the same series ID. cpi 136.716 136.716 0.0 index points (tol: 0.01) PASS
grocery_pct_change_internal Internal consistency: does the displayed grocery % change match (current - baseline) / baseline x 100? cpi 2.7 2.7 0.0 percentage points (tol: 0.1) PASS
shelter_data_present Confirms BLS shelter CPI series has data. The site shows shelter cost % change from this series. cpi View source PASS
shelter_change_reasonable Sanity check: shelter % change is between -20% and +50%. cpi 3.5 PASS
energy_data_present Confirms BLS energy CPI series has data. The site shows energy cost % change from this series. cpi View source PASS
energy_change_reasonable Sanity check: energy % change since Jan 2025 is between -50% and +100%. cpi 4.1 PASS
bls_laus_match Unemployment rate from whatchanged.us vs directly from BLS LAUS (Local Area Unemployment Statistics) for the same county. unemployment 3.2 3.2 0.0 percentage points (tol: 0.005) PASS
income_vs_census Median household income used by the site vs Census ACS 5-year estimate (table B19013) for this zip code. tariff 89038 89038.0 0.0 dollars (tol: 2000.0) PASS
tariff_vs_yale_method Site's tariff estimate vs independent calculation using Census income x Yale Budget Lab rate (2.05% of household income). tariff 1825 1825 0 dollars/yr (tol: 200.0) PASS
tariff_display_vs_api Tariff estimate shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 1825.0 1825.0 0.0 PASS
gas_price_display Gas price shown on the rendered page vs the API response (checks for display/rounding bugs). rendered 5.39 5.39 0.0 PASS
grocery_change_display Grocery % change on the rendered page vs the API response. rendered 2.7 2.7 0.0 % PASS
shelter_change_display Shelter % change on the rendered page vs the API response. rendered 3.5 3.5 0.0 % PASS
gas_change_recomputed Re-derive gas price change from current and baseline values. Catches internal math errors. computation 1.384 1.384 0.0 PASS
grocery_pct_recomputed Re-derive grocery CPI % change from current and baseline index values. computation 2.7 2.7 0.0 percentage points PASS
unemployment_change_recomputed Re-derive unemployment rate change from current and baseline values. computation -0.1 -0.1 0.0 percentage points PASS
national_unemployment_present Verify national unemployment nationalSeries is present in the API response. national 121 View source PASS
national_unemployment_freshness Most recent national unemployment data point should be within 60 days. national 56 View source PASS
national_unemployment_range Sanity check: national unemployment rate should be between 0.0 and 15.0 %. national 4.4 View source PASS
national_cpi_present Verify national CPI nationalSeries is present in the API response. national 121 View source PASS
national_cpi_freshness Most recent national CPI data point should be within 60 days. national 56 View source PASS
national_cpi_grocery_range Sanity check: national grocery CPI index should be between 200.0 and 500.0 index points. national 318.898 View source PASS
national_cpi_shelter_range Sanity check: national shelter CPI index should be between 200.0 and 500.0 index points. national 422.776 View source PASS
national_gas_present Verify national gas price nationalSeries is present in the API response. national 520 View source PASS
national_gas_freshness Most recent national gas price data point should be within 14 days. national 6 View source PASS
national_gas_range Sanity check: national gas price should be between 1.0 and 10.0 $/gal. national 4.096 View source PASS
local_vs_national_unemployment Local unemployment rate vs national average. A difference > 10.0pp would be unusual and likely indicates a data mapping error. national 3.2 4.4 1.2 percentage points (tol: 10.0) PASS
local_vs_national_grocery_direction Local grocery CPI % change vs national — both should move in the same direction. Disagreement may indicate a series mapping error. national 2.7 2.56 PASS
local_vs_national_gas Local gas price vs national average. A difference > $2/gal is unusual and may indicate a regional data error. national 5.394 4.096 1.298 $/gal (tol: 2.0) PASS
gas_change_audit_block Verify gas change from the API's _audit.computations block matches an independent calculation. computation_audit 1.384 1.384 0.0 PASS
tariff_audit_block Verify tariff estimate from the API's _audit.computations block matches an independent calculation. computation_audit 1825 1825 0 PASS
metro_match_groceries Verify BLS series CUUR0490SAF11 actually maps to the metro area the site claims ('Pacific'). A mismatch means data from the wrong city. metro_mapping Pacific Pacific PASS
metro_match_shelter Verify BLS series CUUR0490SAH1 actually maps to the metro area the site claims ('Pacific'). A mismatch means data from the wrong city. metro_mapping Pacific Pacific PASS
metro_match_energy Verify BLS series CUUR0490SA0E actually maps to the metro area the site claims ('Pacific'). A mismatch means data from the wrong city. metro_mapping Pacific Pacific PASS
cpi_region_appropriate Verify division CPI assignment matches the zip's Census division. geo_mapping Pacific Pacific division PASS
metro_state_appropriate Verify metro CPI assignment is plausible for the zip's state. geo_mapping SKIP
gas_region_appropriate Verify gas price data comes from an EIA region that is geographically appropriate for the zip's state. A wrong region (e.g. Midwest PAD for a West Coast zip) means systematically incorrect prices. geo_mapping West Coast avg WARN
freshness_gas Check that gas data was fetched recently enough (within 7 days). freshness PASS
freshness_cpi Check that cpi data was fetched recently enough (within 45 days). freshness PASS
freshness_unemployment Check that unemployment data was fetched recently enough (within 45 days). freshness PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
link_check Verify source attribution link resolves (HTTP 200). links View source PASS
gas_baseline Verify the gas price baseline matches the Jan 20, 2025 data point in the series (inauguration day). baseline 4.01 4.01 0.0 (tol: 0.1) PASS
unemployment_baseline Verify the unemployment baseline matches the January 2025 data point in the series. baseline 3.3 3.3 0.0 PASS
cpi_grocery_baseline Verify the CPI grocery baseline matches the January 2025 index value in the series. baseline 133.145 133.145 0.0 PASS
gas_data_present Verify gas price data is non-null so the Gas Prices card renders real numbers. completeness present PASS
cpi_data_present Verify CPI data (groceries, shelter, energy) is non-null so those cards render. completeness present PASS
unemployment_data_present Verify unemployment (BLS LAUS) data is non-null so the Unemployment chart renders. completeness present PASS
federal_data_present Verify USASpending federal cuts data is non-null so the Federal Funding card renders. completeness present PASS
tariff_data_present Verify tariff estimate data is non-null. This is derived from Census ACS income data (median_income × 0.0205) so null usually means the Census crosswalk is missing for this zip. completeness present PASS
city_name_present Verify a city name is available for the location banner. Missing city names produce a degraded but not broken UI. completeness Barrow PASS
cpi_tier_hierarchy Validate that the zip receives the most granular CPI tier available. Tier 1 = metro (best), 2 = division, 3 = regional (fallback), 4 = national (territories only). tier_hierarchy 2 PASS
cpi_groceries_label_tier_match Verify that the CPI groceries tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_shelter_label_tier_match Verify that the CPI shelter tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
cpi_energy_label_tier_match Verify that the CPI energy tier number matches the geographic label displayed to users. A mismatch means the label says one resolution level (e.g. metro) while the data is actually from a different level (e.g. regional), which misleads users about how local the data is. label_consistency SKIP
gas_geolevel_label Gas geoLevel should clearly identify the resolution level: PADD district, city area, state avg, or national avg. A bare region name without a PADD identifier (e.g. 'Midwest avg') is ambiguous and may confuse users or mask a geo-mapping regression. label_consistency West Coast avg WARN
cpi_link_series_id_groceries Verify the groceries CPI source link URL contains the correct BLS series ID. link_geography CUUR0490SAF11 https://data.bls.gov/timeseries/CUUR0490SAF11 PASS
cpi_link_series_id_shelter Verify the shelter CPI source link URL contains the correct BLS series ID. link_geography CUUR0490SAH1 https://data.bls.gov/timeseries/CUUR0490SAH1 PASS
cpi_link_series_id_energy Verify the energy CPI source link URL contains the correct BLS series ID. link_geography CUUR0490SA0E https://data.bls.gov/timeseries/CUUR0490SA0E PASS
unemployment_series_id_format Verify the unemployment series ID matches the expected LAUS county format LAUCN{FIPS}0000000003. link_geography LAUCN021850000000003 LAUCN021850000000003 PASS
site_api_reachable Verify the audit was able to fetch a response from the whatchanged.us /api/data/{zip} endpoint. A FAIL here means ALL downstream checks were skipped and the audit verified nothing. audit_health present PASS
bls_api_reachable Verify the audit's BLS API call succeeded so cross-checks are valid. audit_health 0 PASS
eia_api_reachable The audit attempted to call the EIA API to cross-check gas prices but received no data. All EIA gas cross-checks were silently skipped. Verify that EIA_API_KEY is set and the EIA API is reachable. audit_health FAIL
gas_10y_depth Verify gas time series goes back to at least 2018 for the 10Y chart toggle. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
cpi_groceries_10y_depth Verify CPI groceries time series goes back to at least 2018. chart_depth SKIP
cpi_shelter_10y_depth Verify CPI shelter time series goes back to at least 2018. chart_depth SKIP
cpi_energy_10y_depth Verify CPI energy time series goes back to at least 2018. chart_depth SKIP
unemployment_10y_depth Verify unemployment time series depth. BLS LAUS county data is limited to ~6 years. chart_depth 2016 <= 2018 (PASS) or <= 2020 (WARN) PASS
eia_price_match: EIA comparison skipped — exact regional series not available from site API.
aaa_cross_check: AAA data unavailable (best-effort scraper)
metro_state_appropriate: Division CPI (tier=2) — use verify_cpi_region_appropriate instead (metro='Pacific')
gas_region_appropriate: Unrecognized geoLevel format 'West Coast avg' — cannot verify region appropriateness
cpi_groceries_label_tier_match: No CPI groceries data in response — cannot check label
cpi_shelter_label_tier_match: No CPI shelter data in response — cannot check label
cpi_energy_label_tier_match: No CPI energy data in response — cannot check label
gas_geolevel_label: Gas geoLevel 'West Coast avg' looks like a region label without a PADD identifier. This may be a stale cache entry. Expected format: '<Region> (PADD N) avg' (e.g. 'Midwest (PADD 2) avg').
eia_api_reachable: Audit's EIA API call returned None — cross-check impossible. Check EIA_API_KEY env var.
cpi_groceries_10y_depth: No CPI groceries series in API response
cpi_shelter_10y_depth: No CPI shelter series in API response
cpi_energy_10y_depth: No CPI energy series in API response

Screenshots

Whatchanged Full
Whatchanged Full