Skip to main content

Changelog

Product changelog

A transparent record of major Housing BuildDesignHub updates, data-source changes, media additions, and launch-readiness work.

About this page

Housing BuildDesignHub is an early-stage MVP. Production pages currently use source-attributed static fixtures unless explicitly stated otherwise. Live Census ACS ingestion exists as a manual operator workflow and is not yet the production data source.

Current platform state

What you can verify on the deployed site today.

  • Supported markets

    16

    All 16 markets populated as of Phase 39 (Austin, Miami, Phoenix, Seattle, Denver, Nashville, Dallas, Tampa, Los Angeles, New York, San Francisco, Chicago, San Diego, Boston, Washington DC, Atlanta). Zero fixture stubs remaining.

    Open →
  • Source adapters

    6

    Census ACS, FHFA HPI, Census BPS, FEMA NRI, BLS LAUS, BEA Regional.

    Open →
  • Fixture metrics

    480

    Source-attributed metrics produced by the ETL pipeline on every build. 16 populated markets × 30 metrics each — full catalog coverage as of Phase 39.

    Open →
  • Static routes

    303

    Prerendered pages — city pages, reports, comparisons (C(16,2)=120 pair pages), tools, transparency pages.

  • Methodology version

    v5.0

    Public formulas, named weights, confidence levels, and fixture vs. live separation.

    Open →
  • Live ACS ingestion

    Manual

    Manual operator workflow exists for U.S. Census ACS. Not yet promoted to production.

    Open →

Recent releases

