Vienna Living MapKarte Architektur
Wie es funktioniert

Eine ruhige App,
eine Daten-Fabrik dahinter.

Vorne fühlt sich VLM an wie eine Suche und eine Karte. Dahinter arbeitet eine Kette aus Engines, gespeist von Fabriken, Cron-Jobs und Prüfungen — die KI erfindet nichts, gerankt wird deterministisch, jeder Baustein hat einen ehrlichen Fallback.

Tipp auf einen Baustein springt zu seiner Tiefe. Durchgezogen = der Weg der Antwort, das Fundament speist die Engines von unten.

Vorne · was du bedienst
🔎

Suche — ein Feld, kein Modus

Eine universelle Suche erkennt selbst, ob du eine Adresse, einen Wohnwunsch, ein Ranking, ein Budget, Ähnlichkeit oder Nähe meinst. Du wählst nie einen Modus.

AdresseWunsch/LifestyleRanking BudgetÄhnlichkeitNähe
↩︎Fallback: unklarer Text wird als Wunsch behandelt; ist das Feld leer, erscheinen Beispiele statt einer Fehlermeldung.
🗺

Karte — eigene Infrastruktur, kein Google

MapLibre GL mit selbst gebauten Vektor-Tiles (PMTiles, Wien-Extract) auf Cloudflare R2 und einem eigenen warm-stone-Stil in Hell und Dunkel — kein Google Maps, keine fremden Kacheln.

Tiles

PMTiles auf R2

Kein externer Kartendienst, keine fremden Tracker in der Karte.

Ebenen

13 Daten-Layer

Score-Choropleth, Bäume, Sommerhitze, Öffis, Cafés, Radwege … lazy geladen, GPU-gerendert.

Licht

3D-Vignette

Reale Gebäudehöhen + Bäume + Gelände; die Sonne wandert, Schatten wandern mit.

↩︎Fallback: fällt die GL-Karte aus, schaltet VLM automatisch auf die klassische Leaflet-Karte zurück und merkt sich das.
🧭

Entscheiden — Vergleich, PDF, Tagebuch

Vergleich

Wer gewinnt wo

Bis zu vier Orte gegenübergestellt — Unterschiede statt Zahlenwüste.

PDF-Engine

Digitales Exposé

Ein A4-Exposé, das erst nach dem Font-Laden vermessen und auf die Seite skaliert wird — warm, kein UI-Screenshot.

Tagebuch

Local-first

Favoriten, „besichtigt / passt nicht", Notizen — alles nur am Gerät, ohne Konto.

Die Engines · das Gehirn
🗣

KI — nur Übersetzer, nie Entscheider

Gemini läuft ausschließlich serverseitig und übersetzt in zwei Richtungen: Wünsche → Gewichtungen, Fakten → Prosa. Es rankt nie und erfindet nie einen Score.

Kostendeckel

Schema + Cache

Erzwungenes JSON-Schema, kleine Token-Caps und ein Cache je ~100 m-Zelle halten jeden Aufruf winzig.

Ton-Gate

Banned-Words

Ein Build-Gate verwirft Floskeln („pulsiert", „im Herzen Wiens") und lässt neu generieren.

Privacy

Nur gerundete Koordinaten

Die genaue Adresse verlässt den Server-Kontext nie — nur Grätzl-Name + gerundete Koordinaten gehen an KI/Bild.

↩︎Fallback: ist die KI nicht erreichbar, erscheint sofort der deterministische Text — die App bleibt voll nutzbar.
⚖️

Score-Engine — die Quelle der Wahrheit

Deterministisch und per Golden-Tests eingefroren: sechs Dimensionen — Öffis, Grün, Sicherheit, Ruhe, Preis-Leistung und Urbanität — in sechs Perspektiven. Dieselbe Formel für Adresse, Grätzl und Bezirk.

6 Dimensionen

Sicherheit · Öffis · Grünflächen · Ruhe · Preis-Leistung · Urbanität — für Adresse, Grätzl und Bezirk mit derselben Formel.

6 Perspektiven

Für die meisten · Familie · Urban · Homeoffice · Preis-Leistung · Genuss & Kultur. Perspektive gewichtet nur, sie erfindet nichts.

🔒Sicherung: kein Zufall, keine KI — bei gleicher Eingabe immer dasselbe Ergebnis, in App, PDF und Vergleich identisch. Jede Änderung braucht zuerst einen Golden-Test.
🧬

Atmosphären-Fingerabdruck — Persönlichkeit statt Kategorie

Jeder Ort bekommt ein Profil aus acht Achsen, zusammengesetzt aus neun echten Sinnen — wie Audio-Features bei Musik, nur für Orte.

🌇 Urban🏛 Kultur🌳 Grün 🍷 Wein & Hügel🌊 Wasser🤫 Ruhe 🚋 Rhythmus🛍 Markt
↩︎Er speist Moodboard, Essenz, Bewegung, Jahreszeiten und „Ähnliche Orte" — nie den Score selbst, denn Persönlichkeit ist kein Werturteil.
☀️

Licht-Engine — Sonne, Schatten, 3D

Für eine echte Adresse rechnet VLM den Sonnenstand (SunCalc), den Verschattungs-Horizont der umliegenden Gebäude und die Bauklasse aus der Flächenwidmung — sichtbar in einer 3D-Vignette mit Terrain und echten Katasterbäumen.

