CVFlow
KI-gestütztes Tool zur Erstellung und Optimierung von Lebensläufen und Anschreiben, live als Web-App und iOS-App.
DetailsRundgang durch CVFlow
Job-Link rein, Bewerbung raus
Auf der Startseite fügt man den Link zu einer Stellenanzeige ein. Von dort führt CVFlow Schritt für Schritt zu einem passenden Lebenslauf und Anschreiben, die man prüft, anpasst und als PDF exportiert.
Den Link liest das Backend über eine Kette von Diensten, die günstigste zuerst. Jina Reader liefert öffentliche Seiten kostenlos als Text, Playwright öffnet Seiten, die erst im Browser entstehen, und erst wenn beides scheitert, kommt Bright Data dazu, das nur bei Erfolg abrechnet. Indeed und LinkedIn blockieren einfache Abrufe, ihre Links gehen deshalb direkt an Bright Data.
Ein Ablauf statt Bewerbungschaos
Der Abschnitt stellt den Weg ohne und mit CVFlow gegenüber: statt zwischen Anzeige, Lebenslauf, Anschreiben und Formatierung hin und her zu springen, ein klarer Ablauf vom Job-Link bis zum Export.
Dahinter steht ein Auftrag, der auf dem Server in einem eigenen Thread läuft. Ich habe ihn bewusst von der Anfrage gelöst, damit die Generierung weiterläuft, wenn man die App schließt. Das Kontingent wird erst nach der günstigen Stellenanalyse reserviert; ist keins frei, endet der Lauf dort, und die teuren Schritte laufen gar nicht erst an.
Jede Bewerbung an einem Ort
Alle Bewerbungen stehen in einer Übersicht, mit Status, Interview-Terminen und Kalender-Sync mit Google und Outlook.
Für den Kalender-Sync meldet man sich einmal bei Google oder Microsoft an. CVFlow legt dort einen eigenen Kalender „CVFlow – Bewerbungen“ an und trägt Termine nur dort ein. Bei Google fordert CVFlow nur das Recht an, selbst angelegte Kalender zu bearbeiten, private Termine bleiben damit unsichtbar.
Lebenslauf bearbeiten ohne Formatierungsstress
Texte, Abschnitte und Reihenfolge lassen sich direkt im Dokument ändern, das Layout bleibt dabei sauber.
Die KI liefert keinen fertigen Text, sondern strukturierte Daten: Abschnitte, Einträge, Stichpunkte. Daraus setzt das Frontend den Lebenslauf als HTML auf A4-Seiten, ein unsichtbarer Messbereich bestimmt vorher die Höhe jedes Eintrags und verteilt die Einträge wie in Word auf die Seiten. Für den PDF-Export geht genau dieses HTML samt Schriften an Playwright auf dem Server, deshalb sieht das PDF aus wie die Vorschau.
Abbildungen
Ausgangslage
CVFlow ist ein KI-gestütztes Tool zur Erstellung und Optimierung von Lebensläufen und Anschreiben. Nutzer importieren bestehende Lebensläufe als PDF und erhalten fertige PDF-Dokumente.
Ich habe CVFlow mitgegründet und bin im Zweierteam verantwortlich für Konzeption, Entwicklung, Betrieb und Vermarktung. Die iOS-App habe ich gebaut, Backend und Web-Frontend entwickeln wir zu zweit. Die Infrastruktur läuft containerisiert auf Google Cloud Run, mit automatisiertem Deployment über Cloud Build und Fehler-Monitoring mit Sentry.
- Rolle
- Mitgründer und Full-Stack-Entwickler
- Zeitraum
- seit März 2026
- Team
- Zweierteam
- Stack
- React, React Native, TypeScript, Python, FastAPI, Playwright, Node.js, Claude-API, Stripe, Firebase, Google Cloud Run und Sentry
Technische Entscheidungen
Ein großes Modell schreibt, kleine Modelle prüfen
Die Texte entstehen über die Claude-API, das Backend dahinter ist in Python mit FastAPI geschrieben. Eine Bewerbung durchläuft vier Schritte: Die Stelle wird analysiert und mit dem Profil abgeglichen, dann werden Lebenslauf und Anschreiben geschrieben und zuletzt die Fakten geprüft.
Anfangs lief jeder Schritt über Claude Sonnet. Ich habe das Modell in die Konfiguration der einzelnen Schritte verlegt: Analyse, Abgleich und Prüfung laufen jetzt über das kleinere Haiku, weil sie Daten sortieren statt zu formulieren. Nur das Schreiben bleibt bei Sonnet, dort macht die Sprachqualität den Unterschied. Das Profil geht per Prompt-Caching in jeden Schritt, der es braucht, und wird nicht jedes Mal neu berechnet.
Die Faktenprüfung habe ich zweistufig gebaut. Zuerst sucht Haiku nur nach Aussagen, die das Profil nicht hergibt; erst wenn es im Lebenslauf etwas findet, folgt ein zweiter Aufruf, der korrigiert. Vorher schrieb die Prüfung jedes Mal Lebenslauf und Anschreiben komplett neu, auch wenn alles stimmte.
Ein Backend für Web-App und iOS-App
Das Web-Frontend ist mit React gebaut, die iOS-App mit React Native und TypeScript. Beide sprechen mit demselben FastAPI-Backend, und dort liegt alles, was überall gleich funktionieren muss: die KI-Schritte, Kontingente, Abos und der Kalender-Sync. Eine Änderung am Backend wirkt dadurch sofort in Web und App.
Der Preis dafür ist doppelte Oberflächenlogik, einmal in JavaScript für das Web und einmal in TypeScript für die App. Ändert sich ein Ablauf, ziehen wir ihn in der App von Hand nach.
Ein Abo, zwei Kaufwege
Im Web läuft die Zahlung über Stripe, in der iOS-App über In-App-Käufe, weil Apple für digitale Abos innerhalb einer App den eigenen Kaufweg verlangt. Beide Wege schreiben in dasselbe Abo-Feld beim Nutzer, Stripe über seinen Webhook, Apple über die Server-Benachrichtigungen des App Store. Vor jeder Generierung prüft das Backend nur dieses eine Feld, egal wo gekauft wurde.
Käufe aus der App prüfe ich auf dem Server: Die signierte Transaktion wird mit Apples Zertifikaten verifiziert, und das Ablaufdatum kommt vom Server, nicht aus der App. So kann eine manipulierte App kein Abo vortäuschen.
Nach dem Launch
CVFlow ist live als Web-App und iOS-App. Zur Nutzergewinnung plane und steuere ich Kampagnen über Meta Ads für die Web-App und Apple Ads für App-Store-Downloads der iOS-App. Dazu kommt ein Ratgeber mit zwölf Artikeln, über den CVFlow bei Google gefunden werden soll.
Im Betrieb ging es vor allem um Kosten und Ausfälle. Cloud Run ist auf höchstens drei Instanzen begrenzt, damit ein Fehler oder eine Lastspitze keine unbegrenzte Rechnung erzeugt. Bricht eine Generierung ab, bleiben die fertigen Zwischenstände gespeichert, und ein neuer Versuch macht dort weiter, statt alle KI-Schritte noch einmal zu bezahlen.
