Procesamiento automático de facturas de Gmail con Azure GPT-4.1 y verificación humana

Avanzado

Este es unInvoice Processing, AI Summarizationflujo de automatización del dominio deautomatización que contiene 17 nodos.Utiliza principalmente nodos como If, Gmail, Merge, GmailTrigger, StopAndError. Automatización de procesamiento de facturas de Gmail con Azure GPT-4.1 y verificación humana

Requisitos previos
  • Cuenta de Google y credenciales de API de Gmail
  • Clave de API de OpenAI
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "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: AI Dice Sí",
      "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": "Guardar PDF Localmente",
      "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": "Combinar",
      "type": "n8n-nodes-base.merge",
      "position": [
        1480,
        220
      ],
      "parameters": {
        "mode": "chooseBranch"
      },
      "retryOnFail": false,
      "typeVersion": 3.2
    },
    {
      "id": "e577ce73-0505-45f0-80cb-aa6d241f1add",
      "name": "Extractor de Información",
      "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": "¿Es este un 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": "Enviar un mensaje",
      "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": "Mensaje de Factura Guardada",
      "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": "Nota Adhesiva",
      "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": "Nota Adhesiva1",
      "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": "Nota Adhesiva2",
      "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": "Nota Adhesiva3",
      "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": "Verificación Manual",
      "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": "Nota Adhesiva4",
      "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": "Nota Adhesiva5",
      "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": "Manejador de Errores",
      "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
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Procesamiento de facturas, Resumen de IA

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos17
Categoría2
Tipos de nodos9
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34