GIS products. Interactive maps and the data pipelines behind them.
how I work
The pipeline and the map are one system, not two. You work directly with the person building both.
From the data to the finished map.
Every project follows the same path. Scope first, data second, and nothing built before both are understood.

01
Scope
What the map needs to do, who uses it, and the data it has to handle. We agree on it before anything is built.
02
Data review
I take a real sample of your data and find out what is actually in it, so the pipeline is sized to the real mess, not the brochure.
03
Build
Pipeline and map built together, in working increments you can open and use. Something real early, refined from there.
04
Handover
Deployment, documentation and a refresh schedule that runs without me. You own the product and the data.
The stack. Picked per project, for the data and the budget.
Maps
- Mapbox GLWhen the product wants Mapbox styles, search and services.
- MapLibre GLThe open-source renderer, with no per-load bill.
Tiles
- MartinDynamic vector tiles served straight from Postgres, for data that changes.
- Cloudflare R2Large tile sets built ahead of time and served as static files.
Data and backend
- Supabase and PostgresThe spatial database, auth and APIs behind the map.
- Cloudflare Workers and D1Edge APIs and lightweight data close to the user.
- DigitalOceanServers for the jobs that need one: tile servers, pipelines, scheduled refreshes.
Work with me
Start the conversation
Tell me what you are trying to see.
Send the data, or just the problem.
Send the data, or just the problem.



