A data story about housing in Madrid, told from two federated Portolan catalogs queried in place with DuckDB — no downloads, no server, every figure re-runnable with its provenance. Built in the spirit of the OGC Connect Helsinki demo (federate real publishers; keep the publisher + query on every number).
Thesis: demand-driven prices are back above the 2007 peak while new supply runs at a quarter of its
mid-2000s rate — and within the city the rent burden concentrates in the centre. See FINDINGS.md.
- Comunidad de Madrid —
https://storage.googleapis.com/carto-portolan-madrid/comunidad-madrid— regional housing market (prices, permits, rents, stock). - City of Madrid —
https://storage.googleapis.com/carto-portolan-madrid/madrid-city— within-city geometry & layers.
python3 tools/analyze.py # federated DuckDB queries over both catalogs → data/*.json + data/*.geojson
python3 tools/fetch_vut.py # city zoom: licensed tourist dwellings (VUT) by districtEvery query is in QUERIES.md; every output JSON carries a _provenance block.
Analysis phase complete (deepened) — 9 figures validated in data/: affordability map, the squeeze
(price vs permits), affordability ratio (×income), city rent by postal code, rent index by district,
supply mix, and the VUT tourist-flat city zoom. Presentation (scrollytelling page vs full Helsinki-style
federation webapp) is the next step — see FINDINGS.md for the open items.
FINDINGS.md the story + headline numbers + provenance + honesty notes
QUERIES.md every figure's DuckDB query
tools/analyze.py federated analysis → data/
data/*.json|geojson figure-ready outputs (git-tracked; small)