{
  "slug": "rechnungs-strecke",
  "category": "workflow",
  "name": "Die Rechnungs-Strecke",
  "domaene": "Daten, Analytics & Finanzen",
  "typTags": [
    "automatisierend",
    "prüfend",
    "datenbezogen"
  ],
  "teaser": "Ein Workflow, der eingehende PDF-Rechnungen automatisch ausliest, gegen die passende Bestellung abgleicht und bei Übereinstimmung direkt bucht, während Abweichungen sichtbar zur manuellen Prüfung markiert werden.",
  "hat": {
    "schritte": true,
    "beispiel_szenario": false,
    "ausgabebeispiel": false,
    "konfiguration": false,
    "betrieb": true,
    "arbeitsprompts": true,
    "einrichtung": true,
    "umsetzung": false,
    "export": true,
    "staerken": false,
    "ki_funktionen": false,
    "einschraenkungen": false,
    "weniger_geeignet_fuer": false
  },
  "sections": [
    {
      "id": "beschreibung",
      "title": "Beschreibung",
      "html": "<p>Eingangsrechnungen sind in vielen KMU ein stiller Zeitfresser: PDFs im Postfach, manuelles Abtippen der Positionen, Abgleich mit der Bestellung per Auge und am Ende Wochen bis zur Buchung. Die Rechnungs-Strecke nimmt genau diesen Ablauf ab. Sie liest jede eingehende Rechnung aus, gleicht sie strukturiert gegen Bestelldaten und Wareneingang im ERP ab und stößt bei Übereinstimmung die Buchung im Buchhaltungssystem an.</p>\n<p>Automatisiert wird die Extraktion der Rechnungsdaten in ein sauberes JSON-Format sowie der Abgleich gegen Lieferant, Betrag, Leistung und Bestellnummer innerhalb einer definierten Toleranz. Bewusst nicht automatisiert bleibt die Entscheidung bei Abweichungen: Passt etwas nicht ins Toleranzfenster, geht der Fall mit allen Details an das Finance-Team statt automatisch durchgebucht zu werden. Jeder Schritt, von der Extraktion bis zur Buchungsentscheidung, wird zusätzlich in einem Audit-Log festgehalten, damit die Strecke nachvollziehbar bleibt statt eine Blackbox zu sein.</p>\n<p>Ergebnis ist kein vollständig autonomer Buchhaltungsagent, sondern eine Vorsortierung mit klarer Grenze: Routine-Rechnungen laufen durch, alles Auffällige landet beim Menschen. Das verkürzt die Durchlaufzeit spürbar und schafft nebenbei Spielraum, um Skonto-Fristen tatsächlich zu nutzen.</p>\n<ul>\n<li><strong>Kürzere Durchlaufzeit:</strong> Rechnungen sind in Minuten verarbeitet, statt tagelang im Posteingang liegen zu bleiben.</li>\n<li><strong>Weniger Fehler:</strong> Der automatische Abgleich zwischen Rechnung, Bestellung und Wareneingang verringert Tippfehler und Übersehenes.</li>\n<li><strong>Finance entlastet:</strong> Routine-Rechnungen werden automatisch gebucht, nur Abweichungen landen zur Prüfung beim Finance-Team.</li>\n<li><strong>Skonto genutzt:</strong> Die kurze Durchlaufzeit schafft Spielraum, um Skonto-Fristen tatsächlich einzuhalten.</li>\n</ul>\n"
    },
    {
      "id": "builder-prompt",
      "title": "Builder-Prompt",
      "html": "<p>Kopieren Sie den Prompt unten in Ihr Automations-Tool oder Ihren Agent-Builder. Als Datei: <a href=\"/ai-library/rechnungs-strecke.de.json\">rechnungs-strecke.de.json</a></p>\n"
    }
  ],
  "schritte": [
    {
      "nr": 1,
      "titel": "Trigger",
      "beschreibung": "Der Ablauf startet, sobald eine neue E-Mail mit einer PDF-Rechnung im Rechnungs-Postfach eingeht.",
      "rolle": "mensch"
    },
    {
      "nr": 2,
      "titel": "Daten extrahieren",
      "beschreibung": "Ein Sprachmodell liest die Rechnung aus und gibt Rechnungsnummer, Lieferant, Beträge, Fälligkeitsdatum, IBAN und Bestellnummer als strukturiertes JSON zurück.",
      "rolle": "automatisch"
    },
    {
      "nr": 3,
      "titel": "Abgleich gegen Bestellung",
      "beschreibung": "Die extrahierten Daten werden gegen die Bestelldaten im ERP geprüft: Lieferant, Betrag innerhalb der definierten Toleranz, Leistungsbeschreibung und Bestellnummer.",
      "rolle": "automatisch"
    },
    {
      "nr": 4,
      "titel": "Match-Entscheidung",
      "beschreibung": "Der Ablauf bewertet, ob alle Kriterien im Toleranzrahmen liegen, und leitet daraus die weitere Route ab.",
      "rolle": "automatisch"
    },
    {
      "nr": 5,
      "titel": "Automatisch buchen",
      "beschreibung": "Bei einem Match wird die Rechnung im Buchhaltungssystem mit passender Kostenstelle und passendem Konto gebucht.",
      "rolle": "ergebnis"
    },
    {
      "nr": 6,
      "titel": "Eskalation",
      "beschreibung": "Bei einer Abweichung geht ein Ticket oder eine Nachricht mit allen Details an das Finance-Team zur manuellen Prüfung.",
      "rolle": "mensch"
    },
    {
      "nr": 7,
      "titel": "Audit-Log",
      "beschreibung": "Eingangs-E-Mail, extrahiertes JSON, Abgleichsergebnis und finaler Status werden protokolliert.",
      "rolle": "ergebnis"
    }
  ],
  "herausgeber": "Voyage Digital",
  "version": "2.0",
  "stand": "2026-07-26",
  "nutzen": [
    {
      "titel": "Kürzere Durchlaufzeit",
      "text": "Rechnungen sind in Minuten verarbeitet, statt tagelang im Posteingang liegen zu bleiben."
    },
    {
      "titel": "Weniger Fehler",
      "text": "Der automatische Abgleich zwischen Rechnung, Bestellung und Wareneingang verringert Tippfehler und Übersehenes."
    },
    {
      "titel": "Finance entlastet",
      "text": "Routine-Rechnungen werden automatisch gebucht, nur Abweichungen landen zur Prüfung beim Finance-Team."
    },
    {
      "titel": "Skonto genutzt",
      "text": "Die kurze Durchlaufzeit schafft Spielraum, um Skonto-Fristen tatsächlich einzuhalten."
    }
  ],
  "voraussetzungen": [
    {
      "label": "Rechnungs-Postfach",
      "text": "Eine dedizierte Adresse für eingehende PDFs, zum Beispiel rechnungen@firma.de.",
      "icon": "mail"
    },
    {
      "label": "ERP- oder Bestellsystem",
      "text": "SAP, Dynamics oder Odoo liefert die Bestelldaten und Wareneingänge.",
      "icon": "inventory"
    },
    {
      "label": "Buchhaltungssystem",
      "text": "DATEV, Lexoffice oder ein vergleichbares System bucht die freigegebenen Rechnungen.",
      "icon": "account_balance"
    },
    {
      "label": "LLM-Zugang und Team-Chat",
      "text": "Zugang zu OpenAI, Claude oder Gemini für Extraktion und Abgleich, plus Slack oder Teams für Eskalationen.",
      "icon": "key"
    }
  ],
  "betrieb": {
    "testing": [
      {
        "label": "Test-Rechnungen",
        "text": "Prüfen Sie eine echte Rechnung mit passender Bestellung und eine zweite mit abweichendem Betrag.",
        "icon": "receipt_long"
      },
      {
        "label": "Extraktion",
        "text": "Kontrollieren Sie, ob Rechnungsnummer, Lieferant, Beträge, IBAN und Bestellnummer korrekt im JSON stehen.",
        "icon": "document_scanner"
      },
      {
        "label": "Abgleich und Buchung",
        "text": "Prüfen Sie, ob die Toleranz greift und die korrekte Rechnung tatsächlich gebucht wird.",
        "icon": "rule"
      },
      {
        "label": "Grenzfälle",
        "text": "Testen Sie schlechte Scans, fehlende Bestellnummern, Fremdwährung und doppelt eingereichte Rechnungen.",
        "icon": "warning"
      }
    ],
    "goLive": [
      {
        "label": "Freigeben",
        "text": "Aktivieren Sie den Workflow erst, wenn Extraktion, Toleranz und Buchung zuverlässig stimmen.",
        "icon": "check_circle"
      },
      {
        "label": "Pilot",
        "text": "Starten Sie mit einem einzelnen Top-Lieferanten und rollen Sie danach schrittweise aus.",
        "icon": "store"
      },
      {
        "label": "Mapping und Toleranz",
        "text": "Justieren Sie das Konten- beziehungsweise Kostenstellen-Mapping und den Toleranzwert iterativ nach.",
        "icon": "tune"
      },
      {
        "label": "Ausbauen",
        "text": "Ergänzen Sie im nächsten Schritt eine Duplikatsprüfung, einen gestuften Freigabe-Workflow ab einem Schwellwert und ein Reporting.",
        "icon": "rocket_launch"
      }
    ],
    "haeufigeFehler": [
      {
        "label": "OCR-Qualität schlecht",
        "text": "Schalten Sie ein stärkeres Modell vor oder erzwingen Sie eine höhere Mindestauflösung der Scans.",
        "icon": "broken_image"
      },
      {
        "label": "Toleranzwert zu eng oder zu weit",
        "text": "Kalibrieren Sie den Wert anhand echter Rechnungen aus der Vergangenheit.",
        "icon": "straighten"
      },
      {
        "label": "Bestellnummer fehlt",
        "text": "Nutzen Sie das Fallback-Matching über Lieferant, Betrag und Datum.",
        "icon": "link_off"
      },
      {
        "label": "Doppelbuchung",
        "text": "Prüfen Sie Rechnungsnummer und Lieferant gemeinsam als eindeutigen Schlüssel.",
        "icon": "content_copy"
      }
    ]
  },
  "arbeitsprompts": [
    {
      "titel": "Rechnungsdaten-Extraktion",
      "beschreibung": "Liest die eingehende Rechnung aus und gibt alle relevanten Felder als strukturiertes JSON zurück.",
      "prompt": "Sie sind ein Experte für Rechnungsanalyse. Analysieren Sie die folgende Rechnung und extrahieren Sie alle relevanten Daten in einem strukturierten JSON-Format. Wenn eine Angabe aus dem Rechnungstext nicht eindeutig hervorgeht, kennzeichnen Sie das als Annahme statt sie als gesichert darzustellen.\n\nRECHNUNG:\n[RECHNUNGS_TEXT]\n\nExtrahieren Sie folgende Informationen:\n- Rechnungsnummer\n- Lieferant/Rechnungssteller (Name und Adresse)\n- Rechnungsdatum\n- Fälligkeitsdatum\n- Nettobetrag\n- Mehrwertsteuersatz und -betrag\n- Bruttobetrag (Gesamtsumme)\n- Leistungsbeschreibung/Positionen\n- Bestellnummer (falls vorhanden)\n- IBAN/Bankverbindung\n\nAUSGABEFORMAT (JSON):\n{\n  \"rechnungsnummer\": \"...\",\n  \"lieferant\": {\"name\": \"...\", \"adresse\": \"...\"},\n  \"rechnungsdatum\": \"YYYY-MM-DD\",\n  \"faelligkeitsdatum\": \"YYYY-MM-DD\",\n  \"nettobetrag\": 0.00,\n  \"mwst_satz\": 0.00,\n  \"mwst_betrag\": 0.00,\n  \"bruttobetrag\": 0.00,\n  \"leistungen\": [\"Position 1\", \"Position 2\"],\n  \"bestellnummer\": \"...\",\n  \"iban\": \"...\"\n}\n\nWenn Informationen nicht vorhanden sind, setzen Sie den Wert auf null. Achten Sie auf korrekte Zahlenformate mit Punkt als Dezimaltrennzeichen."
    },
    {
      "titel": "Abweichungsanalyse",
      "beschreibung": "Vergleicht die extrahierten Rechnungsdaten mit den Bestelldaten und gibt eine strukturierte Empfehlung zurück.",
      "prompt": "Sie sind ein Experte für Rechnungsprüfung. Vergleichen Sie die extrahierten Rechnungsdaten mit den Bestelldaten und identifizieren Sie Abweichungen. Kennzeichnen Sie jede Einschätzung, für die relevante Informationen fehlen, ausdrücklich als Annahme.\n\nRECHNUNGSDATEN:\n[RECHNUNGSDATEN_JSON]\n\nBESTELLDATEN:\n[BESTELLDATEN_JSON]\n\nPRÜFKRITERIEN:\n- Lieferant stimmt überein\n- Betrag weicht maximal [TOLERANZ_PROZENT]% ab\n- Leistungsbeschreibung passt zur Bestellung\n- Bestellnummer ist korrekt (falls vorhanden)\n\nAUSGABE:\nErstellen Sie eine strukturierte Analyse im folgenden JSON-Format:\n{\n  \"abweichungen_gefunden\": true/false,\n  \"details\": [\n    {\"kategorie\": \"Betrag/Lieferant/Leistung\", \"beschreibung\": \"...\", \"schweregrad\": \"kritisch/mittel/gering\"}\n  ],\n  \"empfehlung\": \"automatisch_buchen\" oder \"manuelle_prüfung_erforderlich\",\n  \"begruendung\": \"...\"\n}\n\nSeien Sie präzise und nennen Sie konkrete Zahlen bei Abweichungen. Bei Beträgen unter [TOLERANZ_PROZENT]% Abweichung gilt die Rechnung als korrekt."
    }
  ],
  "prompt": "ZIEL\nBauen Sie einen Workflow, der bei eingehenden PDF-Rechnungen automatisch die Rechnungsdaten extrahiert, sie gegen Bestelldaten und Wareneingang im ERP abgleicht und bei Übereinstimmung die Buchung im Buchhaltungssystem auslöst. Bei Abweichungen benachrichtigt der Workflow das Finance-Team mit allen Details und markiert den Fall zur manuellen Prüfung, statt ihn automatisch durchzubuchen.\n\nPassen Sie die Struktur an die Konzepte Ihres Automations-Tools an (zum Beispiel Nodes, Steps, Zaps oder Agenten-Aktionen). Erhalten Sie dabei die Trigger-Logik, die Reihenfolge, die Verzweigung und den Datenfluss.\n\nTRIGGER\nTyp: neue E-Mail mit PDF-Anhang im dedizierten Rechnungs-Postfach, zum Beispiel rechnungen@firma.de.\nFilter: nur Anhänge vom Typ PDF, andere E-Mails werden ignoriert.\n\nSCHRITTE\n1. PDF auslesen: Gewinnen Sie den Text per OCR oder Extraktion aus dem Anhang.\n2. KI-Schritt: Datenextraktion. Verwenden Sie exakt den Arbeitsprompt Rechnungsdaten-Extraktion (siehe Abschnitt Arbeitsprompts). Ausgabe: JSON mit allen Rechnungsfeldern.\n3. Duplikats-Check: Prüfen Sie Rechnungsnummer und Lieferant gemeinsam als eindeutigen Schlüssel gegen bereits verarbeitete Rechnungen. Bei einem Duplikat springen Sie direkt zu Schritt 7 und kennzeichnen den Fall als Duplikat.\n4. Bestelldaten laden: Laden Sie die Bestelldaten über die Bestellnummer aus dem ERP (SAP, Dynamics oder Odoo). Fehlt die Bestellnummer, nutzen Sie als Fallback das Matching über Lieferant, Betrag und Datum.\n5. KI-Schritt: Abgleich. Verwenden Sie exakt den Arbeitsprompt Abweichungsanalyse (siehe Abschnitt Arbeitsprompts) mit dem Rechnungs-JSON und dem Bestell-JSON als Eingabe. Ausgabe: JSON mit einer Empfehlung.\n6. Verzweigung: Lautet die Empfehlung automatisch_buchen, lösen Sie die Buchung im Buchhaltungssystem (DATEV, Lexoffice oder vergleichbar) mit Kostenstellen- und Konten-Mapping aus.\n7. Sonst, bei einem Duplikat oder ohne gefundene Bestellung: Eskalieren Sie an das Finance-Team per Ticket oder Nachricht in Slack oder Teams, mit Rechnungsdaten, Bestelldaten und allen Abweichungsdetails. Markieren Sie den Fall zur manuellen Prüfung.\n8. Beide Zweige: Protokollieren Sie Eingangs-E-Mail, extrahiertes JSON, Abgleichsergebnis und finalen Status im Audit-Log.\n\nPROMPTS\nÜbernehmen Sie die beiden Arbeitsprompts aus dem gleichnamigen Abschnitt unverändert und vollständig. Ändern Sie an den enthaltenen Platzhaltern nichts und mappen Sie sie wie im Datenfluss beschrieben.\n\nDATENFLUSS\nSchritt 1 zu Schritt 2: extrahierter Rechnungstext.\nSchritt 2 zu Schritt 3, 4 und 5: Rechnungs-JSON.\nSchritt 4 zu Schritt 5: Bestelldaten als Bestell-JSON.\nSchritt 5 zu Schritt 6 und 7: die Felder Empfehlung, gefundene Abweichungen, Details und Begründung aus dem Abgleichsergebnis.\n\nFEHLERBEHANDLUNG\nUnvollständige Extraktion, etwa wenn Rechnungsnummer oder Bruttobetrag fehlen: nicht buchen, eskalieren und die Ursache im Review-Hinweis benennen.\nKeine Bestellung gefunden, auch nicht per Fallback-Matching: nicht buchen, eskalieren.\nDuplikat erkannt: nicht buchen, als Duplikat eskalieren.\nFremdwährung oder ungewöhnliches Format: zur manuellen Prüfung eskalieren.\nGrundsatz: Buchen Sie im Zweifel nie automatisch, eskalieren Sie stattdessen.\n\nPLATZHALTER-KONVENTION\nAlle Platzhalter in eckigen Klammern in den beiden Arbeitsprompts werden dynamisch gemappt, wie im Datenfluss beschrieben. Nicht dynamisch ist der Toleranzwert im Abgleichsprompt: Diesen legen Sie vor der Aktivierung selbst fest, kalibriert an echten Rechnungen aus der Vergangenheit. Listen Sie alle manuell zu konfigurierenden Platzhalter am Ende gesondert auf.\n\nSELBSTPRÜFUNG VOR ABSCHLUSS\nPrüfen Sie, bevor Sie den Workflow als fertig melden:\n1. Sind alle Schritte korrekt verbunden, insbesondere die Verzweigung zwischen Buchung und Eskalation sowie das Audit-Log in beiden Zweigen?\n2. Sind beide Arbeitsprompts vollständig und unverändert eingesetzt, und ist der Toleranzwert gemappt?\n3. Greifen Duplikats-Check und Fallback-Matching wie beschrieben?\n4. Sind alle Punkte aufgelistet, die manuell konfiguriert werden müssen: Rechnungs-Postfach, ERP- und Buchhaltungszugang, Kostenstellen- und Konten-Mapping, Toleranzwert und Eskalationskanal?",
  "einrichtung": {
    "intro": "Zwei Wege führen zum Ziel. Wählen Sie den, der zu Ihrem Setup passt.",
    "varianten": [
      {
        "variante": "Builder-Prompt",
        "einleitung": "Geeignet, wenn Sie den Workflow in Ihrem eigenen Automations-Tool aufbauen möchten.",
        "schritte": [
          "Öffnen Sie Ihr Workflow-Tool, etwa n8n, Make, Zapier oder Langdock.",
          "Legen Sie einen neuen Workflow an und vergeben Sie einen Namen.",
          "Wählen Sie die KI-gestützte Erstellung, sofern Ihr Tool sie anbietet.",
          "Fügen Sie den Builder-Prompt von oben vollständig ein.",
          "Prüfen Sie das Ergebnis gegen die Schrittfolge in diesem Dokument und ergänzen Sie Zugänge und Kanäle."
        ]
      },
      {
        "variante": "JSON-Import",
        "einleitung": "Geeignet, wenn Sie den Workflow unverändert übernehmen möchten.",
        "schritte": [
          "Laden Sie die JSON-Datei aus dem Abschnitt JSON-Export herunter.",
          "Öffnen Sie den Workflow-Bereich Ihres Tools und legen Sie einen neuen Workflow an.",
          "Vergeben Sie einen Namen und bestätigen Sie die Anlage.",
          "Öffnen Sie das Menü am Workflow-Namen und wählen Sie den Import einer JSON-Datei.",
          "Laden Sie die Datei hoch und hinterlegen Sie anschließend Ihre eigenen Zugänge.",
          "Führen Sie einen Testlauf durch, bevor Sie den Workflow aktivieren."
        ]
      }
    ]
  },
  "exportMeta": {
    "datei": "w21_rechnungs-strecke__workflow.json",
    "format": "voyage-workflow/1"
  },
  "download": {
    "schema": "voyage-workflow/1",
    "name": "Die Rechnungs-Strecke",
    "beschreibung": "Liest eingehende PDF-Rechnungen automatisch aus und gleicht sie gegen Bestelldaten aus dem ERP ab. Passt alles zusammen, bucht der Referenz-Export direkt im Buchhaltungssystem, bei einer Abweichung geht der Fall mit allen Details als Slack-Nachricht an das Buchhaltungsteam. Ein Duplikats-Check, ein Fallback-Matching ohne Bestellnummer und ein Audit-Log sind im Referenz-Export nicht als eigene Schritte angelegt, sie sind beim Nachbau als Ergänzung vorgesehen.",
    "trigger": {
      "typ": "E-Mail-Eingang über eine Gmail-Integration",
      "bedingung": "Der Lauf startet, sobald im verbundenen Gmail-Postfach eine E-Mail eintrifft, die den hinterlegten Suchfilter erfüllt, zum Beispiel Betreff enthält Rechnung mit Anhang, ein bestimmter Absender mit PDF-Anhang oder das Label rechnungen mit Anhang. Der Trigger-Knoten ist auf die Fehlerstrategie stop gesetzt, ein Fehler an dieser Stelle beendet den Lauf sofort."
    },
    "schritte": [
      {
        "nr": 1,
        "titel": "Trigger",
        "rolle": "mensch",
        "aktion": "Der Lauf startet, sobald im verbundenen Gmail-Postfach eine neue E-Mail eintrifft, die den hinterlegten Suchfilter erfüllt, zum Beispiel Betreff enthält Rechnung mit Anhang, ein bestimmter Absender mit PDF-Anhang oder das Label rechnungen mit Anhang. Andere E-Mails werden ignoriert. Der Trigger-Knoten ist auf die Fehlerstrategie stop gesetzt.",
        "prompt_ref": null,
        "eingang": [],
        "ausgang": [
          "PDF-Anhang",
          "Absender und Betreff der E-Mail"
        ]
      },
      {
        "nr": 2,
        "titel": "Daten extrahieren",
        "rolle": "automatisch",
        "aktion": "Ein KI-Knoten liest den PDF-Anhang direkt aus, inklusive automatisch aktivierter OCR für gescannte Rechnungen, und arbeitet dabei mit dem Arbeitsprompt Rechnungsdaten-Extraktion. Das hinterlegte Ausgabeschema liefert die strukturierten Felder invoice_number, supplier, amount_net, amount_gross, invoice_date, description, vat_rate und vat_amount, dazu output als Freitext-Zusammenfassung und success als Erfolgsflag. Bestellnummer, IBAN und Fälligkeitsdatum fragt der Arbeitsprompt zwar ab, sie sind im hinterlegten Ausgabeschema aber nicht als eigene Felder angelegt, wer damit strukturiert weiterarbeiten will, ergänzt sie dort. Auch dieser Knoten ist auf stop gesetzt.",
        "prompt_ref": "arbeitsprompt-1",
        "eingang": [
          "PDF-Anhang"
        ],
        "ausgang": [
          "invoice_number, supplier, amount_net, amount_gross, invoice_date, description, vat_rate, vat_amount, output, success"
        ]
      },
      {
        "nr": 3,
        "titel": "Abgleich gegen Bestellung",
        "rolle": "automatisch",
        "aktion": "Ein Code-Knoten vergleicht die extrahierten Daten mit den Bestelldaten aus dem ERP. Im Referenz-Export sind die ERP-Daten simuliert, produktiv ersetzt ein API-Call an das ERP-System, etwa SAP, Dynamics oder Odoo, diesen Teil. Geprüft werden Lieferant, Betrag innerhalb einer im Code fest hinterlegten Toleranz von 5 Prozent sowie die Leistungsbeschreibung, Abweichungen werden nach Schweregrad eingestuft: hoch für Lieferant oder Betrag, mittel für die Leistungsbeschreibung. Die Prüfung läuft als deterministischer Code, nicht als KI-Aufruf, der Arbeitsprompt Abweichungsanalyse dokumentiert die Alternative für Tools, die diesen Schritt lieber über ein Sprachmodell abbilden. Ein separater Duplikats-Check und ein Fallback-Matching ohne Bestellnummer sind im Referenz-Export nicht angelegt, beides steht dort nur als Erweiterungsoption. Auch dieser Knoten ist auf stop gesetzt.",
        "prompt_ref": "arbeitsprompt-2",
        "eingang": [
          "invoice_number, supplier, amount_net, amount_gross, invoice_date, description, vat_rate, vat_amount",
          "Bestelldaten aus dem ERP"
        ],
        "ausgang": [
          "has_discrepancies",
          "discrepancy_count",
          "discrepancies (Detailliste mit Kategorie, Beschreibung, Schweregrad)"
        ]
      },
      {
        "nr": 4,
        "titel": "Match-Entscheidung",
        "rolle": "automatisch",
        "aktion": "Ein Bedingungs-Knoten wertet has_discrepancies aus dem ERP-Abgleich aus: gleich true führt in den Zweig Abweichungen gefunden, gleich false in den Zweig Keine Abweichungen. Die Auswertung erfolgt direkt als Bedingung und nicht über einen weiteren KI-Aufruf, es wird immer genau ein Zweig ausgeführt. Auch dieser Knoten ist auf stop gesetzt.",
        "prompt_ref": null,
        "eingang": [
          "has_discrepancies"
        ],
        "ausgang": [
          "Zweig Abweichungen gefunden oder Zweig Keine Abweichungen"
        ]
      },
      {
        "nr": 5,
        "titel": "Automatisch buchen",
        "rolle": "ergebnis",
        "aktion": "Im Zweig Keine Abweichungen erstellt ein Code-Knoten den Buchungssatz: Debit auf Konto 4400 Wareneingang, Credit auf Konto 1600 Verbindlichkeiten, Vorsteuer auf Konto 1576, mit automatisch generierter Beleg-ID und Zeitstempel. Im Referenz-Export ist die Buchung simuliert, produktiv ersetzt ein API-Call an das Buchhaltungssystem, etwa DATEV oder Lexoffice, diesen Teil. Auch dieser Knoten ist auf stop gesetzt.",
        "prompt_ref": null,
        "eingang": [
          "Zweig Keine Abweichungen",
          "invoice_number, supplier, amount_net, amount_gross, vat_amount"
        ],
        "ausgang": [
          "Buchungssatz mit Beleg-ID"
        ]
      },
      {
        "nr": 6,
        "titel": "Eskalation",
        "rolle": "mensch",
        "aktion": "Im Zweig Abweichungen gefunden sendet ein Aktions-Knoten eine Slack-Nachricht an das Buchhaltungsteam. Gesetzt werden die Felder text und channelId: der Text zieht Rechnungsnummer, Lieferant, Rechnungsdatum und Bruttobetrag aus der Extraktion sowie die Anzahl und die Details der Abweichungen aus dem ERP-Abgleich, der Kanal wird je Lauf ausgewählt statt fest hinterlegt zu sein. Auch dieser Knoten ist auf stop gesetzt.",
        "prompt_ref": null,
        "eingang": [
          "Zweig Abweichungen gefunden",
          "invoice_number, supplier, invoice_date, amount_gross",
          "discrepancy_count, discrepancies"
        ],
        "ausgang": [
          "Slack-Nachricht an das Buchhaltungsteam"
        ]
      },
      {
        "nr": 7,
        "titel": "Audit-Log",
        "rolle": "ergebnis",
        "aktion": "Der Referenz-Export endet mit der Buchung beziehungsweise der Slack-Benachrichtigung, ein eigener Protokollierungs-Knoten ist dort nicht angelegt. Für ein lückenloses Audit-Log braucht es beim Nachbau einen zusätzlichen Schritt, der Eingangs-E-Mail, das extrahierte JSON, das Abgleichsergebnis und den finalen Status ablegt.",
        "prompt_ref": null,
        "eingang": [
          "Buchungssatz oder Slack-Nachricht"
        ],
        "ausgang": [
          "Audit-Log-Eintrag (beim Nachbau zu ergänzen)"
        ]
      }
    ],
    "prompts": {
      "arbeitsprompt-1": {
        "titel": "Rechnungsdaten-Extraktion",
        "text": "Sie sind ein Experte für Rechnungsanalyse. Analysieren Sie die folgende Rechnung und extrahieren Sie alle relevanten Daten in einem strukturierten JSON-Format. Wenn eine Angabe aus dem Rechnungstext nicht eindeutig hervorgeht, kennzeichnen Sie das als Annahme statt sie als gesichert darzustellen.\n\nRECHNUNG:\n[RECHNUNGS_TEXT]\n\nExtrahieren Sie folgende Informationen: Rechnungsnummer, Lieferant beziehungsweise Rechnungssteller mit Name und Adresse, Rechnungsdatum, Fälligkeitsdatum, Nettobetrag, Mehrwertsteuersatz und -betrag, Bruttobetrag, Leistungsbeschreibung beziehungsweise Positionen, Bestellnummer, falls vorhanden, sowie IBAN und Bankverbindung.\n\nAUSGABEFORMAT (JSON):\n{\n  \"rechnungsnummer\": \"...\",\n  \"lieferant\": {\"name\": \"...\", \"adresse\": \"...\"},\n  \"rechnungsdatum\": \"YYYY-MM-DD\",\n  \"faelligkeitsdatum\": \"YYYY-MM-DD\",\n  \"nettobetrag\": 0.00,\n  \"mwst_satz\": 0.00,\n  \"mwst_betrag\": 0.00,\n  \"bruttobetrag\": 0.00,\n  \"leistungen\": [\"Position 1\", \"Position 2\"],\n  \"bestellnummer\": \"...\",\n  \"iban\": \"...\"\n}\n\nWenn Informationen nicht vorhanden sind, setzen Sie den Wert auf null. Achten Sie auf korrekte Zahlenformate mit Punkt als Dezimaltrennzeichen."
      },
      "arbeitsprompt-2": {
        "titel": "Abweichungsanalyse",
        "text": "Sie sind ein Experte für Rechnungsprüfung. Vergleichen Sie die extrahierten Rechnungsdaten mit den Bestelldaten und identifizieren Sie Abweichungen. Kennzeichnen Sie jede Einschätzung, für die relevante Informationen fehlen, ausdrücklich als Annahme.\n\nRECHNUNGSDATEN:\n[RECHNUNGSDATEN_JSON]\n\nBESTELLDATEN:\n[BESTELLDATEN_JSON]\n\nPRÜFKRITERIEN: Lieferant stimmt überein, Betrag weicht maximal [TOLERANZ_PROZENT] Prozent ab, Leistungsbeschreibung passt zur Bestellung, Bestellnummer ist korrekt, falls vorhanden.\n\nAUSGABE:\nErstellen Sie eine strukturierte Analyse im folgenden JSON-Format:\n{\n  \"abweichungen_gefunden\": true/false,\n  \"details\": [\n    {\"kategorie\": \"Betrag/Lieferant/Leistung\", \"beschreibung\": \"...\", \"schweregrad\": \"kritisch/mittel/gering\"}\n  ],\n  \"empfehlung\": \"automatisch_buchen\" oder \"manuelle_prüfung_erforderlich\",\n  \"begruendung\": \"...\"\n}\n\nSeien Sie präzise und nennen Sie konkrete Zahlen bei Abweichungen. Bei Beträgen unter [TOLERANZ_PROZENT] Prozent Abweichung gilt die Rechnung als korrekt."
      }
    },
    "datenfluss": [
      {
        "von": 1,
        "nach": 2,
        "nutzlast": "PDF-Anhang, Kante output-success zu input-default"
      },
      {
        "von": 2,
        "nach": 3,
        "nutzlast": "invoice_number, supplier, amount_net, amount_gross, invoice_date, description, vat_rate, vat_amount, Kante output-success zu input-default"
      },
      {
        "von": 3,
        "nach": 4,
        "nutzlast": "has_discrepancies, discrepancy_count, discrepancies, Kante output-success zu input-default"
      },
      {
        "von": 4,
        "nach": 5,
        "nutzlast": "Zweig Keine Abweichungen, has_discrepancies gleich false, Kante output-condition zu input-default"
      },
      {
        "von": 4,
        "nach": 6,
        "nutzlast": "Zweig Abweichungen gefunden, has_discrepancies gleich true, Kante output-condition zu input-default"
      },
      {
        "von": 5,
        "nach": 7,
        "nutzlast": "Buchungssatz mit Beleg-ID. Kein Knoten im Referenz-Export vorhanden, Ergänzung beim Nachbau empfohlen."
      },
      {
        "von": 6,
        "nach": 7,
        "nutzlast": "Slack-Nachricht an das Buchhaltungsteam. Kein Knoten im Referenz-Export vorhanden, Ergänzung beim Nachbau empfohlen."
      }
    ],
    "voraussetzungen": [
      "Dediziertes Rechnungs-Postfach für eingehende PDFs, zum Beispiel rechnungen@firma.de",
      "ERP- oder Bestellsystem mit Bestelldaten und Wareneingängen, etwa SAP, Dynamics oder Odoo",
      "Buchhaltungssystem für die Buchung freigegebener Rechnungen, etwa DATEV oder Lexoffice",
      "LLM-Zugang für die Extraktion (OpenAI, Claude oder Gemini)",
      "Team-Chat oder Ticket-System für Eskalationen an das Finance-Team",
      "Kalibrierter Toleranzwert für den Betragsabgleich, festgelegt anhand echter Rechnungen aus der Vergangenheit"
    ],
    "fehlerbehandlung": [
      {
        "fall": "Ein beliebiger Knoten schlägt fehl, vom Trigger bis zur Buchung oder Benachrichtigung",
        "massnahme": "Jeder Knoten im Referenz-Export ist auf die Fehlerstrategie stop gesetzt. Der Lauf bricht komplett ab, es gibt weder einen automatischen Retry noch einen Fallback-Pfad."
      },
      {
        "fall": "OCR-Qualität schlecht",
        "massnahme": "Ein stärkeres Modell vorschalten oder eine höhere Mindestauflösung der Scans erzwingen."
      },
      {
        "fall": "Toleranzwert zu eng oder zu weit gefasst",
        "massnahme": "Den im Code fest hinterlegten Wert, im Referenz-Export 5 Prozent, anhand echter Rechnungen aus der Vergangenheit kalibrieren."
      },
      {
        "fall": "Bestellnummer fehlt",
        "massnahme": "Fallback-Matching über Lieferant, Betrag und Datum ergänzen. Im Referenz-Export ist das noch keine hinterlegte Logik, sondern eine Erweiterungsoption des ERP-Abgleichs."
      },
      {
        "fall": "Doppelbuchung",
        "massnahme": "Rechnungsnummer und Lieferant als eindeutigen Schlüssel prüfen, bevor gebucht wird. Auch das ist im Referenz-Export nicht angelegt."
      },
      {
        "fall": "Fehlendes Audit-Log",
        "massnahme": "Beim Nachbau ergänzen, da der Referenz-Export nach der Buchung beziehungsweise der Benachrichtigung endet."
      }
    ],
    "platzhalter": [
      {
        "name": "invoice_number",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, als Merge-Feld in der Slack-Nachricht referenziert"
      },
      {
        "name": "supplier",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, als Merge-Feld in der Slack-Nachricht referenziert"
      },
      {
        "name": "amount_net",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, Nettobetrag"
      },
      {
        "name": "amount_gross",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, Bruttobetrag, als Merge-Feld in der Slack-Nachricht referenziert"
      },
      {
        "name": "invoice_date",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, als Merge-Feld in der Slack-Nachricht referenziert"
      },
      {
        "name": "description",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, Leistungsbeschreibung"
      },
      {
        "name": "vat_rate",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, Mehrwertsteuersatz"
      },
      {
        "name": "vat_amount",
        "quelle": "Ausgabefeld des KI-Knotens Rechnungsdaten extrahieren, Mehrwertsteuerbetrag"
      },
      {
        "name": "output",
        "quelle": "Freitext-Zusammenfassung der Extraktion im Ausgabeschema des KI-Knotens"
      },
      {
        "name": "success",
        "quelle": "Erfolgsflag der Extraktion im Ausgabeschema des KI-Knotens"
      },
      {
        "name": "has_discrepancies",
        "quelle": "Boolesches Ergebnisfeld des ERP-Abgleichs, steuert die Verzweigung im Knoten Match-Entscheidung"
      },
      {
        "name": "discrepancy_count",
        "quelle": "Anzahl gefundener Abweichungen aus dem ERP-Abgleich, als Merge-Feld in der Slack-Nachricht referenziert"
      },
      {
        "name": "discrepancies",
        "quelle": "Detailliste der Abweichungen aus dem ERP-Abgleich, als Merge-Feld in der Slack-Nachricht referenziert"
      },
      {
        "name": "channelId",
        "quelle": "Zielkanal der Slack-Nachricht, im Referenz-Export je Lauf ausgewählt statt fest hinterlegt"
      },
      {
        "name": "TOLERANZWERT",
        "quelle": "Maximale Betragsabweichung in Prozent, im Code des ERP-Abgleichs fest hinterlegt, Referenzwert 5 Prozent, vor der Aktivierung zu kalibrieren"
      },
      {
        "name": "Konten 4400, 1600, 1576",
        "quelle": "Debit-, Credit- und Vorsteuerkonto im Buchungssatz, im Referenz-Export als Beispielwerte hinterlegt und an den eigenen Kontenplan anzupassen"
      },
      {
        "name": "ERP_API_ENDPUNKT",
        "quelle": "Platzhalter-URL und Bearer-Token für den produktiven ERP-Abruf, ersetzt im Referenz-Export den simulierten Datensatz"
      },
      {
        "name": "BUCHHALTUNGS_API_ENDPUNKT",
        "quelle": "Platzhalter-URL und Bearer-Token für die produktive Buchung, ersetzt im Referenz-Export die simulierte Buchung"
      },
      {
        "name": "GMAIL_SUCHFILTER",
        "quelle": "Suchausdruck des Trigger-Knotens, zum Beispiel Betreff, Absender oder Label mit Anhang"
      }
    ],
    "herausgeber": "Voyage Digital",
    "version": "2.0",
    "stand": "2026-07-26"
  },
  "itemIcon": "receipt",
  "recommended": [
    {
      "slug": "budget-geruest",
      "category": "skill",
      "name": "Das Budget-Gerüst",
      "teaser": "Baut aus Zeitraum, Rahmen und Prioritäten eine vollständige Budgetplanung mit drei Szenarien statt einer bloßen Kostentabelle.",
      "domaene": "Daten, Analytics & Finanzen",
      "itemIcon": "wallet"
    },
    {
      "slug": "umsatzprognose-schema",
      "category": "skill",
      "name": "Das Umsatzprognose-Schema",
      "teaser": "Analysiert Ihre Pipeline und historische Verkaufsdaten und liefert eine Umsatzprognose mit drei Szenarien, transparenten Annahmen und priorisierten Handlungsempfehlungen.",
      "domaene": "Daten, Analytics & Finanzen",
      "itemIcon": "line-chart"
    },
    {
      "slug": "budget-rechner",
      "category": "assistent",
      "name": "Der Budget-Rechner",
      "teaser": "Vergleicht Ihr Budget mit den Ist-Zahlen, zeigt Ihnen die größten Abweichungen samt Ursache und liefert bezifferte Einsparvorschläge inklusive Prognose für die nächste Periode.",
      "domaene": "Daten, Analytics & Finanzen",
      "itemIcon": "wallet"
    },
    {
      "slug": "kennzahlen-analyst",
      "category": "assistent",
      "name": "Der Kennzahlen-Analyst",
      "teaser": "Nimmt eine Excel- oder CSV-Datei mit Leistungsdaten entgegen, wertet sie mit statistischen Methoden aus und übersetzt das Ergebnis in verständliche Visualisierungen und eine nach Wirkung priorisierte Liste möglicher Maßnahmen.",
      "domaene": "Daten, Analytics & Finanzen",
      "itemIcon": "bar-chart-3"
    },
    {
      "slug": "szenario-rechner",
      "category": "assistent",
      "name": "Der Szenario-Rechner",
      "teaser": "Erstellt aus historischen Finanzdaten ein Best-Case-, Base-Case- und Worst-Case-Modell mit dokumentierten Annahmen, Sensitivitätsanalyse und priorisierten Handlungsempfehlungen.",
      "domaene": "Daten, Analytics & Finanzen",
      "itemIcon": "calculator"
    },
    {
      "slug": "google-analytics",
      "category": "tool",
      "name": "Google Analytics",
      "teaser": "Ereignisbasiertes Web- und App-Analyse-Tool von Google (GA4) zur Auswertung von Traffic, Nutzerverhalten, Trichtern und Kampagnen, mit kostenpflichtiger Enterprise-Stufe Analytics 360.",
      "domaene": "Daten, Analytics & Finanzen",
      "logoFile": "google-analytics.svg",
      "logoEinzug": 1
    },
    {
      "slug": "posthog",
      "category": "tool",
      "name": "PostHog",
      "teaser": "Product-Analytics-Plattform mit Events, Feature Flags, Session Replay, Experimenten und Fehler-Tracking über ein gemeinsames Event-Modell, nutzungsbasiert bepreist mit großzügigem kostenlosen Kontingent.",
      "domaene": "Daten, Analytics & Finanzen",
      "logoFile": "posthog.svg",
      "logoEinzug": 0.78
    },
    {
      "slug": "feedback-sichter",
      "category": "assistent",
      "name": "Der Feedback-Sichter",
      "teaser": "Sichtet hunderte Kundenfeedbacks aus Support, Umfragen und Reviews, clustert sie nach Themen mit Sentiment und liefert priorisierte Handlungsempfehlungen mit Impact-Einschätzung.",
      "domaene": "Daten, Analytics & Finanzen",
      "itemIcon": "message-square-quote"
    },
    {
      "slug": "produktfeedback-analyst",
      "category": "assistent",
      "name": "Der Produktfeedback-Analyst",
      "teaser": "Wertet verstreutes Kundenfeedback aus Bewertungen, Support-Tickets und Umfragen systematisch aus und verdichtet es zu einem priorisierten Maßnahmenplan.",
      "domaene": "Daten, Analytics & Finanzen",
      "itemIcon": "package-search"
    },
    {
      "slug": "vertragsrisiko-kette",
      "category": "workflow",
      "name": "Die Vertragsrisiko-Kette",
      "teaser": "Ein Automations-Baustein, der neue Verträge beim Eingang liest, die wichtigsten Klauseln strukturiert herausarbeitet und eine erste Risikoeinschätzung für das Team ablegt.",
      "domaene": "Recht & Compliance",
      "itemIcon": "file-warning"
    }
  ]
}