Phases in reverse-chronological order. Dates are omitted unless the project owner has confirmed them — phase names and status carry the record.

  1. Phase 40
    Shipped

    Surface v5.0 signal-formula limitations

    Documented the known v5.0 signal-formula limitations on /methodology and added an inline disclosure that surfaces next to the supply score on city and investment-score pages where the formula's MSA-numerator / city-denominator mismatch clips the result at 100.

    • Added a new "Known signal-formula limitations" section to /methodology with anchor #known-limitations. Three subsections cover the supply-score MSA/city denominator mismatch, the affordability formula's rent-only treatment, and the FEMA NRI county-level aggregation. None of these are policy changes — they document existing v5.0 behavior in public-facing copy.
    • New SignalLimitationNote component renders a single-line muted disclosure with a link to the methodology subsection. The supply-ceiling variant fires only when supply === 100.
    • Surfaced the disclosure inline beneath the Supply row of MarketSignalsCard on every city page, and next to the Supply badge of InvestmentTopPanel on every investment-score report page. Eight markets currently show the disclosure: Austin, Dallas, Phoenix, Miami, Tampa, Boston, Washington DC, and Atlanta. Eight other markets (Los Angeles, New York, San Francisco, Chicago, San Diego, Denver, Seattle, Nashville) do not.

    Public impact

    Visitors looking at a market with a supply score of 100 see a plain-language note explaining that the score is clipping at the methodology ceiling because BPS permits are MSA-level while ACS housing units are city-level. The note links to /methodology#known-limitations for the full explanation. Methodology version remains v5.0 — the formula was not altered.

    Limitations

    The disclosure only fires when supply === 100. Markets at 92 or 87 (Denver, Seattle, Nashville) are also affected by the same denominator mismatch but do not currently show the inline note. The affordability and climate-risk limitations are documented on /methodology but do not yet have per-page inline disclosures. Future work could either (a) gate the disclosure on a wider threshold (≥ 90) or (b) introduce a per-market "supply-ceiling-affected" flag in the registry instead of inferring from the computed score.

  2. Phase 39
    Shipped

    Populate Atlanta — full 16-market coverage

    Promoted Atlanta from the final Phase 30 fixture stub to a fully-populated source-attributed market. The catalog is now 100% populated: 16 markets, 480 metrics, zero stubs.

    • Replaced the six empty source fixtures for us-ga-atlanta with field-complete shapes matching the existing populated markets.
    • Census ACS uses the Atlanta Census place (FIPS 1304000), which spans Fulton and DeKalb counties. FEMA NRI and BLS LAUS values map to Fulton County (FIPS 13121) as the primary county context — DeKalb is not aggregated. FHFA HPI, Census BPS, and BEA Regional values are MSA-level (Atlanta-Sandy Springs-Alpharetta, CBSA 12060, covering the 29-county Atlanta metro).
    • Added a warning-severity GeographyScope caveat ("Multi-county city context") to disclose the Fulton-only county context and MSA-vs-city scope. Atlanta becomes the second market (after NYC) to surface a warning-level scope notice.
    • ETL now produces 30 metrics and seven computed signal scores for Atlanta. Fixture-metric total grows from 450 to 480 across the catalog. Catalog coverage reaches 100%: 16 full markets, 0 stubs.

    Public impact

    The Atlanta market card on /markets and its city page now render with real signal bars and metric values, and the new "Multi-county city context" warning notice surfaces the Fulton-only FEMA/BLS context. Every comparison pair (e.g. /compare/atlanta-vs-washington, /compare/atlanta-vs-chicago) now shows real values on both sides. Public /markets no longer renders any "Data not yet verified." strings.

    Limitations

    Values remain static source fixtures, not live data. FEMA NRI and BLS LAUS reflect Fulton County aggregate only and do not include DeKalb (where a meaningful share of the City of Atlanta sits). FHFA HPI, Census BPS, and BEA Regional are MSA-level covering the full 29-county Atlanta metro. No property-level climate risk implied. The catalog is now fully populated, but every market continues to retain its 'static fixture, replace before authoritative' disclosure.

  3. Phase 38
    Shipped

    Populate Washington, DC fixture profile

    Promoted Washington, DC from a fixture stub to a fully-populated source-attributed market across all six source adapters, and added the first info-severity GeographyScope notice to disclose its multi-state MSA scope.

    • Replaced the six empty source fixtures for us-dc-washington with field-complete shapes matching the existing populated markets.
    • Census ACS, FEMA NRI, and BLS LAUS all map cleanly to the City of Washington / District of Columbia (FIPS 11001) — the city, district, and county-equivalent are coterminous.
    • FHFA HPI, Census BPS, and BEA Regional values are MSA-level (Washington-Arlington-Alexandria, DC-VA-MD-WV, CBSA 47900) — covering DC, Northern Virginia, suburban Maryland, and the West Virginia eastern panhandle.
    • Added an info-severity GeographyScope caveat for us-dc-washington — the first non-warning use of the GeographyScope component. Renders on the city page, on each report page, and as an optional geographyScope field in the public JSON.
    • ETL now produces 30 metrics and seven computed signal scores for Washington. Fixture-metric total grows from 420 to 450 across the catalog.

    Public impact

    The Washington, DC market card on /markets and its city page now render with real signal bars and metric values. The new info-severity scope notice tells visitors which inputs are city/district-level and which span the four-state metro, without raising a warning-level alarm — DC has no city/county mismatch like NYC.

    Limitations

    Values remain static source fixtures, not live data. FHFA HPI, Census BPS, and BEA Regional are MSA-level covering DC, VA, MD, and WV counties — surfaced as an info-severity scope notice rather than a hard warning. No property-level climate risk implied. One stub market remains (Atlanta).

  4. Phase 37
    Shipped

    Populate Boston fixture profile

    Promoted Boston from a fixture stub to a fully-populated source-attributed market across all six source adapters.

    • Replaced the six empty source fixtures for us-ma-boston with field-complete shapes matching the existing populated markets.
    • Census ACS values cover Boston place (FIPS 2507000). FEMA NRI and BLS LAUS values map to Suffolk County (FIPS 25025) — Boston is the dominant city in Suffolk County (~83% of county population), but the county also includes Chelsea, Revere, and Winthrop.
    • FHFA HPI, Census BPS, and BEA Regional values are MSA-level (Boston-Cambridge-Newton, MA-NH, CBSA 14460) — each fixture note documents the two-state metro scope covering Massachusetts plus southern New Hampshire counties.
    • ETL now produces 30 metrics and seven computed signal scores for Boston. Fixture-metric total grows from 390 to 420 across the catalog.

    Public impact

    The Boston market card on /markets and its city page now render with real signal bars and metric values instead of "Data not yet verified." Comparison pages such as /compare/boston-vs-new-york and /compare/boston-vs-san-francisco show full side-by-side data.

    Limitations

    Values remain static source fixtures, not live data. FEMA NRI and BLS LAUS reflect Suffolk County aggregate. FHFA HPI, Census BPS, and BEA Regional are MSA-level covering Massachusetts and New Hampshire counties — not city-only. No property-level climate risk implied. Boston's supply signal hits the methodology ceiling (100) because the v5.0 formula divides MSA-level permit volume by city-level ACS housing units — a known methodology limitation that also affects Dallas. The two remaining stub markets (Atlanta, Washington) still need their own population pass.

  5. Phase 36
    Shipped

    Populate San Diego fixture profile

    Promoted San Diego from a fixture stub to a fully-populated source-attributed market across all six source adapters.

    • Replaced the six empty source fixtures for us-ca-san-diego with field-complete shapes matching the existing populated markets.
    • Census ACS values cover San Diego place (FIPS 0666000). FEMA NRI and BLS LAUS values map to San Diego County (FIPS 06073) — note that the city of San Diego (~1.39M) is roughly 42% of the county (~3.28M), so county-level labor / hazard values include Chula Vista, Carlsbad, Oceanside, and the rest of the county.
    • FHFA HPI, Census BPS, and BEA Regional values are MSA-level (San Diego-Chula Vista-Carlsbad, CBSA 41740) — each fixture note documents the metro scope.
    • ETL now produces 30 metrics and seven computed signal scores for San Diego. Fixture-metric total grows from 360 to 390 across the catalog.

    Public impact

    The San Diego market card on /markets and its city page now render with real signal bars and metric values instead of "Data not yet verified." Comparison pages such as /compare/los-angeles-vs-san-diego and /compare/san-diego-vs-san-francisco show full side-by-side data.

    Limitations

    Values remain static source fixtures, not live data. FEMA NRI and BLS LAUS reflect San Diego County aggregate, which is materially larger than the City of San Diego (about 2.4× population). FHFA HPI, Census BPS, and BEA Regional are MSA-level (single-county MSA here, but still covers Chula Vista, etc.). No property-level climate risk implied. The three remaining stub markets (Boston, Atlanta, Washington) still need their own population pass.

  6. Phase 35
    Shipped

    Populate Chicago fixture profile

    Promoted Chicago from a fixture stub to a fully-populated source-attributed market across all six source adapters.

    • Replaced the six empty source fixtures for us-il-chicago with field-complete shapes matching the existing populated markets.
    • Census ACS values cover Chicago place (FIPS 1714000). FEMA NRI and BLS LAUS values map to Cook County (FIPS 17031) — note that Cook County (~5.1M people) is larger than the City of Chicago (~2.66M), so county-level labor / hazard values include surrounding suburban Chicagoland.
    • FHFA HPI, Census BPS, and BEA Regional values are MSA-level (Chicago-Naperville-Elgin, IL-IN-WI, CBSA 16980) — each fixture note documents the multi-state metro scope.
    • ETL now produces 30 metrics and seven computed signal scores for Chicago. Fixture-metric total grows from 330 to 360 across the catalog.

    Public impact

    The Chicago market card on /markets and its city page now render with real signal bars and metric values instead of "Data not yet verified." Comparison pages such as /compare/chicago-vs-new-york and /compare/chicago-vs-los-angeles show full side-by-side data.

    Limitations

    Values remain static source fixtures, not live data. FEMA NRI and BLS LAUS reflect Cook County aggregate, which is materially larger than the City of Chicago (about 1.9× population). FHFA HPI, Census BPS, and BEA Regional are MSA-level covering Illinois, Indiana, and Wisconsin counties — not city-only. No property-level climate risk implied. The four remaining stub markets (San Diego, Boston, Atlanta, Washington) still need their own population pass.

  7. Phase 34
    Shipped

    Populate San Francisco fixture profile

    Promoted San Francisco from a fixture stub to a fully-populated source-attributed market across all six source adapters. City and County of San Francisco are coterminous, so no mixed-boundary scope notice was required.

    • Replaced the six empty source fixtures for us-ca-san-francisco with field-complete shapes matching the existing populated markets.
    • Census ACS values cover San Francisco place (FIPS 0667000, coterminous with the county). FEMA NRI and BLS LAUS values map cleanly to San Francisco County (FIPS 06075) without aggregation, unlike New York's multi-borough mix.
    • FHFA HPI, Census BPS, and BEA Regional values are MSA-level (San Francisco-Oakland-Berkeley, CA, CBSA 41860) — each fixture note documents the multi-county Bay Area metro scope.
    • ETL now produces 30 metrics and seven computed signal scores for San Francisco. Fixture-metric total grows from 300 to 330 across the catalog.

    Public impact

    The San Francisco market card on /markets and its city page now render with real signal bars and metric values instead of "Data not yet verified." Comparison pages such as /compare/los-angeles-vs-san-francisco and /compare/new-york-vs-san-francisco show full side-by-side data.

    Limitations

    Values remain static source fixtures, not live data. FHFA HPI, Census BPS, and BEA Regional are MSA-level (cover five Bay Area counties), not city-only; each fixture note documents this. FEMA NRI is the county-level release — no property-level risk inferred. The v5.0 affordability formula uses rent-to-income only (not home-value-to-income), so SF's affordability score reflects ACS rent (which includes rent-controlled stock) and may read higher than market intuition for a city with extreme home prices. The five remaining stub markets (San Diego, Boston, Chicago, Atlanta, Washington) still need their own population pass.

  8. Phase 33
    Shipped

    Surface mixed geography scope caveats

    Markets whose source fixtures span multiple geographic boundaries now display an explicit "Mixed geography scope" notice on the city page, on report pages, and in the public JSON.

    • Added an optional GeographyScope caveat to the market registry. New York is the only currently-affected market — its profile combines a Census place (all five boroughs), New York County / Manhattan (FEMA NRI + BLS LAUS), and the multi-state New York-Newark-Jersey City MSA (FHFA HPI, Census BPS, BEA Regional).
    • New GeographyScopeNotice server component renders the caveat near the top of /markets/us/<state>/<city> and on each /markets/us/<state>/<city>/<report> page when a scope is present. Markets without a scope (every other supported market) render no notice — the common case.
    • Public JSON profile (/api/markets/<id>) carries an additive optional geographyScope object under the same schemaVersion "1" contract. Documented in /api-docs and in the JSON Schema endpoint.
    • Methodology page now describes "Mixed-boundary markets" and how the notice surfaces.

    Public impact

    Visitors viewing New York city or NY report pages immediately see a clear, accessible disclosure that FEMA / BLS values reflect Manhattan only and FHFA / BPS / BEA values reflect a multi-state MSA. API consumers get the same disclosure through an optional geographyScope field.

    Limitations

    The notice exists today only for New York. If future markets are added with mixed boundaries (e.g. Washington DC blended with arlington/alexandria, or multi-county metro aggregations), each must define its own geographyScope entry in the registry. The notice does not modify fixture values or scores — it only surfaces the geography mix.

  9. Phase 32
    Shipped

    Populate New York fixture profile

    Promoted New York from a fixture stub to a fully-populated source-attributed market across all six source adapters, with explicit caveats about NYC's multi-borough geography.

    • Replaced the six empty source fixtures for us-ny-new-york with field-complete shapes matching the existing populated markets.
    • FEMA NRI and BLS LAUS values are mapped to New York County / Manhattan (FIPS 36061) and explicitly do not aggregate all five boroughs — both fixture notes call this out.
    • FHFA HPI, Census BPS, and BEA Regional values are MSA-level (New York-Newark-Jersey City, NY-NJ-PA, CBSA 35620) and cover the multi-state metro area, not just the city of New York — each note flags the MSA scope.
    • Census ACS values cover the full New York city Census place (FIPS 3651000, all five boroughs).
    • ETL now produces 30 metrics and seven computed signal scores for New York. Fixture-metric total grows from 270 to 300 across the catalog.

    Public impact

    The New York market card on /markets and its city page now render with real signal bars and metric values instead of "Data not yet verified." Comparison pages such as /compare/los-angeles-vs-new-york show full side-by-side data.

    Limitations

    Values remain static source fixtures, not live data. NYC has three distinct geography levels mixed in one profile (Census place for ACS, county for FEMA/BLS, MSA for FHFA/BPS/BEA) — the city/county/MSA boundary mismatch is intentional but flagged on every fixture. FEMA NRI and BLS LAUS reflect Manhattan only; New York City labor force, employment, hazard exposure, and social-vulnerability values for the full five-borough city are not represented by these county-level numbers. The five remaining stub markets (San Diego, San Francisco, Boston, Chicago, Atlanta, Washington) still need their own population pass.

  10. Phase 31
    Shipped

    Populate Los Angeles fixture profile

    Promoted Los Angeles from a fixture stub to a fully-populated source-attributed market across all six source adapters.

    • Replaced the six empty source fixtures for us-ca-los-angeles with field-complete shapes matching the existing populated markets: Census ACS 5-Year city values, FHFA HPI quarterly series for the LA-Long Beach-Anaheim MSA, Census BPS monthly permit series, FEMA NRI county-level risk values for Los Angeles County (FIPS 06037), BLS LAUS county labor data, and BEA Regional MSA economic accounts.
    • ETL now produces 30 metrics and seven computed signal scores (affordability, supply, priceMomentum, jobMarket, economicStrength, climateRisk, overall) for Los Angeles.
    • Fixture metric total grows from 240 to 270 across the catalog; per-market coverage for LA goes from 0% to 100%.
    • Export contract baseline regenerated to reflect Los Angeles' new metric count.

    Public impact

    The Los Angeles market card on /markets and its city page now render with real signal bars and metric values instead of "Data not yet verified." /compare/austin-vs-los-angeles and similar comparison pages show full side-by-side data.

    Limitations

    Values remain static source fixtures, not live data. Every Los Angeles fixture explicitly states it must be replaced with a live API pull or scheduled ETL output before any individual value is treated as authoritative. FEMA NRI is mapped at the county level, which is a known limitation for a city as geographically diverse as Los Angeles. The other seven Phase 30 markets (San Diego, San Francisco, New York, Boston, Chicago, Atlanta, Washington) remain as fixture stubs.

  11. Phase 30
    Partial

    Eight new U.S. markets registered as fixture stubs

    Doubled the supported-market catalog from 8 to 16 by registering eight major U.S. cities and shipping source-attribution-wrapped fixture stubs for each.

    • Added Geography registry entries for Los Angeles, San Diego, San Francisco, New York, Boston, Chicago, Atlanta, and Washington DC — each with verified state FIPS, county FIPS, Census place code, OMB CBSA code, and centroid coordinates.
    • Created 48 fixture files (6 adapters × 8 cities) carrying the full source attribution wrapper but empty values / series / monthly arrays.
    • /compare/[slug] prerender count grew from 28 to 120 pair pages; static page total grew from 134 to 303.
    • BEA, BLS LAUS, and FEMA NRI adapters now skip a metric when its source value is non-numeric, mirroring the existing Census ACS pattern — methodology unchanged.

    Public impact

    All 16 markets now surface in MarketExplorer and in comparison and city URLs. Stub markets currently render their ScoreBars as "Data not yet verified."

    Limitations

    Seven of the eight new markets ship as fixture stubs in this phase — values are populated city-by-city in follow-up phases (Phase 31 populated Los Angeles). Stub cards visibly state "Data not yet verified." until populated.

  12. Phase 13
    Shipped

    Homepage narrative and conversion UX

    Tightened the homepage so a first-time visitor understands the product, its data state, and where to start within seconds.

    • Rewrote hero headline to "Source-attributed housing data and repair planning" (removed investment-advice tone).
    • Added a "Where to start" section linking the six main working surfaces.
    • Added a "Transparency first" section linking data status, methodology, data sources, and privacy.
    • Hero source-list now lists all six wired adapters including BEA Regional.

    Public impact

    The homepage now leads with what the product actually is and surfaces the transparency pages directly.

  13. Phase 12E
    Shipped

    Verified investment and economic context visuals

    Added two verified building-exterior photos for the investment-score report context.

    • Herbert C. Hoover Building (U.S. Department of Commerce HQ — parent of BEA and Census). Public domain.
    • Federal Reserve Bank branch building, Salt Lake City. CC BY-SA 2.0.
    • Both render via the existing report context visual component with the caption "Regional economy context. This visual is not investment advice."

    Public impact

    Investment-score reports now include a verified civic-economy photo alongside the existing in-house permits-pipeline diagram.

    Limitations

    Multiple Fed bank exteriors were rejected (people-focused, thumbnails, miscategorized buildings). Documented in MEDIA_SOURCES.

  14. Phase 12D
    Shipped

    Verified report-context visuals

    Added verified third-party visuals for housing-market, affordability, and climate-risk report contexts.

    • Two housing-market photos (Columbus multi-family, Georgia Tech pedestrian walkway).
    • One affordability photo (L'Enfant Plaza federal civic district, HABS Public domain).
    • One climate-risk visual (1959 U.S. Weather Bureau hurricane warning office areas map, Public domain).
    • Captions explicitly disclaim property-level / household-level / investment use.

    Public impact

    Report pages feel less abstract while staying doctrine-compliant.

    Limitations

    Several rejected candidates documented (interior shots, undersized thumbnails, disaster-adjacent imagery).

  15. Phase 12C
    Partial

    Verified video embed infrastructure

    Confirmed the existing VideoEmbed component meets the doctrine spec; added two report-context usage types.

    • Existing VideoEmbed already enforces lazy iframe, no autoplay, descriptive title, visible attribution, target=_blank rel=noopener.
    • Added "investment-score" and "affordability" to VideoUsageContext so future videos can target those report pages.
    • Verification protocol (YouTube oEmbed + channel-handle check) documented for the next operator pass.

    Public impact

    No public surface changed.

    Limitations

    No new video embeds added — YouTube channel browsing hit a consent gate in the current environment, so candidate URL discovery is deferred until operator-supplied IDs are available.

  16. Phase 12B
    Shipped

    Verified Wikimedia photo expansion

    Added nine verified secondary photos via the existing Commons API verifier.

    • Eight city secondary photos: Austin Capitol, Pike Place, Denver mile-high marker, Dallas City Hall, Miami Biscayne Bay, Phoenix streetscape, Nashville Riverfront Park, Tampa Curtis Hixon Park.
    • One civic photo: Library of Congress Jefferson Building (CC0, by LoC's own photographer).
    • Render in a new "Local visual context" card on every city page.

    Public impact

    Every city page now carries a second verified photo with full attribution.

    Limitations

    Eleven candidates rejected on content grounds (interior shots, mismatched archival items, disaster-adjacent). Documented in MEDIA_SOURCES.

  17. Phase 12
    Shipped

    In-house diagrams for methodology and data-status

    Added four project-authored SVG diagrams to deepen methodology and data-status pages.

    • Federal data agencies hub-and-spoke map.
    • Affordability stack diagram.
    • Housing supply funnel.
    • Data freshness pipeline.

    Public impact

    Methodology and data-status pages render explanatory diagrams instead of pure text.

  18. Phase 11
    Shipped

    Privacy and analytics disclosure

    Added a public /privacy page that conservatively discloses the WebmasterID analytics integration.

    • Public /privacy route in the footer Transparency group.
    • Page explicitly marks cookieless / anonymous / GDPR-compliant status as "data not yet verified" pending an audit.
    • No new analytics vendor added. No cookie banner introduced.

    Public impact

    Visitors have a single page that names the tracker, the ingest endpoint, and what has not yet been verified.

    Limitations

    Runtime cookie / localStorage / sessionStorage behavior of the tracker has not been independently inspected; pending operator audit.

  19. Phase 10
    Partial

    Live Census ACS ingestion path

    Added a manual, opt-in Census ACS live-ingestion client and script — not wired into production.

    • src/lib/sources/census/live/ client, types, config, and normalization bridge.
    • scripts/fetch-census-acs-live.ts manual fetch script with dry-run, key-check, and fetch modes.
    • Reviewed Census place FIPS for all eight supported markets.
    • Outputs land in a gitignored snapshot directory; promotion is a deliberate hand-reviewed step.

    Public impact

    No change to deployed pages — production still reads fixtures. Phase 10 is operator infrastructure only.

    Limitations

    Live snapshots are not loaded by the deployed app. Promotion into the fixture set is manual and explicit.

  20. Phase 8
    Shipped

    BEA Regional economic adapter

    Added the sixth source adapter — Bureau of Economic Analysis regional metrics.

    • BEA Regional adapter wired into the canonical ETL pipeline alongside Census ACS, FHFA HPI, Census BPS, FEMA NRI, and BLS LAUS.
    • Source-attributed fixture data shipped for all eight markets.
    • Methodology documentation updated to reflect the additional inputs.

    Public impact

    City reports now include a regional-economy signal sourced from BEA fixtures.

  21. Phase 4B
    Shipped

    BLS job market adapter

    Added BLS LAUS (Local Area Unemployment Statistics) as the project's job-market source.

    • BLS LAUS adapter, fixture data, and integration with the investment-score signal.
    • Twelve-month unemployment trend feeds the job-market score component.

    Public impact

    Investment-score reports show labor-market context from a named federal source.

  22. Phase 4A
    Shipped

    FEMA climate risk adapter

    Added FEMA National Risk Index as the climate-risk source.

    • FEMA NRI county-level fixture data wired into the climate-risk report.
    • Risk classification + expected annual loss + social vulnerability + community resilience surfaced on city pages.

    Public impact

    Climate-risk reports use a named federal hazard dataset.

    Limitations

    Risk is mapped at the city's primary county — explicitly county-level context, not property-level risk.

  23. Phase 3
    Shipped

    ETL-ready multi-city pipeline

    Generalized the original Austin-only foundation into a multi-city ETL pipeline.

    • Canonical SourceSnapshot / NormalizedMarketProfile types under src/lib/etl/types.ts.
    • ETL run / validate / report scripts (npm run etl:validate, npm run etl:report).
    • Eight-market coverage with per-source freshness and coverage reporting.

    Public impact

    Every supported market shares the same ETL contract — adding a market is adding fixtures plus a manifest entry.

Planned and pending

What we plan to work on next, without timeline promises.

  • Live ACS snapshot promotion

    Once a verified live ACS snapshot exists, promote it to a reviewed fixture candidate (separate from production until explicitly approved).

  • Verified video embeds

    Add 4–8 verified official agency video embeds once operator-supplied candidate IDs become available.

  • More verified visuals

    Expand verified third-party photo coverage for civic, planning, and climate-resilience contexts via the existing verifier workflow.

  • Privacy runtime audit

    Independent browser audit of WebmasterID cookies, localStorage, and outbound calls — update /privacy with verified findings.

  • Live ingestion for the remaining sources

    FHFA HPI, Census BPS, BLS LAUS, BEA Regional, FEMA NRI live-ingestion paths beyond the existing Census ACS workflow.

  • Mobile hero refinement

    Audit and refine the homepage hero + dashboard preview on small viewports.

Transparency surfaces

Verify the claims above directly.