hi.
It's a bit strange, standing here.
I don't consider myself a developer.
Matze Schmidbauer
mtc.berlin
I GET INSPIRED obsessed
Open data
Music
Cooking
Keeping plants alive
My dog Iggy
Politics
My job
Climate change
Being my dad's IT hotline
…and more.
New interest?
Hours of research.
Notes. Wikis.
Knowledge bases. For everything.
And sometimes,
obsession becomes a project.
2006
Kontempora
an online print gallery for young photographers. Before Instagram existed.
2019
D'IGGY
a high-efficiency tick repellent. Named after the dog.
2025
Stimmungsschau
party sentiment analysis of German TV news.
2026
mmcp
a multi-tenant memory engine for AI agents. Total tenants: one.
I'm really good at having ideas.
Honestly? Not so good at running them.
but for now: Berlin's open data.
We all love data.
Berlin publishes all of it.
So this should be easy.
Where do you find…
1fresh-air corridors?
2election results?
3tram stops?
daten.berlin.de
Klick 1
Berlin's official open data portal. This should be easy.
daten.berlin.de→"Frischluftkorridor" (0)
Klick 2
Zero results. OK. Wrong word, maybe?
daten.berlin.de→"Frischluftkorridor" (0)→"Kaltluft" (0)
Klick 3
The technical term. Also zero.
daten.berlin.de→"Frischluftkorridor" (0)→"Kaltluft" (0)→"Klima" (37)
Klick 4
37 results! …all of them planning documents.
daten.berlin.de→"Frischluftkorridor" (0)→"Kaltluft" (0)→"Klima" (37)→"Umweltatlas Klimaanalyse" (6)
Klick 5
Six results! You just had to know the magic words.
daten.berlin.de→"Frischluftkorridor" (0)→"Kaltluft" (0)→"Klima" (37)→"Umweltatlas Klimaanalyse" (6)→Klimaanalysekarten [WFS]
Klick 6
The dataset page. The actual link hides further down.
daten.berlin.de→"Frischluftkorridor" (0)→"Kaltluft" (0)→"Klima" (37)→"Umweltatlas Klimaanalyse" (6)→Klimaanalysekarten [WFS]→WFS 2022
Klick 7
Not the data. XML that DESCRIBES the data.
daten.berlin.de→"Frischluftkorridor" (0)→"Kaltluft" (0)→"Klima" (37)→"Umweltatlas Klimaanalyse" (6)→Klimaanalysekarten [WFS]→WFS 2022→GetFeature
Klick 8
The data! 16,217 polygons of fresh air. In GML.
the geoportal, last week
this week No blame. But this is
what fragile looks like.
"Wahlergebnisse Bundestagswahl" (0)
Klick 1
The portal again: zero results for election results.
"Wahlergebnisse Bundestagswahl" (0)→wahlen-berlin.de
Klick 2
The election office. It sends you elsewhere.
"Wahlergebnisse Bundestagswahl" (0)→wahlen-berlin.de→statistik…/bundestagswahlen
Klick 3
Excel files. For humans. Behind hash-URLs. Plus a cookie banner.
bundeswahlleiterin.de /dam/jcr/ e79a7bd3-0607-4e87-9752-8e601e299e00 /btw25_wbz.zip
"Wahlergebnisse Bundestagswahl" (0)→wahlen-berlin.de→statistik…/bundestagswahlen→bundeswahlleiterin.de
Klick 4
Berlin does not even host its own election data.
"Tram" (1)
Klick 1
One result: a map IMAGE. No data.
"Tram" (1)→"Haltestellen" (VBB)
Klick 2
A ZIP from 2021. From VBB. Not Berlin's. Dead end.
The city has nothing.
The community does.
openstreetmap.org
Klick 3
Every tram stop. Mapped by volunteers.
openstreetmap.org→overpass-turbo.eu
Klick 4
You just need to learn a query language. Obviously.
openstreetmap.org→overpass-turbo.eu→API → JSON
Klick 5
And there they are. All 960 of them.
Remember the quiz?
Now you know why nobody could answer.
You know me by now.
I got obsessed.
I needed to collect, to clean, to aggregate, to map. And to make it fast.
So I did what any of you would have done…
I bought another domain for a side project I never knew I'd start:
NAVIGATOR.BERLIN
One address. Every layer.
Noise.
Felt heat.
Green supply.
Land values.
Housing quality.
Tenant protection.
Cold-air corridors.
Density.
S-Bahn.
Tram.
Bike network.
Every bus stop.
Stolpersteine.
Drinking fountains.
Every grocery store.
Every daycare.
Monuments.
Cool places.
Polling districts.
The Kiez-Score.
…and 45 more.
Nobody wants to browse 65 layers.
So I aggregated.
The Kiez-Score
Quiet & Air 29
Green & Heat 10
Mobility 74
Supply 63
Housing protection 100
How? Step one:
Every raw value becomes 0 to 100.
noise: low → 100 · kita next door → 100 · kita 1,000 m away → 0
Step two: layers → one dimension.
U-Bahn 113 m → 89 × 0.35 S-Bahn 586 m → 41 × 0.25 Tram 338 m → 66 × 0.20 Bus 41 m → 96 × 0.10 Bike network yes → 100 × 0.10
Step three: five dimensions, equal weight.
Quiet & Air 29 2
layers
Green & Heat 10 6
layers
Mobility 74 5
layers
Supply 63 9
layers
Protection 100 1
layer
(29 + 10 + 74 + 63 + 100) / 5
Every layer documented.
The score sees the city
Noise first. The score joins in.
navigator.berlin/explore?layers=laerm-2023 ↗ Noise · laerm-2023
navigator.berlin/explore?layers=laerm-2023
Two datasets.
+ Kiez-Score · Quiet & Air
navigator.berlin/explore?layers=laerm-2023,kiez-score-ruhe-luft
Legend swap · score leads
navigator.berlin/explore?layers=laerm-2023,kiez-score-ruhe-luft&lead=kiez-score-ruhe-luft
Two datasets, one truth.
Where the city protects housing
Housing quality first. Protection joins in.
navigator.berlin/explore?layers=wohnlagen-2024 ↗ Housing quality · wohnlagen-2024
navigator.berlin/explore?layers=wohnlagen-2024
+ Milieuschutz · social & urban
navigator.berlin/explore?layers=wohnlagen-2024,milieuschutz-erhaltungsmiete,milieuschutz-staedtebau
+ Kiez-Score · Protection
navigator.berlin/explore?layers=wohnlagen-2024,milieuschutz-erhaltungsmiete,milieuschutz-staedtebau,kiez-score-wohnschutz
The map renters actually need.
Mobility & supply
Groceries first. Transit joins in.
navigator.berlin/explore?layers=nahversorgung-lebensmittel ↗ Groceries · nahversorgung
navigator.berlin/explore?layers=nahversorgung-lebensmittel
+ Bus stops
navigator.berlin/explore?layers=nahversorgung-lebensmittel,bus-haltestellen
+ Tram network
navigator.berlin/explore?layers=nahversorgung-lebensmittel,bus-haltestellen,tram-netz
There is a Späti around the corner.
Talking about cold beer
from the Späti…
Remember this summer's
40°C dog days?
Berlin's official heat portal.
“noch recht lückenhaft”
taz on the official cool-places map, June 2026
“Wollt Ihr uns verarschen?”
Berliner Kurier, testing the same map, August 2025
I thought: I can do better.
hitze.navigator.berlin
In August, the taz went counting around Gendarmenmarkt.
40
hitze.navigator.berlin
“Zuflucht vor dem Hitzeschlag”
taz, August 2026 · via hitze.navigator.berlin
*.navigator.berlin
hitze was only the first.
Remember?
I don't consider myself a developer.
I didn't code this.
So I just typed
“build me a city atlas”?
Not quite.
Some call this “vibe coding”.
And my agent? Rubs it in:
claude
✦ Vibing…
(esc to interrupt)
There are no vibes
in a spec.
Agents at work? Hendrik showed you.
My part: the spec.
Idea
the method has a name
BMAD
Breakthrough Method for Agile AI-Driven Development
open source · agents with roles · artifacts all the way down
my twist: every change reviewed by a different model
Slow. Expensive.
Worth it.
tokens and hours in, better software out
Right. This is a Svelte meetup.
Some tech, then.
The stack
SvelteKit · MapLibre · Tailwind · Drizzle · PMTiles
Data · 1/2
65 layers.
Zero runtime calls to Berlin.
Data · 2/2
One layer was too big.
What did Svelte actually buy me?
Why Svelte · 1/3
Nine sliders.
One setPaintProperty.
Why Svelte · 2/3
One typed server function.
Humans and machines call it.
Why Svelte · 3/3
155 Kiez profiles.
Rendered at build time.
And these slides?
Svelte too.
built with Animotion · by Joy of Code
One more bet:
the next users won't be human.
navigator speaks WebMCP.
11 tools, right in your browser.
An emerging standard. Already live.
One more thing.
What if you could tell the map
what you want?
how the Kiez-Finder works
You say how you want to live.
Quiet? Green? Shops close by? A tram? Neighbours who vote like you?
Kiez-Finder
Let's find out. Live.
navigator.berlin/explore?finder=1 ↗ Quiet & air ↑ · Supply ↑
navigator.berlin/explore?finder=1&fw=2,0,0,2,0,0,0,0,0
One more dimension: how people vote.
+ Voting similarity · GRÜNE
navigator.berlin/explore?finder=1&fw=2,0,0,2,0,0,0,0,2&fp=GRÜNE
Flip · CDU
navigator.berlin/explore?finder=1&fw=2,0,0,2,0,0,0,0,2&fp=CDU
Now imagine matching this
with actual listings.
(if there were any flats to list)
“Not so good at running them”?
This one's different.
What's next
Census rents · story 4 becomes a gentrification story
clubs.navigator.berlin · hopefully with the Berlin Clubcommission
kaelte.navigator.berlin · the next sub-portal is already waiting
English version · the i18n plumbing is already in
Thank you.
Svelte Society Berlin · Datawrapper