AutomationFlowsAI & RAG › Extract Invoice Data From Pdfs with Gemini AI to Google Sheets

Extract Invoice Data From Pdfs with Gemini AI to Google Sheets

Original n8n title: Extract Invoice Data From Pdfs with Gemini AI to Google Sheets 📄

ByLouis @louisdl on n8n.io

This workflow automates the extraction and processing of invoice data from PDFs stored in a Google Drive folder. It leverages Google Drive, Google Sheets, and Gemini AI to streamline invoice management. Automatic Detection: Monitors a Google Drive folder for new invoices.…

Event trigger★★★★☆ complexityAI-powered28 nodesGoogle Gemini ChatGoogle SheetsHTTP RequestAgentGoogle Drive TriggerGoogle DriveOutput Parser StructuredGmail
AI & RAG Trigger: Event Nodes: 28 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #9261 — we link there as the canonical source.

This workflow follows the Agent → Gmail recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "714b6c99-8f0a-439b-94d7-29bea1589dba",
      "name": "Intro Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1888,
        -880
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "36f55639-f8b7-4733-b9e5-a17551fdb633",
      "name": "Setup Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        -880
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "f1b4ea4f-7566-41e2-af24-e4a19b5d93c5",
      "name": "AI Extraction Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -992
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "37dbc171-8e58-4eb6-a326-e3629dfc41b0",
      "name": "Data Split Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        992,
        -1008
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "11ffaff7-b3cc-408a-9abe-43b794a5463f",
      "name": "Google Sheets Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1584,
        -944
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "9c4e40cd-8129-428d-a88d-b5562350b75b",
      "name": "Gmail Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1376,
        -1312
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "ffcac485-5c9c-485c-bc6e-fb01a00aecb9",
      "name": "Extend Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        -1312
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "44ec1ad5-daa0-49fc-b502-4f176a112413",
      "name": "Compare Datasets1",
      "type": "n8n-nodes-base.compareDatasets",
      "position": [
        -432,
        -720
      ],
      "parameters": {},
      "typeVersion": 2.3
    },
    {
      "id": "2c3bbfee-8ca9-4e88-bf9c-e4cdbb99d9db",
      "name": "Extract from File1",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        256,
        -704
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "559ca06b-7caf-4852-b27c-44fa8f24f416",
      "name": "Google Gemini Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        512,
        -560
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3dbb9100-2549-4421-814c-a3260e31cf4d",
      "name": "Log the processing of the doc1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1680,
        -720
      ],
      "parameters": {},
      "typeVersion": 4.5
    },
    {
      "id": "1b3f9c22-09a3-401f-9f1a-3226dd535a4d",
      "name": "Cleans output1",
      "type": "n8n-nodes-base.code",
      "position": [
        -656,
        -800
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "96c85220-8cf0-4e6a-bbb5-870a7129c3ea",
      "name": "Get list of pdf files1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -848,
        -800
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "8c29b1cf-983f-4a4c-a031-b42f351f7b46",
      "name": "Read processed docs1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -736,
        -608
      ],
      "parameters": {},
      "typeVersion": 4.5
    },
    {
      "id": "74c6773d-4794-4b9a-8600-0c3d76dd8ca4",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -928,
        -880
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "70d08a7f-2e3f-4c87-b211-42f9431fdd79",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        -880
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "df813074-a781-45ea-98a0-5941f22fa7f8",
      "name": "AI Agent - get targeted elements from text1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        544,
        -784
      ],
      "parameters": {},
      "typeVersion": 1.9
    },
    {
      "id": "479aa135-bed9-464d-9d0f-fd1e21f0958f",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1184,
        -880
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "fcdb2e08-cb36-479b-85fc-3e30219e5d24",
      "name": "Google Drive Trigger1",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "position": [
        -1120,
        -704
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "548694d2-ced7-4047-8ce2-99077202c840",
      "name": "Download file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        64,
        -704
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "0fcd4caf-6f6b-41ad-b882-c7c58fd3e0e4",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        688,
        -608
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "1f2a7b86-5134-4541-8c84-f5544f62f4c8",
      "name": "Google Gemini Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        768,
        -480
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7f825e30-be8e-4ada-a74e-0831ea3580bd",
      "name": "Limit1",
      "type": "n8n-nodes-base.limit",
      "disabled": true,
      "position": [
        -128,
        -704
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "11e663ae-b30d-4b22-9c85-92a09bf94818",
      "name": "Send a message1",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1456,
        -1120
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 2.1
    },
    {
      "id": "2c9e2591-51ca-4cf3-b1b8-f30a854a0a0f",
      "name": "Update invoice Fields1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1456,
        -784
      ],
      "parameters": {},
      "typeVersion": 4.5
    },
    {
      "id": "02719e23-6981-4dab-81ba-b49ff1462cb2",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1008,
        -784
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "767efe5c-6da5-4048-a56a-dec53da68438",
      "name": "Code in JavaScript1",
      "type": "n8n-nodes-base.code",
      "position": [
        1232,
        -784
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "571d934d-c285-402a-aab3-7020dc9e2614",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -880
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Limit1": {
      "main": [
        [
          {
            "node": "Download file1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cleans output1": {
      "main": [
        [
          {
            "node": "Compare Datasets1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file1": {
      "main": [
        [
          {
            "node": "Extract from File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Code in JavaScript1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compare Datasets1": {
      "main": [
        [
          {
            "node": "Limit1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File1": {
      "main": [
        [
          {
            "node": "AI Agent - get targeted elements from text1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript1": {
      "main": [
        [
          {
            "node": "Update invoice Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read processed docs1": {
      "main": [
        [
          {
            "node": "Compare Datasets1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Google Drive Trigger1": {
      "main": [
        [
          {
            "node": "Get list of pdf files1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Read processed docs1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get list of pdf files1": {
      "main": [
        [
          {
            "node": "Cleans output1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update invoice Fields1": {
      "main": [
        [
          {
            "node": "Log the processing of the doc1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent - get targeted elements from text1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent - get targeted elements from text1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Log the processing of the doc1": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent - get targeted elements from text1": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow automates the extraction and processing of invoice data from PDFs stored in a Google Drive folder. It leverages Google Drive, Google Sheets, and Gemini AI to streamline invoice management. Automatic Detection: Monitors a Google Drive folder for new invoices.…

Source: https://n8n.io/workflows/9261/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.

HTTP Request, Telegram, Google Sheets +9
AI & RAG

Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.

HTTP Request, Telegram, Google Sheets +8
AI & RAG

Arvifund - Supabase (Fixed v2). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.

HTTP Request, Telegram, Google Sheets +9
AI & RAG

Arvifund - Supabase (Fixed v4). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.

HTTP Request, Telegram, Google Sheets +9
AI & RAG

Arvifund - Supabase (Fixed v3). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.

HTTP Request, Telegram, Google Sheets +9