Die wöchentliche Routine, die still Stunden frisst
Die manuelle Rechnungsverarbeitung aus E-Mails ist unsichtbare Arbeit. Sie fühlt sich nicht wie ein Problem an, weil jede einzelne Aktion nur Minuten dauert. Aber multipliziere diese Minuten mit jedem Lieferanten, jeder Woche, jedem Monat, und die Zahlen summieren sich schnell.
Das konkrete Problem hier: fünf Lieferanten senden Rechnungen in völlig unterschiedlichen Formaten. Verschiedene Dateibenennungskonventionen. Verschiedene Feldpositionen. Unterschiedliche PDF-Strukturen, einige textbasiert, andere gescannte Bilder. Keine zwei Dokumente sehen gleich aus. Ein Mensch lernt intuitiv mit dieser Varianz umzugehen. Eine naive Automatisierung bricht beim ersten Sonderfall zusammen.
Das Zielresultat war klar: Rechnungen kommen per E-Mail an, werden ohne jegliche menschliche Beteiligung verarbeitet, landen im richtigen Google Drive-Ordner mit einheitlichem Dateinamen, werden in einer Datenbank protokolliert, und für jeden erfolgreichen Durchlauf gibt es eine Telegram-Benachrichtigung.
Die zentrale Designentscheidung: KI zur Normalisierung, nicht zur Extraktion
Gemini 2.5 Flash ist nicht die Quelle der Wahrheit, die PDF ist es. Ein deterministischer Basis-Parser läuft zuerst (Regex, Schlüsselwort-Trigger, Feldextraktion). Gemini verifiziert und normalisiert darüber. Wenn die KI-API nicht verfügbar ist, liefert der Fallback trotzdem verwertbare Ausgabe. Das LLM behandelt Varianz, der Parser behandelt Fakten.
Wie die Pipeline funktioniert
↓
Deduplizierung (Nachrichten-ID + Hash) → pdf-parse → Rohtext → Basis-Regex-Parser
↓
Gemini 2.5 Flash: Verifizierung + Normalisierung → Google Drive Upload
↓
Supabase Protokoll → Telegram Benachrichtigung
Läuft nach Zeitplan, stündlich oder täglich je nach Rechnungsvolumen. Kein Server nötig. Das Free Tier deckt jedes normale Geschäftsvolumen problemlos ab.
Verbindet sich mit dem Postfach, findet ungesehene Nachrichten, extrahiert nur PDF-Anhänge. Nachrichten-IDs werden sofort für die Deduplizierung erfasst.
Anhangsebene: Nachrichten-ID + Datei-Hash. Geschäftsebene: Lieferantenname + Rechnungsnummer. Deckt weitergeleitete E-Mails, Cron-Neustarts und doppelte PDFs in einer Nachricht ab.
pdf-parse extrahiert Rohtext. Ein deterministischer Parser führt Regex und Schlüsselwort-Trigger aus, um strukturierte Felder zu extrahieren: Lieferant, Rechnungsnummer, Datum, Gesamtbetrag, MwSt-Betrag.
Die KI verifiziert die Basis-Ausgabe, normalisiert Datumsformate, füllt Lücken, die Regex nicht konnte, und behandelt lieferantenspezifische Formatierungsbesonderheiten. Läuft nur auf Feldern, die der Basis-Parser nicht zuverlässig extrahieren konnte.
PDF wird in den richtigen Lieferanten-Unterordner mit einheitlichem Dateinamen hochgeladen: JJJJ-MM-TT_Lieferant_Rechnungsnummer.pdf. Ordnerstruktur spiegelt das bestehende Buchhaltungssystem des Kunden wider.
Jeder Anhang erhält einen processing_log-Eintrag, egal ob erfolgreich, dedupliziert, Parsing-Fehler oder API-Fehler. Nichts geht still verloren. Telegram sendet nach jedem Durchlauf eine Zusammenfassung.
Warum nicht einfach Gemini für alles nutzen?
Reine KI-Extraktion ist für Finanzdokumente unzuverlässig. Das Modell kann Beträge halluzinieren, Währungssymbole falsch lesen und über Durchläufe inkonsistente Datumsformate produzieren.
Der Basis-Parser behandelt, was Regex perfekt kann: Lieferantennamen an bekannten Positionen, Rechnungsnummern mit bekannten Mustern, Gesamtbeträge in erwarteten Feldern. Er ist schnell, deterministisch und kostet nichts.
Gemini behandelt, was Regex nicht kann: Variationen in Feldpositionen über Lieferantenformate hinweg, nicht-standardisierte Datumsstrings, Sonderfälle wo die PDF-Struktur vom Muster abweicht. Es sieht nur die Felder, die der Basis-Parser nicht zuverlässig extrahieren konnte.
Das Ergebnis: deterministische Genauigkeit wo möglich, KI-Flexibilität wo nötig, und die Pipeline funktioniert auch wenn die API ausfällt.
Zwei Ebenen, nichts wird doppelt verarbeitet
Rechnungen kommen auf unvorhersehbare Weise an: weitergeleitet von einem Kollegen, dieselbe PDF an zwei Follow-up-E-Mails angehängt, der Cron-Job startet mitten im Durchlauf neu. Ohne ordentliche Deduplizierung verursacht jedes dieser Szenarien Doppelverarbeitung.
Nichts geht still verloren, vollständige Nachvollziehbarkeit
Jeder Anhang erhält einen Eintrag in Supabase, unabhängig vom Ergebnis: ob erfolgreich verarbeitet, dedupliziert, Parsing fehlgeschlagen oder API-Fehler. Der Eintrag enthält: Anhang-Dateiname, Nachrichten-ID, Verarbeitungsstatus, extrahierte Felder, Drive-Datei-ID falls hochgeladen, Fehlermeldung falls fehlgeschlagen, und Zeitstempel.
Der Kunde kann jederzeit nachverfolgen, was mit einer bestimmten Rechnung passiert ist. "Wo ist die Siemens-Rechnung vom 12. März?" — die Antwort ist eine SQL-Abfrage entfernt.
Die Telegram-Benachrichtigung sendet nach jeder Cron-Ausführung eine Zusammenfassung: wie viele E-Mails geprüft, wie viele Anhänge gefunden, wie viele verarbeitet, wie viele als Duplikat übersprungen, eventuelle Fehler. GoBD-konform: vollständige Protokollierung ohne stille Fehler.
Häufige Fragen zur Rechnungsautomatisierung
Verwendete Technologien
Ich baue Automatisierungspipelines, die wiederkehrende manuelle Arbeit eliminieren: Rechnungsverarbeitung, Dokumentenklassifikation, Datenextraktion aus E-Mails. Funktioniert mit jedem Dokumentformat: PDFs, Word-Dateien, gescannte Bilder. Standort München, Projekte in ganz Europa.