AutomationFlowsAI & RAG › Invoice Father

Invoice Father

Invoice Father. Uses lmChatGoogleGemini, httpRequest, telegramTrigger, agent. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexityAI-powered8 nodesGoogle Gemini ChatHTTP RequestTelegram TriggerAgentGoogle Sheets
AI & RAG Trigger: Event Nodes: 8 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Google Sheets 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
{
  "name": "Invoice Father",
  "nodes": [
    {
      "parameters": {
        "modelName": "models/gemini-1.5-pro-001",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1,
      "position": [
        860,
        320
      ],
      "id": "6fe13dcd-3ef1-4547-9beb-897a09716371",
      "name": "Google Gemini Chat Model",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "8bb96ae3-a934-4900-a2fc-b8b8b7de2afb",
              "leftValue": "={{ $json.message.photo }}",
              "rightValue": "",
              "operator": {
                "type": "array",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        280,
        80
      ],
      "id": "c8dbb9c1-3a04-4819-ad10-5f07978206ee",
      "name": "If"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://host.docker.internal:8000/extract",
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "parameterType": "formBinaryData",
              "name": "file",
              "inputDataFieldName": "data"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        560,
        60
      ],
      "id": "ffa5240d-ff53-4230-a90e-0d77f491d075",
      "name": "HTTP Request1"
    },
    {
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {
          "download": true
        }
      },
      "type": "n8n-nodes-base.telegramTrigger",
      "typeVersion": 1.2,
      "position": [
        60,
        100
      ],
      "id": "3017c72e-485d-4cff-a87f-bcfee9aee7c1",
      "name": "Telegram Trigger",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "a8751720-ec67-48ba-97c2-91ac7c139271",
              "name": "prompt",
              "value": "=A\u015fa\u011f\u0131daki metin bir fi\u015f/fatura \u00e7\u0131kt\u0131s\u0131d\u0131r. Bu metinden a\u015fa\u011f\u0131daki alanlar\u0131 do\u011fru \u015fekilde JSON format\u0131nda \u00e7\u0131kar:\n\n- firma: Firma ad\u0131\n- adres: Firma adresi\n- vergi_dairesi: Vergi dairesi ismi\n- vergi_no: Vergi numaras\u0131\n- tarih: Fatura tarihi (g\u00fcn.ay.y\u0131l format\u0131nda)\n- saat: Saat (saat:dakika format\u0131nda)\n- fis_no: Fi\u015f numaras\u0131\n- urun_adi: Faturadaki \u00fcr\u00fcn ismi\n- urun_fiyat: \u00dcr\u00fcn fiyat\u0131\n- toplam_tutar: Faturadaki toplam tutar. Genellikle en son ge\u00e7en fiyat budur. Yan\u0131lt\u0131c\u0131 b\u00fcy\u00fck say\u0131lardan ka\u00e7\u0131n. 89,00 gibi ger\u00e7ek para de\u011ferini al.\n\nL\u00fctfen sadece \u015fu formatta cevap ver:\n{\n  \"firma\": \"...\",\n  \"adres\": \"...\",\n  \"vergi_dairesi\": \"...\",\n  \"vergi_no\": \"...\",\n  \"tarih\": \"...\",\n  \"saat\": \"...\",\n  \"fis_no\": \"...\",\n  \"urun_adi\": \"...\",\n  \"urun_fiyat\": \"...\",\n  \"toplam_tutar\": \"...\"\n}\n\n\u0130\u015fte raw string:\n{{ $json.raw_text }}",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": "={{ $json.raw_text }} ",
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        600,
        320
      ],
      "id": "d5d4a1da-eb32-4093-bad0-988e2e276031",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.prompt }}",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2,
      "position": [
        860,
        100
      ],
      "id": "8770d151-4671-40d1-8d52-c89a76bbd2fa",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "authentication": "serviceAccount",
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "https://docs.google.com/spreadsheets/d/1MORQza2TQmuBg9MMgDtN4Ig-2FneWzubANuQ1zIVcrA/edit?usp=drive_link",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": 1304329918,
          "mode": "list",
          "cachedResultName": "Invoices",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MORQza2TQmuBg9MMgDtN4Ig-2FneWzubANuQ1zIVcrA/edit#gid=1304329918"
        },
        "columns": {
          "mappingMode": "autoMapInputData",
          "value": {
            "firma": "={{ $json.firma }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "firma",
              "displayName": "firma",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "adres",
              "displayName": "adres",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "vergi_dairesi",
              "displayName": "vergi_dairesi",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "vergi_no",
              "displayName": "vergi_no",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "tarih",
              "displayName": "tarih",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "saat",
              "displayName": "saat",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "fis_no",
              "displayName": "fis_no",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "urun_adi",
              "displayName": "urun_adi",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "urun_fiyat",
              "displayName": "urun_fiyat",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "toplam_tutar",
              "displayName": "toplam_tutar",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "kayit_tarihi",
              "displayName": "kayit_tarihi",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.6,
      "position": [
        1400,
        100
      ],
      "id": "793e883a-b03f-46d7-8f81-4dd45d72e8d0",
      "name": "Google Sheets",
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const raw = $input.first().json.output\nconst currentDate=new Date();\n\nconst parsed = {kayit_tarihi:currentDate,...JSON.parse(raw)};\n\nreturn [ { json: parsed } ];\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1220,
        100
      ],
      "id": "c5963f73-f0bc-4b23-8f65-5ba48e8cc1f3",
      "name": "Code"
    }
  ],
  "connections": {
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8e50bbbf-c4f5-474d-a440-65cf1b3a6cd2",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "LbHxN0LkO79GGJq6",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

Invoice Father. Uses lmChatGoogleGemini, httpRequest, telegramTrigger, agent. Event-driven trigger; 8 nodes.

Source: https://github.com/MustafaPicakci/invoice-father/blob/fcd81549ad7b7f2b9c476ef25a1a5dc3bd20d54e/n8n/Invoice_Father.json — 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

This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.

MongoDB, Chain Llm, Google Gemini Chat +11
AI & RAG

This project is a template for building a complete academic virtual assistant using n8n. It connects to Telegram, answers frequently asked questions by querying MongoDB, keeps the community informed a

Telegram, MongoDB, Telegram Trigger +6
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