Open tools for the Dutch housing crisis. Built by North Solution
Three free, open-source spatial tools that address the visibility and coordination failures at the core of the Netherlands housing shortage. No account required. No paywall. MIT licensed.
| Tool | What it does |
|---|---|
| vacancy. | Maps vacant and underused buildings with a viability filter for housing conversion |
| space. | Identifies underused and buildable land for new housing |
| pipeline | Shows regional construction pipeline activity and capacity bottlenecks |
All tools default to Deventer (our proof-of-concept municipality) and are switchable to any Dutch gemeente.
These tools accompany a research paper by North Solution that is in development.
The thesis: the Dutch housing crisis is primarily a visibility and coordination failure, not a pure scarcity problem. Space exists but is invisible. Vacancy is undercounted. Construction capacity is unconfident. These tools make those failures legible.
Read the full paper at thenorthsolution.com.
Requirements: Node.js ≥ 20, npm ≥ 10
# Clone the repo
git clone https://github.com/thenorthsolution/lumen.git
cd lumen
# Install dependencies
npm install
# Start all tools in development mode
npm run devIndividual tools run on:
- Lumen Vacancy: http://localhost:3001
- Lumen Space: http://localhost:3002
- Lumen Pipeline: http://localhost:3003
lumen/
├── apps/
│ ├── vacancy/ # Next.js 15 + MapLibre GL
│ ├── space/ # Next.js 15 + MapLibre GL
│ └── pipeline/ # Next.js 15 + D3/Chart.js
├── packages/
│ ├── pdok-client/ # Typed PDOK WFS + tile helpers
│ └── bag-utils/ # BAG status codes + viability model
└── pipeline/ # Python + DuckDB data pipeline
Stack:
- Frontend: Next.js 15 (App Router), TypeScript, CSS Modules
- Maps: MapLibre GL JS (WebGL vector tiles, zero licensing cost)
- Geodata: PDOK WFS/WMS (public, no key), CBS Statline, TenderNed
- Shared packages: Turborepo monorepo
- Data pipeline: Python + DuckDB (reproducible, single-command)
- Deployment: Vercel (apps) + Cloudflare (tiles)
All data sources are free and open. The full stack runs without any API keys or paid services.
| Source | Used by | License |
|---|---|---|
| BAG (PDOK) | leegstandsradar, ruimtevinden | CC0 |
| Bestemmingsplan (RO) | ruimtevinden | Open |
| Kadastrale percelen (PDOK) | ruimtevinden | Open |
| TenderNed | bouwcapaciteitcheck | Open |
| CBS Statline | bouwcapaciteitcheck | CC0 |
| Omgevingsloket | bouwcapaciteitcheck | Open |
Contributions are welcome and genuinely needed. The highest-value areas:
Data quality
- Reporting misclassified objects via the in-app flag button
- Expanding the gemeente registry (
packages/pdok-client/src/gemeente.ts) - Improving the viability scoring model (
packages/bag-utils/src/viability.ts)
Code
- Adding WOZ data integration for improved scoring accuracy
- Building the
ruimtevindenandbouwcapaciteitcheckapps - Improving mobile responsiveness
Research
- Validating viability scores against real conversion projects
- Extending methodology to include nitrogen proximity signals
- Adding doorstroming (housing flow) analysis
See CONTRIBUTING.md for guidelines, code standards, and the PR process.
Each tool has a TOOL.md file with:
- Full data source documentation
- Scoring model rationale and limitations
- Known data quality gaps
- How to report errors
The viability scoring model (packages/bag-utils) is intentionally exported as a standalone, unit-tested module so it can be critiqued, forked, and improved independently.
GNU — see LICENSE
Data used: BAG (CC0), CBS (CC0), TenderNed (open), PDOK (open).
Built by North Solution — Deventer, Netherlands