↩︎Privacy & Ehrlichkeit: die Gebäude-Abfrage läuft im Browser — die genaue Adresse verlässt dafür nie den Server. Fehlen Höhendaten, sagt VLM ehrlich „grobe Schätzung", statt eine Zahl zu erfinden.
📖

Story-Engine & Magazin — „wie lebt es sich dort"

Aus Fakten wird Sprache wie von einer ortskundigen Wiener Freundin — persona-bewusst, mit Pflicht-Trade-off, nie erfunden. Dazu die Magazin-Engine: pro Grätzl ein langer Wohn-Report im Monocle-Ton, gegen ein Anti-Schablonen-Gate geprüft.

Precompute

Grätzl × Perspektive

Alles Endliche wird einmal erzeugt und als stories.json gespeichert — konsistent in PDF & Vergleich, ohne Laufzeitkosten.

On-demand

Adress-Story

Beliebige Adressen bekommen ihre Prosa live (dann gecacht); der deterministische Text erscheint zuerst.

Fundament · Daten, Cron & Prüfung
🏭

Daten-Fabrik — Precompute statt Runtime

Rund 15 Build-Skripte + monatliche Cron-Jobs (GitHub Actions) ziehen Stadt Wien OGD, OpenStreetMap/Overpass, Wiener Linien, GeoSphere und Statistik Austria und legen alles als statische, versionierte Dateien ab — schnell, gratis, überall gleich.

Monatlich

Data-Factory-Cron

History-Snapshots (insert-only), Preise, Wohnstatistik, Klima, dann Regeneration von SEO-Seiten, Wissens-Index & Pressekit-Zahlen.

Wöchentlich

Bild-Selbstheilung

Ein Audit prüft die Moodboards und generiert fehlerhafte neu (Montag früh).

Pro Deploy

Prerender + Prüfung

Alle Seiten neu gerendert, Golden-Tests, ein Live-Smoke-Test.

🛡Sicherung: jeder Job hat ein Plausibilitäts-Gate und schreibt insert-only — eine schlechte API-Antwort kann Live-Daten nie überschreiben.
🌤

Klima & Wetter — die Atmosphäre färbt sich

GeoSphere (Station Hohe Warte, Monats-Cron) liefert Wiens Klima-Zeitreihe samt Erwärmungs-Trend; das Live-Wetter färbt Himmel, Landing und Moodboard-Glaze. Dazu ein modellierter Sommerhitze-Index.

↩︎Ehrlich: der Hitze-Index ist als „modelliert aus Bebauung & Grün — kein gemessener °C-Wert" ausgewiesen und gegen die Klimaanalysekarte der Stadt geprüft.
🖼

Bild-Pipeline — echtes Foto, kein Fantasie-Wien

Ein echtes, frei lizenziertes Referenzfoto der Gegend wird nur im Stil übertragen (die Geometrie bleibt), von einer Vision-QA geprüft und einmal global zwischengespeichert.

↩︎Fallback: fehlt ein Foto oder scheitert die QA, zeigt VLM eine ehrliche Farbkomposition aus dem Fingerabdruck — nie ein erfundenes Wien.
🌐

SEO- & Prerender-Fabrik — auffindbar & zitierfähig

Beim Build entstehen hunderte statische Seiten in Deutsch und Englisch, dazu eigene OG-Vorschaubilder (mit selbst geschriebenem Font-Parser), ein Wissens-Index (places.json), JSON-LD und die Sitemap.

↩︎Alles vorgerendert: Suchmaschinen und KI-Antworten sehen echten Inhalt, nicht ein leeres JavaScript-Gerüst.

Performance & Offline

Ein Service Worker macht VLM zur installierbaren PWA; Code-Splitting sowie Edge- und KV-Caching („einmal generiert, global gecacht") lassen Wiederbesuche fast sofort laden — teils sogar offline.

🔒Ehrlich: der Cache umfasst nur öffentliche, unpersönliche Dateien am Gerät — nie Suchanfragen, nie persönliche Daten.
🔒

Datenschutz — local-first, ohne Konto

Kein Cookie-Banner, weil es keine Tracking-Cookies gibt. Kein Konto. Favoriten, Tagebuch und Verlauf bleiben nur auf deinem Gerät. Die Statistiken sind anonym und k-anonymisiert (Gruppen ab 5).

🍪 kein Cookie-Banner (weil cookieless) 📍 Adresse bleibt am Gerät 📊 Aggregate mit k-Anonymität ≥ 5 👤 kein Konto, kein Tracking-Profil

Qualität & Fallbacks — überall

Ehrlichkeit ist keine Haltung, sondern Infrastruktur: Golden-Tests und ein Banned-Words-Gate vor jedem Merge, ein Live-Smoke-Test nach jedem Deploy. Jeder Baustein hat einen ehrlichen Rückfall.

Vor dem Merge

Golden-Tests

Scoring & Fingerprint sind eingefroren; ein Banned-Words-Gate hält den Ton ehrlich.

Nach jedem Deploy

Live-Smoke-Test

Ein Runner prüft die echte Seite: SEO-Seiten, Magazin-Prosa, Übersetzungen, Story-Voice.

Immer

Ehrliche Rückfälle

KI weg → Template. Foto weg → Gradient. Sinn fehlt → benannt, nie gefälscht.