Automatisierte Verarbeitung von Rechnungen in Gmail mit Azure GPT-4.1 und manueller Prüfung

Experte

Dies ist ein Invoice Processing, AI Summarization-Bereich Automatisierungsworkflow mit 17 Nodes. Hauptsächlich werden If, Gmail, Merge, GmailTrigger, StopAndError und andere Nodes verwendet. Automatisierte Verarbeitung von Gmail-Rechnungen mit Azure GPT-4.1 und manueller Überprüfung

Voraussetzungen
  • Google-Konto + Gmail API-Anmeldedaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "zZWPMtZ0TNebe1fI",
  "meta": {
    "instanceId": "9d85a8cf5ffde86dc8ca46087fd639ee7966eec2fa01c3b00004cfc2bd9c91b0"
  },
  "name": "Automate Invoice Processing from Gmail with Azure GPT-4.1 and Human Verification",
  "tags": [],
  "nodes": [
    {
      "id": "a6fd1034-16ac-48ce-a20e-5d00f9709d76",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        40,
        220
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "sender": "youremail@gmail.com"
        },
        "options": {
          "downloadAttachments": true
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "T2T44GgzbxyaFB0y",
          "name": "Gmail account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b4829627-2c3e-477c-8ff0-9754f0010826",
      "name": "IF: KI sagt Ja",
      "type": "n8n-nodes-base.if",
      "position": [
        1020,
        260
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.output[0].insights[0].body }}",
              "value2": "Yes",
              "operation": "contains"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "14933a59-1cd2-4572-aa92-8968ffa03b8a",
      "name": "PDF lokal speichern",
      "type": "n8n-nodes-base.writeBinaryFile",
      "position": [
        1640,
        220
      ],
      "parameters": {
        "options": {},
        "fileName": "=C:/Test/Invoices/invoice_{{ $now.toFormat('yyyyLLdd_HHmmss') }}.pdf",
        "dataPropertyName": "attachment_0"
      },
      "typeVersion": 1
    },
    {
      "id": "0a17eed9-be81-4576-b218-ad12b3ffac28",
      "name": "Zusammenführen",
      "type": "n8n-nodes-base.merge",
      "position": [
        1480,
        220
      ],
      "parameters": {
        "mode": "chooseBranch"
      },
      "retryOnFail": false,
      "typeVersion": 3.2
    },
    {
      "id": "e577ce73-0505-45f0-80cb-aa6d241f1add",
      "name": "Informationsextraktor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "onError": "continueErrorOutput",
      "position": [
        660,
        280
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemPromptTemplate": "You are an expert reviewing invoices. Analyze the texts and say if it is an invoice. Just answer 'Yes' or 'No'"
        },
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"array\",\n  \"items\": {\n    \"type\": \"object\",\n     \"properties\": {\n       \"topic\": { \"type\": \"string\" },\n       \"insights\": {\n         \"type\": \"array\",\n         \"items\": {\n           \"type\": \"object\",\n           \"properties\": {\n             \"title\": { \"type\": \"string\" },\n             \"body\": { \"type\": \"string\" }\n           }\n         }\n       }\n     }\n  }\n}"
      },
      "typeVersion": 1.2,
      "alwaysOutputData": true
    },
    {
      "id": "861f5008-bd46-4091-b040-b7b2fe1e6f45",
      "name": "Ist dies eine PDF?",
      "type": "n8n-nodes-base.if",
      "position": [
        260,
        220
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.subject }}",
              "value2": "Invoice",
              "operation": "contains"
            },
            {
              "value1": "={{ $binary.attachment_0 }}",
              "operation": "isNotEmpty"
            }
          ]
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "e23bf999-1718-4489-a308-e244b22e14ad",
      "name": "Nachricht senden",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1020,
        480
      ],
      "webhookId": "aaafea40-4fcd-4775-82bf-5302914a681b",
      "parameters": {
        "sendTo": "receiver@gmail.com",
        "message": "I had trouble parsing the recent invoice. Can you please confirm that it is an invoice?",
        "options": {
          "appendAttribution": false
        },
        "subject": "Approval Required!",
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "T2T44GgzbxyaFB0y",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "bc2a8732-2e5f-421b-8df1-37a6ec2f7a2e",
      "name": "Rechnung gespeichert Nachricht",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1800,
        220
      ],
      "webhookId": "aaafea40-4fcd-4775-82bf-5302914a681b",
      "parameters": {
        "sendTo": "receiver@gmail.com",
        "message": "=Hi there,\nInvoice '{{ $json.subject }}' from \"{{ $json.from.value[0].name }}\" has been saved successfully in your Local Folder!\n\n",
        "options": {
          "appendAttribution": false
        },
        "subject": "=Invoice Downloaded"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "T2T44GgzbxyaFB0y",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c9155103-6c04-438a-8e90-edb63b9ffd1a",
      "name": "Notiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        120
      ],
      "parameters": {
        "color": 7,
        "width": 200,
        "height": 300,
        "content": "Triggers Gmail when new email from specific email account is received.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a7a4385d-f00e-493c-9757-fbd660a64354",
      "name": "Notiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        120
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 300,
        "content": "Checks if there is any pdf attachments in email, and Invoice is included in subject\n"
      },
      "typeVersion": 1
    },
    {
      "id": "da0c4d5e-9c24-4f3d-a17a-ca92d3299729",
      "name": "Notiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 600,
        "content": "If both are true, it extracts the information from the pdf.\n\nIf not, it gives an error saying that there is no invoice file included."
      },
      "typeVersion": 1
    },
    {
      "id": "2196f52f-9e5b-4acd-b173-86ff7e986b71",
      "name": "Notiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 780,
        "height": 660,
        "content": "This checks the extracted information from the pdf and analyze if it is invoice.\n\nBased on the information, if it is invoice, it gives output of \"Yes\", otherwise \"No\".\n\nIf \"Yes\", it merges response to another node.\nIf \"No\", it sends an email to person and says that the file does not seem like an invoice and double check the file for review. When human responds that it is an invoice, it corrects its answer as \"Yes\".\n\nIf there is an error parsing the extracted texts, it sends an email to user to check the file and asks for approval."
      },
      "typeVersion": 1
    },
    {
      "id": "ba5b7574-a2e1-401e-aab0-c7ca6b7856d8",
      "name": "Azure OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        660,
        440
      ],
      "parameters": {
        "model": "gpt-4.1",
        "options": {}
      },
      "credentials": {
        "azureOpenAiApi": {
          "id": "QvYBe8DtpxGloSPZ",
          "name": "Azure Open AI account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "42973f72-4ce9-4fff-90e5-9a09cc68f39b",
      "name": "Manuelle Validierung",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1200,
        340
      ],
      "webhookId": "69f41f8b-bad8-4fe6-83db-b46e64f10e7f",
      "parameters": {
        "sendTo": "receiveremail@gmail.com",
        "message": "The latest invoice does not seem to be legit. Please verify it manually.",
        "options": {
          "appendAttribution": false
        },
        "subject": "Manual Verification Required"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "T2T44GgzbxyaFB0y",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "f1d15106-d677-4484-8602-7091c87be5c7",
      "name": "Notiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1420,
        120
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 300,
        "content": "After verifying that the file is an invoice, it saves the file in the local directory. When the workflow is completed, it sends a success email to user."
      },
      "typeVersion": 1
    },
    {
      "id": "f589f451-3faf-4930-ab12-4796f219d066",
      "name": "Notiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 400,
        "height": 100,
        "content": "## Use this to automatically save invoice received in an email"
      },
      "typeVersion": 1
    },
    {
      "id": "3b021445-e52e-4191-a454-654ba26e1bba",
      "name": "Fehlerbehandlung",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        460,
        440
      ],
      "parameters": {
        "errorMessage": "There is no pdf file!"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "a74dc17a-a9fe-448e-a457-4b267ce63830",
  "connections": {
    "0a17eed9-be81-4576-b218-ad12b3ffac28": {
      "main": [
        [
          {
            "node": "14933a59-1cd2-4572-aa92-8968ffa03b8a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "861f5008-bd46-4091-b040-b7b2fe1e6f45": {
      "main": [
        [
          {
            "node": "0a17eed9-be81-4576-b218-ad12b3ffac28",
            "type": "main",
            "index": 0
          },
          {
            "node": "e577ce73-0505-45f0-80cb-aa6d241f1add",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "3b021445-e52e-4191-a454-654ba26e1bba",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a6fd1034-16ac-48ce-a20e-5d00f9709d76": {
      "main": [
        [
          {
            "node": "861f5008-bd46-4091-b040-b7b2fe1e6f45",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b4829627-2c3e-477c-8ff0-9754f0010826": {
      "main": [
        [
          {
            "node": "0a17eed9-be81-4576-b218-ad12b3ffac28",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "42973f72-4ce9-4fff-90e5-9a09cc68f39b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14933a59-1cd2-4572-aa92-8968ffa03b8a": {
      "main": [
        [
          {
            "node": "bc2a8732-2e5f-421b-8df1-37a6ec2f7a2e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e577ce73-0505-45f0-80cb-aa6d241f1add": {
      "main": [
        [
          {
            "node": "b4829627-2c3e-477c-8ff0-9754f0010826",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "e23bf999-1718-4489-a308-e244b22e14ad",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ba5b7574-a2e1-401e-aab0-c7ca6b7856d8": {
      "ai_languageModel": [
        [
          {
            "node": "e577ce73-0505-45f0-80cb-aa6d241f1add",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Rechnungsverarbeitung, KI-Zusammenfassung

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes17
Kategorie2
Node-Typen9
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34