Every update to the cost data powering our home improvement calculators is logged here. Labor rates, material prices, permit costs, and methodology changes are all timestamped so you can see exactly how fresh the numbers are.
Deleted ~7 legacy sample rows from migration 016 and inserted 16 researched rows covering tile (stock/special-order/designer), natural stone countertops, vanities (stock/semi-custom/custom millwork), toilets (standard/premium smart), shower doors (stock/frameless custom), freestanding tubs (standard/premium), and fixtures (standard mainline/premium luxury/European imports). Rows are multi-source triangulated from big-box retailer category pages, manufacturer/distributor sites, and the Phoenix Remodel 2026 material lead-time tracker. Days-based research output was rounded to whole weeks to match the cost_data_lead_times INTEGER schema; volatility and >25% flag annotations fold into notes. Two categories are flagged as materially longer than pre-2020: shower_enclosure_frameless_custom and fixtures_european_imports. All rows marked is_sample = TRUE because multi-source triangulation is a quality signal but not independent verification.
Source: deep research synthesis 2026-04-14 (big-box retailers, Phoenix Remodel tracker, manufacturer sites, trade publications)
ROI7 rows
Replaced sample ROI rows with 7 national-only JLC Cost vs. Value 2025 rows
Deleted ~13 legacy sample rows from migration 016 (which used mixed legacy region labels like northeast/midwest/south) and inserted 7 national rows from the JLC / Remodeling Cost vs. Value Report 2025: bathroom_remodel midrange/upscale, bathroom_addition midrange/upscale, and kitchen_remodel minor/midrange/upscale. Regional rows (new_england, middle_atlantic, east_north_central, west_north_central, south_atlantic, east_south_central, west_south_central, mountain, pacific) are intentionally omitted until a real data pass can enter them directly from the interactive tool at costvsvalue.com. The deep-research pass flagged that both costvsvalue.com and jlconline.com return 403 to programmatic fetches, and no third-party source publishes the full regional breakdown. is_sample = TRUE on all 7 rows because even the national numbers are secondary-source quotes, not direct extracts from the Zonda/JLC dataset.
Source: JLC / Remodeling Cost vs. Value 2025 (secondary source quotes; regional direct-source pending)
Permits12 rows
Replaced sample permit rows with researched starter set for LA, Seattle, Phoenix (12 rows, bathroom + kitchen)
Deleted ~30 legacy per-trade sample rows from migration 016 and inserted 12 researched rows in the new per-scope shape (cosmetic | plumbing_rework | layout_change). Each row is sourced to an official municipal fee schedule: LA LAMC §91.113 + LADBS plumbing/electrical schedules, Seattle SDCI 2026 Fee Subtitle + King County Public Health plumbing, Phoenix PDD Fee Schedule Table A. Where cities use valuation-based formulas (LA, Seattle, Phoenix), fees are computed against $25,000 (bathroom) and $50,000 (kitchen) declared values; is_sample = TRUE flags those rows as worked examples rather than fake data. Coverage is 3 cities by design — the deep-research pass refused to fabricate a 50-city ranking because no official municipal remodel-volume list exists. Future research passes can extend coverage one city at a time against the new schema (migration 022).
Source: deep research synthesis 2026-04 (LAMC, LADBS, Seattle SDCI, King County DPH, Phoenix PDD)
Risk factorsbathroom12 rows
Replaced sample bathroom risk factors with 2-report research synthesis (12 rows)
Deleted ~10 sample bathroom risk factor rows from migration 016 and inserted 12 researched rows grounded in HUD AHS, EPA (lead RRP, asbestos, vermiculite), NFPA, TCNA, Insurance Information Institute, and published contractor cost guides. Probabilities and cost bands synthesized as the midpoint of two independent research reports, preferring the report with better base-rate citations. Factors that depend on engine triggers not yet implemented (second-floor, no-existing-fan, cast-iron age, re-tile-only scope) use always_flag with a down-weighted probability that reflects the pre-weighted average across home types; the engine can split these on richer triggers in a future pass.
Source: deep research synthesis 2026-04 (HUD AHS, EPA, NFPA, TCNA, III, NAHB, JLC, Angi, HomeGuide)
Labor ratesbathroom18 rows
Replaced 18 sample bathroom labor-time rows with 3-report research synthesis
Synthesized base_hours values from 3 independent deep-research reports run against the Prompt 4 scope list in marketing/cost-data-research-prompts.md. 7 rows are direct matches to research item_keys (install_tile_floor, install_tile_wall, install_waterproofing_membrane, install_toilet, install_vanity, install_shower_door_framed, install_shower_door_frameless). 11 rows are derived from bath-level research bundles (demo_bathroom_standard, rough_plumbing_no_move, rough_electrical_standard, paint_bathroom_standard) apportioned across the engine per-component keys. Also zeroed prep_hours on all sqft-unit rows to neutralize a latent engine bug where prep_hours is multiplied by quantity in hoursForItem().
Source: deep research synthesis 2026-04 (Craftsman, RSMeans, ContractorTalk, JLC, Homewyse, Angi, Schluter, YouTube contractor channels)
Price updatebathroom3 rows
Verified 3 frameless shower door rows flagged UNVERIFIED_HD in migration 018
Targeted verification pass for the 3 frameless shower door SKUs whose prices could not be confirmed against live Home Depot product pages during the migration 018 capture (HD returned 403 on direct fetch). Resolved: DreamLine Allure SHDR-4236728-01 raised 649 -> 820 (QualityBath.com); DreamLine Unidoor SHDR-20367210-01 held at 720 (HD direct confirmation); Glass Warehouse Umbra TBWH-36-BN lowered 1190 -> 851 (KB Authority). UNVERIFIED_HD prefix removed from all three source strings.
Source: retail pricing verification 2026-04
Price updatebathroom33 rows
Replaced sample bathroom materials with retail prices (33 rows)
Prices captured April 2026 from Home Depot, Lowe's, Ferguson, Floor & Decor, Tile Shop, Kohler, and Visual Comfort. 30 rows confirmed against live product pages or manufacturer MSRP. 3 frameless shower door rows are prefixed UNVERIFIED_HD in the source field — those were priced from third-party retail aggregators (QualityBath, Houzz) pending a direct HD SKU-page confirmation pass. All rows set is_sample = FALSE.
Source: retail pricing research 2026-04
Labor rates4,122 rows
Replaced sample labor rates with BLS OEWS May 2024 data
Ingested 4,122 labor rate rows from the BLS Occupational Employment and Wage Statistics May 2024 release (all_data_M_2024.xlsx). Covers 12 construction trades (plumber, electrician, tile_setter, gc_project_manager, demo_laborer, painter, drywaller, glazier, hvac_tech, carpenter, roofer, insulation_worker) at state and MSA geographic levels. Wages are hourly median, 25th, and 75th percentiles. Confidence tier derived from MEAN_PRSE. Suppressed wage cells were skipped rather than imputed. This replaces the 40 hand-seeded sample rows from migration 016 with verified government data; is_sample flag is now FALSE.
Seeded 5 MSAs × 8 trades of labor rates, ~40 bathroom materials across 3 tiers, ~20 labor time items, 5 cities of permit data, regional indexes, 8 hidden-cost risk factors, ROI data for 3 project types across 6 regions, and 8 material lead times. All rows flagged is_sample = TRUE. Anchor values pulled from publicly-available 2024 data sources (BLS OEWS, Home Depot/Lowe's retail pricing, NAHB/Craftsman labor standards, HUD housing surveys, JLC Cost vs. Value 2024). Real ingestion pipelines replace this data in subsequent migrations.