Workflow: Telegram Splitout Monitor

Workflow Details

Download Workflow
{
    "id": "3BkxvtCbF6hHGUgM",
    "meta": {
        "instanceId": "d847dccbed2cefba539a228a44c266869b59eafbd4f307c4928a1149fb542a9e",
        "templateCredsSetupCompleted": true
    },
    "name": "N8N Financial Tracker Telegram Invoices to Notion with AI Summaries & Reports",
    "tags": [
        {
            "id": "OXcPKHaINFSvU1ux",
            "name": "Money",
            "createdAt": "2025-05-09T11:02:15.929Z",
            "updatedAt": "2025-05-09T11:02:15.929Z"
        },
        {
            "id": "witgF3iHQ0sAlkjG",
            "name": "experimental",
            "createdAt": "2025-05-09T11:02:15.933Z",
            "updatedAt": "2025-05-09T11:02:15.933Z"
        }
    ],
    "nodes": [
        {
            "id": "3792ae58-807f-4e83-a219-25c17c8b4048",
            "name": "Google Gemini Chat Model",
            "type": "@n8n\/n8n-nodes-langchain.lmChatGoogleGemini",
            "position": [
                680,
                380
            ],
            "parameters": {
                "options": [],
                "modelName": "models\/gemini-2.5-flash-preview-04-17"
            },
            "credentials": {
                "googlePalmApi": {
                    "id": "haEP6ehKtsSUjFmK",
                    "name": "Google Gemini(PaLM) Api account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "943f87e2-a1ac-4f7e-999b-8ea261259e5a",
            "name": "Basic LLM Chain",
            "type": "@n8n\/n8n-nodes-langchain.chainLlm",
            "position": [
                640,
                220
            ],
            "parameters": {
                "text": "=ini ada base64 invoice rangkumkan Pengeluaran dari invoice tersebut Nama Barang jumlah dan Pengeluaran masing masing barang dan total, outputnya jangan panjang panjang saya cukup berikan \n\ndate: DD-MM-YYYY ( Jika dari OCR tidak ada tanggal ambil tanggal hari ini )\nid:\nname:\n qty: \nprice:\n total:\ncategory:\ntax : (jika di total berbeda dengan item brati ada pajak nya hitungkan juga pajaknya masukan kesini)\n\nuntuk pilihan categorynya : Food & Beverage \/ Transportation \/ Utilities \/ Shopping \/ Healthcare \/ Entertaiment \/ Housing \/ Education\n\ndalam bentuk JSON array object, berikan juga key message summary untuk rangkuman, berikan rangkauman singkat total pengeluaran dan barang apa saja yang dibeli serta jumlah nya berikan juga pajaknya",
                "messages": {
                    "messageValues": [
                        {
                            "type": "HumanMessagePromptTemplate",
                            "messageType": "imageBinary"
                        }
                    ]
                },
                "promptType": "define",
                "hasOutputParser": true
            },
            "typeVersion": 1.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "247b78cb-c3f6-4f31-8559-0fff70de9ba9",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                0,
                0
            ],
            "parameters": {
                "width": 1703,
                "height": 580,
                "content": "## Automated Financial Tracker: Telegram Invoices to Notion with AI Summaries & Reports\n"
            },
            "typeVersion": 1
        },
        {
            "id": "e20045c2-a8ef-43d6-b619-6825f605e183",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                0,
                620
            ],
            "parameters": {
                "color": 5,
                "width": 1706,
                "height": 527,
                "content": "## Schedule report to send on chanel or private message\n"
            },
            "typeVersion": 1
        },
        {
            "id": "ed8d6544-af9e-416a-b1f3-624ca108427f",
            "name": "Schedule Trigger | for send chart report",
            "type": "n8n-nodes-base.scheduleTrigger",
            "position": [
                80,
                880
            ],
            "parameters": {
                "rule": {
                    "interval": [
                        []
                    ]
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "22ad7ea1-9404-48bd-9d0f-0c58b8b66e3d",
            "name": "Get Recent Data from Notions",
            "type": "n8n-nodes-base.notion",
            "position": [
                400,
                940
            ],
            "parameters": {
                "filters": {
                    "conditions": [
                        {
                            "key": "Created time|created_time",
                            "condition": "past_week"
                        }
                    ]
                },
                "options": [],
                "resource": "databasePage",
                "operation": "getAll",
                "returnAll": true,
                "databaseId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1d858554-d218-807c-936c-d06c8a8ec769",
                    "cachedResultUrl": "https:\/\/www.notion.so\/1d858554d218807c936cd06c8a8ec769",
                    "cachedResultName": "Pengeluaran Rizqi Dini"
                },
                "filterType": "manual"
            },
            "credentials": {
                "notionApi": {
                    "id": "AhjWhO7Jpc5x7xKG",
                    "name": "Notion account"
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "34310645-52da-4f9c-96a2-0a01d0a640f9",
            "name": "Summarize Transaction Data",
            "type": "n8n-nodes-base.summarize",
            "position": [
                760,
                920
            ],
            "parameters": {
                "options": [],
                "fieldsToSplitBy": "property_category",
                "fieldsToSummarize": {
                    "values": [
                        {
                            "field": "property_total",
                            "aggregation": "sum"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "id": "80a374cb-00cf-46b1-9505-709be1c550da",
            "name": "Generate Chart",
            "type": "n8n-nodes-base.quickChart",
            "position": [
                1200,
                900
            ],
            "parameters": {
                "data": "={{ $json.chart.data.datasets[0].data }}",
                "labelsMode": "array",
                "labelsArray": "={{ $json.chart.data.labels }}",
                "chartOptions": [],
                "datasetOptions": []
            },
            "typeVersion": 1
        },
        {
            "id": "6b7c67ee-b205-42f5-9441-eb2ecee4a503",
            "name": "Send Chart Image to Group or Private Chat",
            "type": "n8n-nodes-base.telegram",
            "position": [
                1460,
                760
            ],
            "webhookId": "66cce6e1-819c-487b-b8ad-3f02aebd40cb",
            "parameters": {
                "chatId": "-1001957001324",
                "operation": "sendPhoto",
                "binaryData": true,
                "additionalFields": {
                    "fileName": "chart",
                    "message_thread_id": 571
                }
            },
            "credentials": {
                "telegramApi": {
                    "id": "J8yRVYmsnH74HuaD",
                    "name": "Telegram account"
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "06afd5ea-77b2-468d-b12b-1386d37a3ee6",
            "name": "Convert Data to JSON chart payload",
            "type": "n8n-nodes-base.code",
            "position": [
                1080,
                900
            ],
            "parameters": {
                "jsCode": "const labels = [];\nconst values = [];\n\nfor (const item of items) {\n  labels.push(item.json.property_category);\n  values.push(item.json.sum_property_total);\n}\n\nreturn [\n  {\n    json: {\n      chart: {\n        type: 'bar',\n        data: {\n          labels,\n          datasets: [\n            {\n              label: 'Spending by Category',\n              data: values,\n              backgroundColor: 'rgba(54, 162, 235, 0.6)',\n              borderColor: 'rgba(54, 162, 235, 1)',\n              borderWidth: 1\n            }\n          ]\n        },\n        options: {\n          plugins: {\n            title: {\n              display: true,\n              text: 'Spending Summary by Category'\n            }\n          },\n          scales: {\n            y: {\n              beginAtZero: true\n            }\n          }\n        }\n      }\n    }\n  }\n];"
            },
            "typeVersion": 2
        },
        {
            "id": "4ad8c9c9-fbec-46ce-943d-447ca687e031",
            "name": "Telegram Trigger | When recive photo",
            "type": "n8n-nodes-base.telegramTrigger",
            "position": [
                160,
                160
            ],
            "webhookId": "cac4ce91-ed1f-42ea-aebe-97ac3612aea6",
            "parameters": {
                "updates": [
                    "message"
                ],
                "additionalFields": []
            },
            "credentials": {
                "telegramApi": {
                    "id": "J8yRVYmsnH74HuaD",
                    "name": "Telegram account"
                }
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "5231929f-2d7d-43ff-b9ae-141374926131",
            "name": "Get Image Info",
            "type": "n8n-nodes-base.editImage",
            "position": [
                460,
                160
            ],
            "parameters": {
                "operation": "information"
            },
            "typeVersion": 1
        },
        {
            "id": "c8dcc6a1-2367-4049-9a8b-d8a04299ee72",
            "name": "Parse To your object | Table",
            "type": "@n8n\/n8n-nodes-langchain.outputParserStructured",
            "position": [
                1040,
                460
            ],
            "parameters": {
                "schemaType": "manual",
                "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"message\": {\n      \"type\": \"string\"\n    },\n    \"summary\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\"date\": { \"type\": \"date\" },\n          \"id\": { \"type\": \"integer\" },\n          \"name\": { \"type\": \"string\" },\n          \"qty\": { \"type\": \"integer\" },\n          \"price\": { \"type\": \"number\" },\n          \"tax\": { \"type\": \"number\" },\n          \"total\": { \"type\": \"number\" },\"category\": { \"type\": \"string\" }\n        },\n        \"required\": [\"id\", \"name\", \"qty\", \"price\", \"total\",\"category\"]\n      }\n    }\n  },\n  \"required\": [\"message\", \"summary\"]\n}\n"
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "bc098a26-4e55-4908-880c-e5f27737a941",
            "name": "Split Out | data transaction",
            "type": "n8n-nodes-base.splitOut",
            "position": [
                1120,
                40
            ],
            "parameters": {
                "options": [],
                "fieldToSplitOut": "output.summary"
            },
            "typeVersion": 1
        },
        {
            "id": "2a42bc4b-a5c7-433e-91e4-aa5531570f73",
            "name": "Sendback to chat and give summarize text",
            "type": "n8n-nodes-base.telegram",
            "position": [
                1480,
                400
            ],
            "webhookId": "f90475fa-69cd-4e19-bc93-bffdceae8324",
            "parameters": {
                "text": "={{ $json.output.message }}",
                "chatId": "={{ $('Telegram Trigger | When recive photo').item.json.message.chat.id }}",
                "additionalFields": {
                    "appendAttribution": false
                }
            },
            "credentials": {
                "telegramApi": {
                    "id": "J8yRVYmsnH74HuaD",
                    "name": "Telegram account"
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "bfc5c52e-313d-4257-bdfa-c542b687a853",
            "name": "Record To Notion Database",
            "type": "n8n-nodes-base.notion",
            "position": [
                1580,
                120
            ],
            "parameters": {
                "options": [],
                "resource": "databasePage",
                "databaseId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1d858554-d218-807c-936c-d06c8a8ec769",
                    "cachedResultUrl": "https:\/\/www.notion.so\/1d858554d218807c936cd06c8a8ec769",
                    "cachedResultName": "Pengeluaran Rizqi Dini"
                },
                "propertiesUi": {
                    "propertyValues": [
                        {
                            "key": "Name|title",
                            "title": "={{ $json.name }}"
                        },
                        {
                            "key": "Quantity|number",
                            "numberValue": "={{ $json.qty }}"
                        },
                        {
                            "key": "Price|number",
                            "numberValue": "={{ $json.price }}"
                        },
                        {
                            "key": "Total|number",
                            "numberValue": "={{ $json.total }}"
                        },
                        {
                            "key": "Category|select",
                            "selectValue": "={{ $json.category }}"
                        },
                        {
                            "key": "Date|rich_text",
                            "textContent": "={{ $json.date }}"
                        },
                        {
                            "key": "Tax|number",
                            "numberValue": "={{ $json.tax }}"
                        }
                    ]
                }
            },
            "credentials": {
                "notionApi": {
                    "id": "AhjWhO7Jpc5x7xKG",
                    "name": "Notion account"
                }
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "f514554b-eb9e-47e2-ad6b-0b13036beaf4",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                40,
                60
            ],
            "parameters": {
                "color": 3,
                "width": 340,
                "height": 280,
                "content": "\ud83d\udcf8 INVOICE INPUT \ud83d\udcf8\nBot listens here for photos of your receipts\/invoices.\nEnsure your Telegram Bot API token is set in credentials."
            },
            "typeVersion": 1
        },
        {
            "id": "53fc4c77-3f16-4cb8-82e8-f4810af1f569",
            "name": "Sticky Note3",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                600,
                60
            ],
            "parameters": {
                "color": 5,
                "width": 360,
                "height": 460,
                "content": "\ud83e\udd16 AI MAGIC HAPPENS HERE \ud83e\udde0\n- Image is sent to Google Gemini for data extraction.\n- Check 'Basic LLM Chain' to customize the AI prompt (e.g., categories, output format).\n- Requires Google Gemini API credentials."
            },
            "typeVersion": 1
        },
        {
            "id": "c6fb1193-7cc9-4f45-8a5f-20af41cdf3c8",
            "name": "Sticky Note4",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                980,
                340
            ],
            "parameters": {
                "color": 5,
                "width": 280,
                "height": 200,
                "content": "\u2728 STRUCTURING AI DATA \u2728\nConverts the AI's text output into a usable JSON object.\nCheck the schema if you modify the AI prompt significantly."
            },
            "typeVersion": 1
        },
        {
            "id": "79a4e9ba-d1ea-4cfc-870c-145bae80c9b4",
            "name": "Sticky Note5",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1320,
                0
            ],
            "parameters": {
                "color": 2,
                "width": 380,
                "height": 240,
                "content": "\ud83d\udcdd SAVING TO NOTION \ud83d\udcdd\n- Extracted transaction data is saved here.\n- Configure with your Notion API key & Database ID.\n- Map fields correctly to your database columns!"
            },
            "typeVersion": 1
        },
        {
            "id": "9406306b-9f3d-4877-a888-1f5e16a431c1",
            "name": "Sticky Note6",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                20,
                760
            ],
            "parameters": {
                "height": 280,
                "content": "REPORTING SCHEDULE \ud83d\uddd3\ufe0f\nSet how often you want to receive your spending report (e.g., weekly, monthly)."
            },
            "typeVersion": 1
        },
        {
            "id": "1b6c8a28-b0f0-44fb-be02-21725d950716",
            "name": "Sticky Note7",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                320,
                760
            ],
            "parameters": {
                "color": 2,
                "width": 280,
                "height": 380,
                "content": "\ud83d\udcca FETCHING DATA FOR REPORT \ud83d\udcca\n- Retrieves transactions from Notion for the report period.\n- Default: \"Past Week\". Adjust filter as needed.\n- Requires Notion API credentials & Database ID."
            },
            "typeVersion": 1
        },
        {
            "id": "4612006e-04a9-4ad5-9f05-d49ec13f31cf",
            "name": "Sticky Note8",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                660,
                740
            ],
            "parameters": {
                "width": 320,
                "height": 360,
                "content": "\u2795 SUMMARIZING SPENDING \u2795\nAggregates your expenses, usually by category,\nto prepare for the chart."
            },
            "typeVersion": 1
        },
        {
            "id": "103132cf-37a6-455f-b19f-14d3e17af912",
            "name": "Sticky Note9",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1040,
                740
            ],
            "parameters": {
                "width": 300,
                "height": 340,
                "content": "\ud83d\udcc8 GENERATING VISUAL REPORT \ud83d\udcc8\nCreates the actual chart image based on your spending data.\nYou can customize chart type (bar, pie, etc.) here."
            },
            "typeVersion": 1
        },
        {
            "id": "24324366-33e5-4097-ab36-aac31cef0006",
            "name": "Sticky Note10",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1380,
                640
            ],
            "parameters": {
                "color": 6,
                "width": 300,
                "height": 300,
                "content": "\ud83d\udce4 SENDING REPORT TO TELEGRAM \ud83d\udce4\n- Delivers the generated chart to your chosen Telegram chat\/group.\n- Set the correct Chat ID and Bot API token."
            },
            "typeVersion": 1
        },
        {
            "id": "e9fc1140-411b-411a-87a6-bbe9718ba3b3",
            "name": "Sticky Note11",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1320,
                280
            ],
            "parameters": {
                "color": 6,
                "width": 300,
                "height": 280,
                "content": "\ud83d\udcac TRANSACTION SUMMARY \ud83d\udcac\nSends a confirmation message back to the user in Telegram\nwith a summary of the recorded expense."
            },
            "typeVersion": 1
        },
        {
            "id": "013fd587-3504-44b8-97e1-09cad47a0089",
            "name": "Sticky Note12",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                40,
                360
            ],
            "parameters": {
                "color": 7,
                "width": 460,
                "height": 240,
                "content": "  \ud83d\udd11 CREDENTIALS NEEDED \ud83d\udd11\n  Remember to set up API keys\/tokens for:\n  - Telegram\n  - Google Gemini\n  - Notion\n\n  \ud83d\udca1 CUSTOMIZE ME! \ud83d\udca1\n  - Adjust AI prompts for better accuracy.\n  - Change Notion database structure.\n  - Modify report frequency and content.\n"
            },
            "typeVersion": 1
        },
        {
            "id": "8f6f0fdb-d3be-4464-a7db-ea4d642a4f55",
            "name": "Telegram",
            "type": "n8n-nodes-base.telegram",
            "position": [
                320,
                160
            ],
            "webhookId": "6e801e0b-72d1-42a9-ac47-61ac113a01d2",
            "parameters": {
                "fileId": "={{ $json.message.photo[3].file_id }}",
                "resource": "file"
            },
            "credentials": {
                "telegramApi": {
                    "id": "J8yRVYmsnH74HuaD",
                    "name": "Telegram account"
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        }
    ],
    "active": true,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "a192c50c-4a77-44ee-b98a-f18d4ced2cb1",
    "connections": {
        "Telegram": {
            "main": [
                [
                    {
                        "node": "Get Image Info",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Generate Chart": {
            "main": [
                [
                    {
                        "node": "Send Chart Image to Group or Private Chat",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get Image Info": {
            "main": [
                [
                    {
                        "node": "Basic LLM Chain",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Basic LLM Chain": {
            "main": [
                [
                    {
                        "node": "Split Out | data transaction",
                        "type": "main",
                        "index": 0
                    },
                    {
                        "node": "Sendback to chat and give summarize text",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Google Gemini Chat Model": {
            "ai_languageModel": [
                [
                    {
                        "node": "Basic LLM Chain",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "Summarize Transaction Data": {
            "main": [
                [
                    {
                        "node": "Convert Data to JSON chart payload",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get Recent Data from Notions": {
            "main": [
                [
                    {
                        "node": "Summarize Transaction Data",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Parse To your object | Table": {
            "ai_outputParser": [
                [
                    {
                        "node": "Basic LLM Chain",
                        "type": "ai_outputParser",
                        "index": 0
                    }
                ]
            ]
        },
        "Split Out | data transaction": {
            "main": [
                [
                    {
                        "node": "Record To Notion Database",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Convert Data to JSON chart payload": {
            "main": [
                [
                    {
                        "node": "Generate Chart",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Telegram Trigger | When recive photo": {
            "main": [
                [
                    {
                        "node": "Telegram",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Schedule Trigger | for send chart report": {
            "main": [
                [
                    {
                        "node": "Get Recent Data from Notions",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Crypto Airtable Update Webhook
View
Respondtowebhook Stickynote Automate Webhook
View
Manual Graphql Automate Triggered
View
TopSourcer - Finds LinkedIn Profiles using natural language
View
Manual Filter Update Webhook
View
Extract information from an image of a receipt
View
Schedule Spotify Create Scheduled
View
Fine-tuning with OpenAI models
View
Create, update and get a contact in Google Contacts
View
Schedule Gmail Send Scheduled
View