No One Home
Open housing evidence, built with the London Renters Union: fragmented official data reconciled into 296 comparable councils and a Lewisham map you can actually investigate.
- Period
- 2026
- Role
- Researcher and developer
- Scale
- England and Lewisham
- Context
- Civic, Research, Product
- I1Official housing tables
- I2Administrative geographies
- O1Maps + accessible tables
- O2Workbook + method
Researcher and developer
- A 296-local-authority interactive choropleth with six switchable measures; the derived national long-term-empty total of 303,185 matched Action on Empty Homes' independently published 303,143 to within 0.01%.
- Lewisham's enforcement gap quantified from open data: 469 of 1,070 long-term empties (43.8%) carry no Empty Homes Premium, against a national gap of 150,257 (49.6%).
- A Lewisham building-level map of 96,123 Overture footprints delivered as 25 MB PMTiles vector tiles, plus a seven-sheet Excel deliverable and companion CSV built to the LRU brief.
- A full public methodology, a UK GDPR legitimate-interests assessment, three FOI templates, and a pipeline parametric on a single config that reruns for any of the 296 districts.
The building layer supports investigation; it does not assert that every mapped footprint is an empty home. The per-property composite vacancy score is a documented, source-cited plan, not yet run: it awaits FOI aggregates and walking-survey ground truth before any individual building can be called empty.
England holds hundreds of thousands of long-term empty homes while renters wait in temporary accommodation, yet the official evidence is scattered across incompatible council-tax tables, census releases and administrative geographies, so no organiser can see the pattern at a glance or carry it into a rent tribunal or a council meeting. The London Renters Union needed a defensible, reproducible database of Lewisham's long-term empty homes, broken down by tenure and built only from public data, so it could survive scrutiny and support pressure for rehousing and Compulsory Purchase Orders.
My contribution
I built a ten-stage, idempotent Python pipeline that ingests MHCLG Live Table 615, Council Taxbase 2025, ONS boundaries and Nomis Census 2021, joins them in DuckDB on local-authority and UPRN keys, and renders the whole thing as a static, backend-free site. The national view is a MapLibre GL choropleth of 296 English local authorities with six switchable measures; the Lewisham layer turns 96,123 Overture building footprints into vector tiles via tippecanoe to PMTiles, served over HTTP byte ranges, atop LSOA census density. Alongside the maps I wrote the methodology, a UK GDPR legitimate-interests assessment, three FOI templates and a seven-sheet Excel deliverable, and cross-checked the national figure against Action on Empty Homes to within 0.01%. The pipeline is parametric on a single config, so the same code scales from Lewisham to any English district with one line.
Decisions and constraints
Decisions I made
- Separate the public national comparison from any building-level investigation: publish everything aggregated to local authority and LSOA, keep property-level work internal to LRU under a documented legitimate-interests assessment, so the project enables council action rather than becoming a doxxing tool.
- Triangulate rather than trust one source: mirror ONS's own six-signal method for classifying a vacant dwelling, because council-tax records alone undercount empties by around 72%, and make every indicator cite its provenance.
- Ship a defensible borough-and-national scaffold first from already-published statistics, and hold the per-building composite vacancy score as a documented, source-cited but un-run plan gated on FOI aggregates and walking-survey ground truth, rather than assert classifications the data cannot yet support.
- Build backend-free and reproducible: DuckDB, PMTiles and a tiny range-supporting server so the whole evidence package is static-hostable and any figure can be rebuilt from source with one make command.
Operating constraint
No single official dataset answers the question: definitions and geographies do not line up, the Empty Homes Premium misses roughly 72% of empties nationally, and property-level data is either FOI-refused on squatting grounds or GDPR-gated. Everything had to be triangulated from open sources and stay defensible in public.
Claim boundary: The building layer supports investigation; it does not assert that every mapped footprint is an empty home. The per-property composite vacancy score is a documented, source-cited plan, not yet run: it awaits FOI aggregates and walking-survey ground truth before any individual building can be called empty.
Evidence
- A 296-local-authority interactive choropleth with six switchable measures; the derived national long-term-empty total of 303,185 matched Action on Empty Homes' independently published 303,143 to within 0.01%.
- Lewisham's enforcement gap quantified from open data: 469 of 1,070 long-term empties (43.8%) carry no Empty Homes Premium, against a national gap of 150,257 (49.6%).
- A Lewisham building-level map of 96,123 Overture footprints delivered as 25 MB PMTiles vector tiles, plus a seven-sheet Excel deliverable and companion CSV built to the LRU brief.
- A full public methodology, a UK GDPR legitimate-interests assessment, three FOI templates, and a pipeline parametric on a single config that reruns for any of the 296 districts.