Ruimtepaspoort — resourcepaspoort.app
A searchable passport for Amsterdam's public space, built from open BGT source data with explicit data provenance.

Outcome
- ✓A city-scale open-data map from roughly 11 GB of source data, delivered as a 121 MB range-requestable tileset.
- ✓A provenance-first passport that is honest about what is measured, calculated and unknown.
- ✓Weekly data processing remains separate from fast, predictable application deployments.
My role
Sole engineer — data pipeline, vector-tile architecture, map experience and provenance model.
The challenge
Amsterdam's public-space data is available as open BGT data, but the source arrives as roughly 11 GB of CityGML — far too large and complex for an interactive browser map. The product also needed to distinguish what the government actually measured from values that were calculated, estimated or unavailable.
What I built
A searchable MapLibre application where every mapped public-space object opens a passport showing type, surface, size, location and provenance. A separate weekly Python pipeline downloads BGT data, filters historical registrations, converts CityGML to GeoJSONL and builds a range-requestable PMTiles file.
How it works
- The pipeline downloads and converts current BGT registrations, excluding historical records that would otherwise double-count more than half of some object types.
- Geometry is tiled in multiple passes so lower zoom levels contain only drawing attributes, reducing typical session egress from roughly 16 MB to 5.5 MB.
- The Next.js map streams vector tiles from Vercel Blob and opens a plain-language passport for the selected object.
Stack & why+
Ready to make AI actually work?
Products that do real work.
A production, trilingual (NL/EN/DE) site whose live Claude-powered agent lets visitors try the exact kind of AI I build for clients.
FairMenu — fairmenu.app3,740 hospitality venues discoverable across four Dutch regions, with menu-level search, claimable branded pages and webhook-verified Mollie ordering.