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

Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.

Tool Think, Tool Calculator, Agent Tool +18
AI & RAG

This comprehensive n8n workflow automates the entire Meta (Facebook/Instagram) advertising process, from asset analysis to ad creation. It combines AI-powered content analysis with automated ad deploy

Facebook Graph Api, HTTP Request, Google Drive +5
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

LinkedIn URL → Scrape → Match → Screen → Decide, all automated

Google Drive, Agent, Google Drive Tool +6
AI & RAG

Transcript Evalu8r V2 is a robust browser-based transcript analysis tool powered by Deepgram’s speech-to-text API and built into an n8n workflow template. This release introduces full in-browser audio

Google Drive Trigger, HTTP Request, Agent +5