| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |