Mind the Gap
67,000 residents live in Metro Vancouver's transit blind spots. Kaegan built the map that finds them, and shipped it solo in a few days.
The setup
Kaegan studied Human Geography at UBC intending to become a city planner, and transit never stopped being the thing he thinks about on walks. So when he wanted to test how far a PM can get building alone with AI tools, the subject picked itself: where does Metro Vancouver's transit actually fail the people who live there?
What PMs used to tell, through lengthy PRDs, hacky wireframes, and lots and lots of meetings, they can now often show, using prototypes, examples, and sometimes by actually shipping.
Mind the Gap is one small example of that. A real product, built solo, in a few days.
How the score works
Two public datasets: TransLink's GTFS feed for stop locations and trip frequencies, and Statistics Canada's 2021 Census for population. For each area, it counts the total daily transit trips within a 600-meter walking distance of its centre and divides by the resident population to get trips per capita. That per-capita figure is percentile-ranked against all areas above a density floor, and the gap score is the squared inverse of that percentile. Fewer trips per resident, higher gap.
The result is a choropleth of every neighbourhood, a ranked explorer of the 25 most critical gaps, and a report card for wherever you click: letter grade, population density, and the nearest stops with walking distances. The scored dataset is downloadable as GeoJSON under CC BY 4.0.
Who did what
I did all the product thinking: came up with the concept, chose the data sources, defined how the gap score should work, made the design decisions, and wrote most of the copy. Claude Code handled the implementation, with me creating and reviewing each PR. A bit like being a PM on a one person team.
That split is the experiment this project exists to run. The specs, the scoring method, and every product call were his; the implementation was reviewed PR by PR, the way he'd work with any engineer.
Honest limits
It's directional, not definitive. The GTFS feed captures scheduled service, not real-time reliability, and the census data is from 2021 so new developments won't show up. Some edges are rough: a zone near a SkyTrain station might still score high if bus feeder routes are sparse. And because the score is a percentile rank, it's relative by construction. It flags the worst-served areas in this region, not an absolute standard of adequate service. This is a starting point for conversation, not a planning tool.
The stack
A React 19 single-page app built with Vite, Tailwind CSS, and Leaflet for the interactive map. Geospatial calculations use Turf.js, and the boundary data is compressed with TopoJSON so the whole region loads fast. A small Node pipeline joins the GTFS feed to the census and pre-computes every score; there is no backend and no database, just static data and a map.
The map, the methodology, and the code are all public. Click your own neighbourhood and see its grade.