This workflow corresponds to n8n.io template #10290 — we link there as the canonical source.
This workflow follows the Agent → Gmail Tool 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 →
{
"name": "Track & Query expenses via Telegram (voice,text) to Google Sheets using AI",
"tags": [],
"nodes": [
{
"id": "928d4973-7705-45a1-af7f-6c371c15c53a",
"name": "Telegram Input",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
1136,
624
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "66532cda-8c54-4d31-85ae-b45446c6eadb",
"name": "Route by Message Type",
"type": "n8n-nodes-base.switch",
"position": [
1120,
992
],
"parameters": {},
"typeVersion": 3.3
},
{
"id": "9dda6df0-0fee-4915-9fe4-4c92db2b509d",
"name": "Check Voice Quality",
"type": "n8n-nodes-base.switch",
"position": [
1392,
720
],
"parameters": {},
"typeVersion": 3.3
},
{
"id": "153bd166-5b09-4ff3-915a-336b8ee7d324",
"name": "Send Processing Notification (Voice)",
"type": "n8n-nodes-base.telegram",
"position": [
1600,
592
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "e232b913-1fa2-4a1a-86d2-40610ddec858",
"name": "\ud83c\udf99\ufe0f Download Voice File",
"type": "n8n-nodes-base.telegram",
"position": [
1600,
848
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "08f5bd90-2114-411f-ad25-caf8bab96526",
"name": "Upload to AssemblyAI",
"type": "n8n-nodes-base.httpRequest",
"position": [
1792,
848
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "afc541b4-95a5-463a-955e-886df059f716",
"name": "Start Transcription",
"type": "n8n-nodes-base.httpRequest",
"position": [
1952,
784
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "28660a57-ba29-4d2d-8707-92d161e5d1ff",
"name": "Get Transcription Result",
"type": "n8n-nodes-base.httpRequest",
"position": [
2304,
784
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "e9dff5cb-bc4a-41ce-808e-e89b51e5f07a",
"name": "Check Transcription Status",
"type": "n8n-nodes-base.if",
"position": [
2480,
848
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "038f48cd-31a4-4260-8a4b-00df77f2d6d8",
"name": "Send Processing Notification (Text)",
"type": "n8n-nodes-base.telegram",
"position": [
1424,
1248
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "83705fc8-e107-4ae2-8ee3-eaeeda79388f",
"name": "Read Transaction History",
"type": "n8n-nodes-base.googleSheets",
"position": [
2784,
1248
],
"parameters": {},
"typeVersion": 4.7
},
{
"id": "32632cc1-c07e-4540-a43a-c0d77add2ea2",
"name": "Calculate Starting Balance",
"type": "n8n-nodes-base.code",
"position": [
2992,
880
],
"parameters": {},
"typeVersion": 2
},
{
"id": "6131fee5-c38a-4747-8cc0-1278d50643aa",
"name": "Append Transaction to Sheet",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
3296,
1376
],
"parameters": {},
"typeVersion": 4.7
},
{
"id": "abffd5e5-5e62-479e-bc88-af3ee0b905d7",
"name": "Read Sheet for Queries",
"type": "n8n-nodes-base.googleSheetsTool",
"notes": "Use this tool to read transaction data from the expense tracker sheet. You can retrieve all rows to answer questions about past transactions, spending patterns, categories, etc",
"position": [
3504,
1440
],
"parameters": {},
"typeVersion": 4.7
},
{
"id": "c6e7ad47-880e-4367-b113-c684ccbca564",
"name": "Send Low Balance Alert",
"type": "n8n-nodes-base.gmailTool",
"position": [
3664,
1408
],
"parameters": {},
"typeVersion": 2.1
},
{
"id": "fc266481-df01-4290-b9c2-6f6641dfc64e",
"name": "GPT-4.1 Mini Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2944,
1392
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "e9096a27-8871-40d0-957a-14eb3d55e771",
"name": "Conversation Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
3104,
1424
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "8a70e794-f277-46d0-adf3-e267099b85fd",
"name": "Generate Voice Response",
"type": "n8n-nodes-base.httpRequest",
"position": [
3920,
1152
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "14fe0eec-939d-484a-8596-c73bde3d1d21",
"name": "Send Voice to Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
4256,
1008
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "6243945a-fdee-4b23-a1a3-eb3a4e097c65",
"name": "Send Text to Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
4272,
1280
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "94fb4c69-b912-49a8-9352-eca8e33df3c5",
"name": "AI Expense Analyzer",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3248,
880
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "1604833f-0ae6-4a24-945e-bf8155993bf1",
"name": "Wait for Transcription",
"type": "n8n-nodes-base.wait",
"position": [
2128,
848
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "b0f405ba-57a6-491d-a670-2e99c31db2cb",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
400
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "154c57ad-7b0e-4c30-b421-6a192515d6a4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1344,
400
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "66792e3d-2ca6-4188-aa36-067f92d53b7d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1344,
1104
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "0b47e1f5-7df9-47c4-b9fd-ac4a6bf52ae9",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2656,
400
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "a0fe4d11-718b-46fa-b6bf-efaac2b9ae09",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
3792,
400
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "6673d4bf-2a4a-4539-abac-a5c625541f7d",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
3824,
944
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "4d5f85bd-70fa-4ede-b4e1-bbfaebd0c6b0",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
3824,
608
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "a892b23a-920e-4d29-ae59-6d06b6e61f45",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "02d8a9e8-e6eb-4ec8-93da-4266954653af",
"name": "Track API Costs",
"type": "n8n-nodes-base.code",
"position": [
3920,
704
],
"parameters": {},
"typeVersion": 2
},
{
"id": "cd0f2050-720d-4ba1-8e26-63fc541c9c20",
"name": "Log Cost to Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
4208,
704
],
"parameters": {},
"typeVersion": 4.7
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"connections": {
"Telegram Input": {
"main": [
[
{
"node": "Route by Message Type",
"type": "main",
"index": 0
}
]
]
},
"Track API Costs": {
"main": [
[
{
"node": "Log Cost to Sheet",
"type": "main",
"index": 0
}
]
]
},
"GPT-4.1 Mini Model": {
"ai_languageModel": [
[
{
"node": "AI Expense Analyzer",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Expense Analyzer": {
"main": [
[
{
"node": "Generate Voice Response",
"type": "main",
"index": 0
},
{
"node": "Track API Costs",
"type": "main",
"index": 0
}
]
]
},
"Check Voice Quality": {
"main": [
[
{
"node": "Send Processing Notification (Voice)",
"type": "main",
"index": 0
}
],
[
{
"node": "\ud83c\udf99\ufe0f Download Voice File",
"type": "main",
"index": 0
}
]
]
},
"Conversation Memory": {
"ai_memory": [
[
{
"node": "AI Expense Analyzer",
"type": "ai_memory",
"index": 0
}
]
]
},
"Start Transcription": {
"main": [
[
{
"node": "Wait for Transcription",
"type": "main",
"index": 0
}
]
]
},
"Upload to AssemblyAI": {
"main": [
[
{
"node": "Start Transcription",
"type": "main",
"index": 0
}
]
]
},
"Route by Message Type": {
"main": [
[
{
"node": "Check Voice Quality",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Processing Notification (Text)",
"type": "main",
"index": 0
}
]
]
},
"Read Sheet for Queries": {
"ai_tool": [
[
{
"node": "AI Expense Analyzer",
"type": "ai_tool",
"index": 0
}
]
]
},
"Send Low Balance Alert": {
"ai_tool": [
[
{
"node": "AI Expense Analyzer",
"type": "ai_tool",
"index": 0
}
]
]
},
"Wait for Transcription": {
"main": [
[
{
"node": "Get Transcription Result",
"type": "main",
"index": 0
}
]
]
},
"Generate Voice Response": {
"main": [
[
{
"node": "Send Voice to Telegram",
"type": "main",
"index": 0
},
{
"node": "Send Text to Telegram",
"type": "main",
"index": 0
}
]
]
},
"Get Transcription Result": {
"main": [
[
{
"node": "Check Transcription Status",
"type": "main",
"index": 0
}
]
]
},
"Read Transaction History": {
"main": [
[
{
"node": "Calculate Starting Balance",
"type": "main",
"index": 0
}
]
]
},
"Calculate Starting Balance": {
"main": [
[
{
"node": "AI Expense Analyzer",
"type": "main",
"index": 0
}
]
]
},
"Check Transcription Status": {
"main": [
[
{
"node": "Read Transaction History",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait for Transcription",
"type": "main",
"index": 0
}
]
]
},
"Append Transaction to Sheet": {
"ai_tool": [
[
{
"node": "AI Expense Analyzer",
"type": "ai_tool",
"index": 0
}
]
]
},
"\ud83c\udf99\ufe0f Download Voice File": {
"main": [
[
{
"node": "Upload to AssemblyAI",
"type": "main",
"index": 0
}
]
]
},
"Send Processing Notification (Text)": {
"main": [
[
{
"node": "Read Transaction History",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Track and query your expenses effortlessly through Telegram using voice or text messages. This AI-powered workflow transcribes voice input via AssemblyAI, processes transactions with a GPT-4.1 mini agent, stores data in Google Sheets with comprehensive timestamp metadata, and…
Source: https://n8n.io/workflows/10290/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
BoomerBobBot.TP. Uses agent, telegramTrigger, telegram, memoryBufferWindow. Event-driven trigger; 95 nodes.
Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.
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
Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.
Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.