Von der Fotografie zur KI
Sieben Monate eine statische Seite, dann eine Datenbank, ein Storage-Adapter und eine Pipeline
Fotografie-KI·Experte·7 Min. Lesezeit · 9. Juli 2026
Das Foto
Es gibt ein Foto in dieser Galerie, das mit "street" getaggt ist — eines von denen, mit denen die Suchpipeline später einen Ranking-Fehler nachweisen sollte. Im November 2025, als ich die Fotografie-Seite hinzufügte, existierte dieser Tag noch nicht. Nichts existierte. Die Seite war eine Komponente mit einem Titel und ein, zwei statischen Bildern, erreichbar über die Header-Navigation, und das war das gesamte Feature.
Das Problem
Technisch war nichts falsch daran. Sie rendete. Sie war ein Abschnitt wie jeder andere auf der Seite. Das Problem war, dass sie sich zu nichts anderem entwickeln konnte. Es gab keine Datenbankzeile hinter einem Foto, keine Möglichkeit, Metadaten hinzuzufügen, keine Möglichkeit, ihr eine Frage zu stellen. Wenn ich meine eigenen Fotos danach durchsuchen wollte, was tatsächlich darauf zu sehen ist, hatte diese Seite keinen Weg dorthin — sie war nicht halb fertig in Richtung dieses Ziels, sie war einfach nicht darauf ausgerichtet.
Sieben Monate lang war das in Ordnung. Im Februar 2026 habe ich Photography.tsx zusammen mit About, Work, Education und Skills in eine gemeinsame Section-Komponente refaktoriert — eine UI-Konsolidierung, keine Fähigkeitsänderung. Die Fotografie-Seite bekam eine schönere Hülle und sonst nichts.
Die Untersuchung
Was sich änderte, war kein Plan, "ein KI-Foto-Feature" zu bauen. Es war, dass der Rest der Plattform eine schwierigere Version dieser Frage bereits zweimal beantwortet hatte — Anschreiben und CVs brauchten deterministische Evidenzbewertung, bevor Claude überhaupt etwas schrieb; Ask Vikram brauchte eine Retrieval-Schicht, bevor es eine Frage zu einer Engineering-Entscheidung beantworten konnte. Beide Systeme begannen bei einer Datenbanktabelle und einer Query-Schicht, nicht bei einer Seite.
Fotografie hatte das nicht. Ein Foto lebte nirgendwo außer in einem Dateinamen und dem, was ich mir gemerkt hatte. Man konnte nicht einmal fragen "zeig mir die mit street getaggten", weil "getaggt" noch kein Konzept war, das existierte. Die Lücke war nicht KI — sie war strukturell, und es war dieselbe Lücke, die jedes andere Teilsystem dieser Plattform schon geschlossen hatte, bevor es ein Modell anfasste.
Die Entscheidung
Ich hätte einen Caption-Generator an die bestehende statische Komponente anflanschen können — Claude ein Foto geben, rendern was zurückkommt, an einem Nachmittag ausliefern. Habe ich nicht, aus demselben Grund, warum die Anschreiben-Pipeline Claude nicht entscheiden lässt, was wahr ist: eine Caption ohne Ort, an dem sie persistiert wird, ohne Schema, ohne Query-Schicht, ist eine Demo, kein Feature. Sie hätte fertig ausgesehen und wäre in dem Moment nicht erweiterbar gewesen, in dem ich Tags, Suche oder eine zweite Sprache wollte.
Also war am 23.06.2026 der tatsächlich erste Commit dieses Systems gar kein KI-Aufruf — es war ein Datenmodell: eine photo-Tabelle, ein Firebase-Storage-Adapter, der denselben getFirebaseAccessToken()-Helper wiederverwendete, den der Rest der Plattform schon hatte, und ein Query-Modul. Admin-Upload mit sharp (Bildverarbeitung) und EXIF-Extraktion kamen zwei Tage später. Von KI-Anreicherung existierte noch nichts. Das Fundament musste langweilig und korrekt sein, bevor irgendetwas darauf interessant sein durfte.
Die Architektur
Statische Photography.tsx (Nov 2025 – Jun 2026)
↓
photo / photo_exif / photo_tag Tabellen (23.06.2026)
↓
Firebase-Storage-Adapter (GCS REST, wiederverwendetes getFirebaseAccessToken())
↓
Admin-Upload — sharp (Resize/Thumbnail/EXIF-Strip) + EXIF-Extraktion
↓
status = "draft" → bereit für KI-Anreicherung (nächstes Kapitel)
Jedes spätere Kapitel dieser Serie — Claude Vision, Embeddings, Hybrid-Suche, der grundierte Assistent — steht auf dieser einen Entscheidung: Fotos sind Datenbankzeilen mit einem Lebenszyklus, keine Dateien mit Bildunterschriften.
Was ich gelernt habe
Ich hatte nicht erwartet, dass die Lücke zwischen "statischer Seite" und "KI-bereitem System" fast vollständig aus Nicht-KI-Arbeit besteht. Im Rückblick auf die Commit-Historie: Der erste KI-Aufruf in diesem gesamten Feature passiert erst drei Tage nach dem ersten Commit. Ich hätte das Verhältnis eher als ausgeglichen geschätzt; es war nicht annähernd so.
Was ich anders machen würde: Die siebenmonatige Lücke war kein Fehler, aber mir ist erst beim Schreiben dieses Rückblicks aufgefallen, dass das Muster — erst deterministisches Fundament, dann Modell — keine fotografiespezifische Erkenntnis war. Es war zu dem Zeitpunkt, als ich hier ankam, bereits die Regel der Plattform. Ich habe es neu hergeleitet, statt es am ersten Tag einfach anzuwenden.
Der Blick nach vorn
Mit status = "draft" und einem echten Foto in Firebase Storage war das nächste Problem nicht die Suche — es war viel enger gefasst: Was bedeutet es, ein Modell auf ein einzelnes Foto schauen und es beschreiben zu lassen, wenn das Foto selbst der einzige Input im ganzen System ist, den ich nicht vollständig kontrolliere?