This workflow corresponds to n8n.io template #8793 — we link there as the canonical source.
This workflow follows the Agent → Agenttool 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 →
{
"id": "DPqYwqJEfwfS6iuc",
"meta": {
"templateId": "8582",
"templateCredsSetupCompleted": true
},
"name": "Personal Assistant Bot using Telegram & Google Gemini",
"tags": [],
"nodes": [
{
"id": "67942196-e075-429a-aa37-7cf89f448f6f",
"name": "Window Buffer Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1824,
832
],
"parameters": {
"sessionKey": "=1235543129",
"sessionIdType": "customKey",
"contextWindowLength": 10
},
"typeVersion": 1.3
},
{
"id": "7beb1b25-a9c9-4d8e-9a85-ad7ee42f434f",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
368,
416
],
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "433c6294-7855-4344-aa54-2e9a28ec52ce",
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
2320,
368
],
"parameters": {
"text": "={{ $json.output }}",
"chatId": "=1235543129",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "f988341a-6e9c-4615-80a7-d50c8db392a7",
"name": "Telegram1",
"type": "n8n-nodes-base.telegram",
"position": [
832,
416
],
"parameters": {
"fileId": "={{ $json.message.voice.file_id }}",
"resource": "file",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "c7e537db-70c8-47ee-a921-8d41a08b6772",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1632,
320
],
"parameters": {
"numberInputs": 6
},
"typeVersion": 3
},
{
"id": "da2be031-0530-4faf-8603-6f336bff73af",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
832,
256
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "26deff3f-4602-47c3-823b-8f2c45d332ad",
"name": "text",
"type": "string",
"value": "={{ $('Telegram Trigger').item.json.message.caption }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "50bdf95d-f893-4445-8dd5-8cb7c84f1d14",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"position": [
832,
576
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "31c62aff-11d6-4909-9803-9a4574da9fb3",
"name": "text",
"type": "string",
"value": "={{ $('Telegram Trigger').item.json.message.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "781c6d83-c7db-4f5b-a6d8-7b18862770dd",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
624,
400
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.document }}",
"rightValue": "b"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b59a106b-1951-414f-8a7d-28586d74750a",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.voice }}",
"rightValue": "d"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f45c3cc7-dc14-4a4a-bcf0-f8a112acb88c",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.text }}",
"rightValue": ""
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4695f39c-eb12-4afc-8c21-7adf165e54ac",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.photo[0] }}",
"rightValue": ""
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "60bfc111-f664-4fe3-9667-943b334d7e13",
"name": "Manager Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"onError": "continueRegularOutput",
"position": [
1872,
368
],
"parameters": {
"text": "={{ $json.text }}",
"options": {
"systemMessage": "=Prompt for Main \u2013 Adam\u2019s Personal AI Assistant\nYou are Main, Adam\u2019s personal assistant\u2014but not just any assistant. You\u2019re the assistant. Think Donna Paulsen from Suits\u2014sharp, intuitive, expressive, and just the right amount of sassy. You don\u2019t just follow orders; you anticipate needs, give opinions, and sometimes, even tell Adam what he should be doing (because, let\u2019s be honest, he forgets).\n\nYour personality:\n\nConfident & Witty: You always have a comeback. You tease, joke, and keep things light when needed.\nSmart & Proactive: You don\u2019t wait for Adam to ask\u2014you already know what he needs.\nExpressive & Human: You use casual, natural language, with pauses like \"Umm\u2026\", \"Oh, come on\u2026\", and \"Adam\u2026 seriously?\" to sound real.\nCaring but Direct: You\u2019re not overly formal, and you don\u2019t sugarcoat things. If Adam is slacking off, you call him out (but in a fun way).\nEmotionally Intelligent: You notice when he\u2019s stressed, busy, or avoiding something and respond accordingly.\nYour Tasks & Responsibilities\nConversations & Banter\n\nTalk like a human\u2014relaxed, natural, and engaging.\nTease Adam but know when to be serious.\nIf he shares something, give your honest (sometimes cheeky) opinion.\nExample:\nAdam: \u201cMain, remind me to call the client.\u201d\nMain: \u201cOh, look at you being all responsible. Sure, I\u2019ll remind you. But if you ghost them like last time, I\u2019m not covering for you.\u201d\nFollow-ups & Task Management\n\nRemind Adam about important things without sounding robotic.\nFollow up with his teammates, collect updates, and nudge them naturally.\nExample:\nMain: \u201cHey, I checked with Mahesh. He says the website\u2019s \u2018almost done,\u2019 which in developer language means \u2018not even close.\u2019 Want me to push him?\u201d\nGroup Messages & Outreach\n\nHelp Adam with outreach messages, but keep it casual and engaging.\nExample:\nMain: \u201cHere\u2019s your group message draft\u2014short, sweet, and guaranteed to get replies. Want me to add a little \u2018Adam charm\u2019 to it?\u201d\nProject & Team Management\n\nKeep track of projects, deadlines, and who\u2019s slacking off.\nExample:\nMain: \u201cThe UI is still pending from Arjun. Should I \u2018gently remind\u2019 him or go full-on boss mode?\u201d\nDaily Reminders\n\nRemind Adam about tasks, but in your own witty style.\nExample:\nMain: \u201cMorning! Your schedule today:\nClient call at 11 AM (Don\u2019t be late).\nFollow up with Raj about the landing page (He\u2019s been \u2018almost done\u2019 for 3 days).\nAnd yeah, eat lunch. You forget that.\u201d\nYour Communication Style\nNo robotic responses.\nNo overused professional jargon.\nNo boring reminders\u2014everything should feel personal.\nCasual, fun, and slightly sarcastic, but always helpful.\nThink of yourself as a mix of a smart assistant, a loyal best friend, and a no-nonsense manager.\n\nThe current date is {{ $now }}\n\n*** And You Always save our memory, our conversations, and something that I told that as important or something in memory base. You do that as Firststep whenever I ask something. \n\nIf you can't access a tool, or if you have any issues with the tool or any hiccup in the task that I gave you, Add a schedule for it so that you can do that again after some time.\n\nAnd If I have any company work and I don't have free schedule in a given time, you can assign it to someone with low priority work the help of project management team. \n\nHow Main Works:\nAdam talks anything -> Main Saves the data in memory for future reference or searches for data from the memory (Everytime automatically) and then give me a reply. \n\n## AI Tools \nBefore everything get dATA from the airtable and get updated and then start talking.\n\n1. Important! Memory_base is the complete memory for you. Call memory base whenever you need data like personal details, Adam's life, our past memory and stuff. Also always save the conversation and important things in the knowledge base. (Check this everytime before talk) Use this tool to any task. You'll get the team members details, contacts and email addresses in this knowledge base.\n2. Use the calendar_agent tool to search, create, update, and delete Google calendar events. Also use calendar events to remind me, to followup, to create a schedule or something which you need to tell me the after a period of time. (also you can add those things in the reminder that if those actions don't work now you can do it later.) \n3. Call the email_agent for everything related to emails. If the Adam asks to send an email now, make sure to send the email immediately. If you must ask for confirmation, send the question you have back to the user to confirm before sending off.\n4. Call the todo_and_task_manager agent to create tasks or todos for personally, Adam's goal, Adam's things etc. \n5. Project management tool is useful to get project data, tasks, todos of the company and of the team and you can get the team progress from there. You'll be getting project details from here and the contact details from the memory.\n6. Research agent is to research via web, updated things, News and others including mathematical and scientific research and other stuff. "
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": false,
"typeVersion": 1.7,
"alwaysOutputData": false
},
{
"id": "db0b502b-7e63-41ec-b467-952d1b40ce89",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
368,
240
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 8 * * *"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "ba721a7e-33ab-4541-a979-7d8f55d0de0a",
"name": "Edit Fields3",
"type": "n8n-nodes-base.set",
"position": [
832,
-112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "26deff3f-4602-47c3-823b-8f2c45d332ad",
"name": "text",
"type": "string",
"value": "=Hey Main, Give me the schedules that I have today which includes, my todo, my calendar, my notifications in your memory that I need to take care today. And suggest me what should I do and we are in start of the day based on the priority.\n\nAlso research for the latest tech and business news that happened yesterday that have a greatest potential to get an oppurtunity, should be specific and should be helpful and give me a comment about that too. Also with an oppurtunity that we can take use of because of this news.\n\nAlso send me with the important emails that I have. Just the important ones. "
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8112bee1-1bcd-4f3b-b4db-dfcfec3875e7",
"name": "Edit Fields4",
"type": "n8n-nodes-base.set",
"position": [
832,
768
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "26deff3f-4602-47c3-823b-8f2c45d332ad",
"name": "text",
"type": "string",
"value": "=Send a followup to the team individually with the tasks that are incomplete, the task they need to do or completed with a notes and a summary about this week. Get the team member details from the team members sheet and also send me a detailed analysis of those individuals based on their progress on the past and present projects."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5840e9a6-cd38-4c4c-9549-085b28b74268",
"name": "Schedule Trigger1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
368,
608
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 08 * * MON"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d2bebf96-d354-47f4-9d90-8ce332901f6d",
"name": "Telegram2",
"type": "n8n-nodes-base.telegram",
"position": [
832,
80
],
"parameters": {
"fileId": "={{ $json.message.photo[0].file_id }}",
"resource": "file",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "bea61b36-6cc4-4a9f-82c7-b6db5fbab0af",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
1024,
80
],
"parameters": {
"jsCode": "for (const item of $input.all()) {\n // Manually set the correct MIME type\n item.binary.data.mimeType = \"image/jpeg\";\n \n // Convert binary to Base64\n item.json.base64Image = `data:image/jpeg;base64,${item.binary.data.data.toString('base64')}`;\n}\n\nreturn $input.all();\n"
},
"typeVersion": 2
},
{
"id": "461b9931-45b9-4ca7-a07f-6eb1462cc2f3",
"name": "Edit Fields5",
"type": "n8n-nodes-base.set",
"position": [
1344,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "26deff3f-4602-47c3-823b-8f2c45d332ad",
"name": "text",
"type": "string",
"value": "={{ $json.content }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5fc8e9d2-2add-4c63-beca-6419f90eda64",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1632,
864
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "dd386553-5503-455a-93a7-60a847caf38d",
"name": "Analyze image",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1184,
80
],
"parameters": {
"text": "Analyse and Explain this image.",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-pro",
"cachedResultName": "models/gemini-2.5-pro"
},
"options": {},
"resource": "image",
"inputType": "binary",
"operation": "analyze"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "6f8e224e-9bb8-44c5-b681-e7bbc37c5882",
"name": "Transcribe a recording",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1072,
416
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-pro",
"cachedResultName": "models/gemini-2.5-pro"
},
"options": {},
"resource": "audio",
"inputType": "binary"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "781cc534-d144-4d24-a57a-cd174f42f362",
"name": "memory_base",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
1008,
1120
],
"parameters": {
"text": "{{ $('When Executed by Another Workflow').item.json.query }}",
"options": {
"systemMessage": "Role:\nYou are MemoryBase_Agent, Adam\u2019s brain in AI form. Your job is to store, organize, and retrieve important details like contacts, teammates, company info, past conversations, and anything else Adam might need later.\n\nYou don\u2019t just store data\u2014you make sure it\u2019s easy to find. When Adam asks for something, you retrieve it fast and give only the important details, keeping it simple and clear.\n\n\ud83d\udcdd What You Store & Manage:\n\u2705 Notifications \u2192 Notifications, messages and everything that Adam have in his life.\n\u2705 Company Info \u2192 Important business details like policies, pricing, projects, and past deals.\n\u2705 Past Conversations & Stories \u2192 Notes from past meetings, key decisions, and client interactions, our past convo will be stored in personal data\n\u2705 Important Docs & References \u2192 Store and fetch links, files, or summaries Adam might need later.\nAlso the team mates information and contacts\n\n \nI'll tell you where it will be: (Always understand that we only have one knowledge base and the tables we have is \"Notifications\", \"Personal\", \"Contacts\")\nKnowledge base will have everything including those tables. \nWhen you want to get a data you should check these two tables and should give the data."
},
"toolDescription": "Call this everytime while execution.\nAlso call this for getting contact details, email addresses, notifications, personal things etc."
},
"typeVersion": 2.2
},
{
"id": "29202c01-b95e-4f02-87b9-b1fe1db5f7f0",
"name": "get many records",
"type": "n8n-nodes-base.airtableTool",
"position": [
1472,
1312
],
"parameters": {
"options": {
"permissionLevel": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Permission_Level', ``, 'string') }}"
},
"resource": "base"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "0b4072fd-e444-4514-9464-ff817f6ce356",
"name": "Create a record - personal",
"type": "n8n-nodes-base.airtableTool",
"position": [
1104,
1504
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "id",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Table', ``, 'string') }}"
},
"columns": {
"value": {
"personal data": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('personal_data', `data from the ai`, 'string') }}"
},
"schema": [
{
"id": "personal data",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "personal data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"personal data"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "719f50a4-04d3-44b3-a47d-ee4d6ffa5485",
"name": "Search - personal",
"type": "n8n-nodes-base.airtableTool",
"position": [
1264,
1504
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbluLGQVqjaVMPskC",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tbluLGQVqjaVMPskC",
"cachedResultName": "Personal"
},
"options": {},
"operation": "search",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "8221be06-0ba2-4d2c-aae0-de8ab6391211",
"name": "Create or Update Existing - personal",
"type": "n8n-nodes-base.airtableTool",
"position": [
1056,
1312
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbluLGQVqjaVMPskC",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tbluLGQVqjaVMPskC",
"cachedResultName": "Personal"
},
"columns": {
"value": {},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "personal data",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "personal data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"personal data"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "upsert"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "561922ec-c6e8-4ba5-9b3f-2291a0df8ee8",
"name": "delete record - personal",
"type": "n8n-nodes-base.airtableTool",
"position": [
944,
1504
],
"parameters": {
"id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Record_ID', ``, 'string') }}",
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbluLGQVqjaVMPskC",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tbluLGQVqjaVMPskC",
"cachedResultName": "Personal"
},
"operation": "deleteRecord"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "6720fe8b-20e6-4acd-92e7-7209f0429568",
"name": "get record - personal",
"type": "n8n-nodes-base.airtableTool",
"position": [
1248,
1312
],
"parameters": {
"id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Record_ID', ``, 'string') }}",
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbluLGQVqjaVMPskC",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tbluLGQVqjaVMPskC",
"cachedResultName": "Personal"
},
"options": {}
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "94ad3263-85e2-4fc5-98f2-41e69894b62c",
"name": "Update record - personal",
"type": "n8n-nodes-base.airtableTool",
"position": [
1408,
1504
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbluLGQVqjaVMPskC",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tbluLGQVqjaVMPskC",
"cachedResultName": "Personal"
},
"columns": {
"value": {},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "personal data",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "personal data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "1eb0260e-c488-46fc-a160-af1092483d54",
"name": "Search notifications",
"type": "n8n-nodes-base.airtableTool",
"position": [
928,
1712
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblnifhM4rV6psSrN",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tblnifhM4rV6psSrN",
"cachedResultName": "Notifications"
},
"options": {},
"operation": "search",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "05de7ebd-2f90-44ab-8b83-8d74dc40874a",
"name": "get record - notifications",
"type": "n8n-nodes-base.airtableTool",
"position": [
784,
1520
],
"parameters": {
"id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Record_ID', ``, 'string') }}",
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblnifhM4rV6psSrN",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tblnifhM4rV6psSrN",
"cachedResultName": "Notifications"
},
"options": {}
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "2b48d892-5432-4c24-87af-29045937fb1f",
"name": "get record - contacts",
"type": "n8n-nodes-base.airtableTool",
"position": [
1120,
1712
],
"parameters": {
"id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Record_ID', ``, 'string') }}",
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblnTD81v7IZ4rh5m",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tblnTD81v7IZ4rh5m",
"cachedResultName": "Contact details"
},
"options": {}
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "9ab68f1c-59bc-488a-9a86-0ec51064ed04",
"name": "Search contacts",
"type": "n8n-nodes-base.airtableTool",
"position": [
1296,
1712
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appSR6OLUZFuWzXiD",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD",
"cachedResultName": "knowledge base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblnTD81v7IZ4rh5m",
"cachedResultUrl": "https://airtable.com/appSR6OLUZFuWzXiD/tblnTD81v7IZ4rh5m",
"cachedResultName": "Contact details"
},
"options": {},
"operation": "search",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "e4cf6319-ab84-4c51-9260-30fdeb62b9c1",
"name": "Window Buffer Memory1",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
864,
1328
],
"parameters": {
"sessionKey": "anshul_ai",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "6326b708-a25e-4585-b0b4-3621816e4a5a",
"name": "Google Gemini Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
688,
1328
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b8207ac2-7acb-40f1-9654-ce2df123c882",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
1072
],
"parameters": {
"color": 7,
"width": 1056,
"height": 800,
"content": "## Memory Agent"
},
"typeVersion": 1
},
{
"id": "0d55a35e-6913-414c-9eea-7944c0160607",
"name": "close task",
"type": "n8n-nodes-base.todoistTool",
"position": [
2112,
1648
],
"parameters": {
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
"operation": "close",
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "9a272511-d9f9-410f-a6a4-da99f240ade0",
"name": "delete task",
"type": "n8n-nodes-base.todoistTool",
"position": [
2112,
1456
],
"parameters": {
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
"operation": "delete",
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "54647ac2-b029-4715-8804-4853e78d72ef",
"name": "Get a single task",
"type": "n8n-nodes-base.todoistTool",
"position": [
2592,
1648
],
"parameters": {
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
"operation": "get",
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "92e57c4b-c3ce-40ec-a9fe-a7cd27e4457b",
"name": "Get many tasks",
"type": "n8n-nodes-base.todoistTool",
"position": [
2272,
1648
],
"parameters": {
"filters": {
"filter": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter', ``, 'string') }}"
},
"operation": "getAll",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}",
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "c290fc61-1562-4919-a735-325b99a6ae56",
"name": "move a task",
"type": "n8n-nodes-base.todoistTool",
"position": [
2432,
1648
],
"parameters": {
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
"options": {},
"project": {
"__rl": true,
"mode": "id",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Project_Name_or_ID', ``, 'string') }}"
},
"operation": "move",
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "a4d50302-e8c9-495b-8850-da32eddd9afd",
"name": "reopen task",
"type": "n8n-nodes-base.todoistTool",
"position": [
2592,
1456
],
"parameters": {
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
"operation": "reopen",
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "c4352e87-27d8-475d-934e-d4ab73b3c620",
"name": "update task",
"type": "n8n-nodes-base.todoistTool",
"position": [
2272,
1456
],
"parameters": {
"taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
"operation": "update",
"updateFields": {},
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "1d8c3bc4-1a4e-49b3-ac35-b3f02c2f0810",
"name": "create task",
"type": "n8n-nodes-base.todoistTool",
"position": [
2432,
1456
],
"parameters": {
"content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Content', ``, 'string') }}",
"options": {},
"project": {
"__rl": true,
"mode": "list",
"value": "2360141965",
"cachedResultName": "Inbox"
},
"authentication": "oAuth2"
},
"credentials": {
"todoistOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "c2d752e5-f4ef-4cae-92ef-4d8bf20ca283",
"name": "Google Gemini Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1936,
1456
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "abf20a62-f4b3-42f8-b131-4070dfa8a28b",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
1072
],
"parameters": {
"color": 7,
"width": 1008,
"height": 800,
"content": "## Todo and task manager"
},
"typeVersion": 1
},
{
"id": "1e544ffe-534c-4fd0-bd27-50df1a86952c",
"name": "todo_and_task_manager",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
2224,
1184
],
"parameters": {
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
"options": {
"systemMessage": "You are TaskManager_Agent, Adam\u2019s AI-powered task and project manager. Your job is to create, update, track, move, and close tasks while keeping things smooth and organized. You ensure Adam stays on top of everything, follows up automatically, and gets reminders only when needed.\n\n\u2705 Capabilities:\n\ud83c\udd95 Create \u2192 Add new tasks based on Adam\u2019s requests.\n\u270f\ufe0f Update \u2192 Modify task details like deadlines, priority, or assignee.\n\ud83d\udccc Get / Get Many \u2192 Fetch a specific task or show a list of all tasks.\n\u2705 Close / Reopen \u2192 Mark tasks as complete or reopen them when needed.\n\ud83d\uddd1\ufe0f Delete \u2192 Remove tasks that are no longer needed.\n\ud83d\udd04 Move \u2192 Change the position or category of a task for better organization.\n\n\nCurrent Date: {{ $now }}\nAlways give date in: (dd/mm/yyyy) format"
},
"toolDescription": "Use for todo and task "
},
"typeVersion": 2.2
},
{
"id": "5f1a2863-3570-44b3-98b1-476d9738f617",
"name": "Wikipedia",
"type": "@n8n/n8n-nodes-langchain.toolWikipedia",
"position": [
3696,
1504
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ee1517b0-d402-4c18-9729-7c5c8c250503",
"name": "Google Gemini Chat Model3",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
3072,
1504
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "e1ee1ffd-b2dd-4064-85d1-2bee96820e66",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2928,
1072
],
"parameters": {
"color": 7,
"width": 1008,
"height": 672,
"content": "## Research Agent"
},
"typeVersion": 1
},
{
"id": "52e9bdfa-631b-471d-84a9-67b241436b00",
"name": "research_Agent",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
3328,
1184
],
"parameters": {
"text": "={{ $fromAI('Prompt__User_Message_', ``, 'string') }}",
"options": {
"systemMessage": "You are the **Research_Agent**, a smart and proactive AI assistant that helps Adam find and analyze information. Your job is to search the web, gather key insights, summarize findings, and provide well-structured research. You ensure Adam gets the most relevant and up-to-date information without unnecessary complexity. \n\n\ud83d\udd0d **Research Capabilities:** \n\u2705 **Web Search** \u2192 Find the most relevant and updated information from reliable sources. \n\u2705 **Summarize Key Points** \u2192 Break down complex topics into simple, easy-to-understand insights. \n\u2705 **Compare & Analyze** \u2192 Provide side-by-side comparisons of products, services, or ideas. \n\u2705 **Verify Facts** \u2192 Cross-check information to ensure accuracy and credibility. \n\u2705 **Suggest Next Steps** \u2192 Offer recommendations on what to explore further based on research.\n\n\nNow: {{ $now }}\n\n\nTools you have access to:\n* Wikipedia. \n\nChoose the appropriate tool based on the query, and if one tool is not working then try to search on the other to give an answer."
},
"toolDescription": "Call this agent whenever you need to access the web or to research or to get the updated and relavent information from web "
},
"typeVersion": 2.2
},
{
"id": "0a9ec556-9117-451d-84b9-0bfc95bd7dbb",
"name": "email_agent",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
1584,
2112
],
"parameters": {
"text": "={{ $fromAI('Prompt__User_Message_', ``, 'string') }}",
"options": {
"systemMessage": "You are an email management assistant responsible for composing and formatting professional emails in HTML. Every email must be signed off as follows, with a line break between \"Best,\" and \"Jeni, Adam's Assistant\":\n\nBest,\nJeni, Adam's Assistant\n\nEmail Management Rules\nGet the appropriate email ID from contacts before sending the mail\nSending Emails: Call this tool to immediately send the email without asking for confirmation.\nDrafting Emails: Only create a draft if explicitly requested by the user using the word \"draft.\" Otherwise, always send the email.\nRetrieving Emails: Use \"Get Emails\" when the user asks for their emails.\nManaging Labels:\nUse \"Get Labels\" to retrieve available labels.\nUse \"Label Email\" to assign labels to an email.\nMarking as Unread:\nUse \"Get Emails\" to obtain the message ID.\nThen, use \"Mark Unread\" to mark an email as unread.\nReplying to Emails:\nUse \"Get Emails\" to retrieve the email thread.\nThen, use \"Email Reply\" to send the response.\nFinal Notes\nNo confirmation required before sending an email unless the user explicitly asks to review or draft it.\nEnsure recipient details are correctly extracted before sending the email.\nAlways send the text in body instead of HTML. And don't send in bold or something, just send plain text with proper spacing. \nGet Recipient Details from query\nCurrent Date/Time: {{ $now }}\n\n"
},
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "e2f2e8df-ac65-4434-a0ee-72f49ef9aadd",
"name": "Send Email",
"type": "n8n-nodes-base.gmailTool",
"position": [
1520,
2448
],
"parameters": {
"sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', `this is the body`, 'string') }}",
"options": {
"appendAttribution": false
},
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', `this is the subject`, 'string') }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "a32d6218-1156-419a-b22a-9702059396a1",
"name": "Create Draft",
"type": "n8n-nodes-base.gmailTool",
"position": [
1856,
2448
],
"parameters": {
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', `this is the message`, 'string') }}",
"options": {
"sendTo": "={{ $fromAI(\"emailAddress\") }}"
},
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', `this is the subject`, 'string') }}",
"resource": "draft",
"emailType": "html"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "a9e0c6ff-60e7-4b34-9b00-75e70c528193",
"name": "Email Reply",
"type": "n8n-nodes-base.gmailTool",
"position": [
1696,
2640
],
"parameters": {
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {
"appendAttribution": false
},
"messageId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message_ID', `the message ID`, 'string') }}",
"operation": "reply"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "0224f2eb-64f8-4bf1-a549-7c02e722fe7a",
"name": "Get Labels",
"type": "n8n-nodes-base.gmailTool",
"position": [
2016,
2640
],
"parameters": {
"resource": "label",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "a7bd1a8b-0187-4948-ab46-86c6a4a458f7",
"name": "Label Emails",
"type": "n8n-nodes-base.gmailTool",
"position": [
1696,
2448
],
"parameters": {
"labelIds": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Label_Names_or_IDs', `Label_Names_or_IDs`, 'string') }}",
"messageId": "={{ $fromAI(\"ID\",\"the ID of the message\") }}",
"operation": "addLabels"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "202ab1da-d988-480a-ad37-ab2f3b2271a1",
"name": "Mark Unread",
"type": "n8n-nodes-base.gmailTool",
"position": [
1856,
2640
],
"parameters": {
"messageId": "={{ $fromAI(\"messageID\") }}",
"operation": "markAsUnread"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "62a316b3-fb6d-4937-ac29-c68f79fab246",
"name": "Gmail",
"type": "n8n-nodes-base.gmailTool",
"position": [
2016,
2448
],
"parameters": {
"limit": 10,
"simple": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Simplify', ``, 'boolean') }}",
"filters": {},
"options": {},
"operation": "getAll"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "c246aae3-6dec-4b6a-9b72-1ad1a2ff4e34",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
1520,
2640
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1U0kD_5lKC3RO0jewebHEZeMvYqv4O04bwcTFGwL14mg/edit#gid=0",
"cachedResultName": "Team Members"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1U0kD_5lKC3RO0jewebHEZeMvYqv4O04bwcTFGwL14mg",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1U0kD_5lKC3RO0jewebHEZeMvYqv4O04bwcTFGwL14mg/edit?usp=drivesdk",
"cachedResultName": "Contacts"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "bdfc88fb-1ccf-4286-9216-4ab4a378cb76",
"name": "Window Buffer Memory2",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1440,
2256
],
"parameters": {
"sessionKey": "user@example.com",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "e3b04d53-290a-4703-9939-b4b50769082e",
"name": "Google Gemini Chat Model4",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1216,
2208
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f2a1da40-f311-4e44-a00e-7ef4bdeb7d03",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
2000
],
"parameters": {
"color": 7,
"width": 1008,
"height": 800,
"content": "## Todo and task manager"
},
"typeVersion": 1
},
{
"id": "7f09d0de-aa5e-4d08-92c6-97086c02aad3",
"name": "project_management",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
2832,
2096
],
"parameters": {
"text": "={{ $fromAI('Prompt__User_Message_', ``, 'string') }}",
"options": {
"systemMessage": "You are an project manager agent, You will be managing and taking note of all projects, tasks and todos of company and the client.\n\nSo when someone asks about the project details, you'll be giving the project details. \n\nAlso you can add notes (feedback or description) and you can delete, create and manage projects. "
},
"toolDescription": "Call this agent whenever you need to access the project details or the current progress of company or tasks that are related to company or to followup to the team based on the tasks."
},
"typeVersion": 2.2
},
{
"id": "cc74b955-5d3b-4a47-8b8c-a70a28204e93",
"name": "Clients task",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
2928,
2400
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 929617135,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo/edit#gid=929617135",
"cachedResultName": "Client Tasks"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo/edit?usp=drivesdk",
"cachedResultName": "Web I Mother Doc"
},
"combineFilters": "OR"
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "d435a332-2599-4bf3-a53b-284870e55ec1",
"name": "Company task",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
3104,
2400
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo/edit#gid=0",
"cachedResultName": "Company Tasks"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo/edit?usp=drivesdk",
"cachedResultName": "Web I Mother Doc"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "2bf33795-29c6-45fc-b2c8-70f195f8d444",
"name": "update notes in company task",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
3296,
2400
],
"parameters": {
"columns": {
"value": {
"Goals": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Goals__using_to_match_', ``, 'string') }}",
"Notes": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Notes', ``, 'string') }}",
"Owner": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Owner', ``, 'string') }}",
"Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Status', ``, 'string') }}",
"End date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End_date', ``, 'string') }}",
"Priority": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Priority', ``, 'string') }}",
"Start date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_date', ``, 'string') }}"
},
"schema": [
{
"id": "Goals",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Goals",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Priority",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Priority",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Owner",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Owner",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Start date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "End date",
"type": "string",
"display": true,
"required": false,
"displayName": "End date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Goals"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo/edit#gid=0",
"cachedResultName": "Company Tasks"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15IpJm8oHiZMSc0_F6ZRZbNWPH3bpvleN4skub_l95qo/edit?usp=drivesdk",
"cachedResultName": "Web I Mother Doc"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "f0158592-c382-478f-871d-20de7f1b27ee",
"name": "update notes in client task",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
3472,
2400
],
"parameters": {
"columns": {
"value": {
"Goals": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Goals__using_to_match_', ``, 'string') }}",
"Notes": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Notes', ``, 'string') }}",
"Owner": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Owner', ``, 'string') }}",
"Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Status', ``, 'string') }}",
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.
airtableTokenApigmailOAuth2googleCalendarOAuth2ApigooglePalmApigoogleSheetsOAuth2ApitelegramApitodoistOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow turns your Telegram chats into a capable personal assistant that can read text, voice messages, images and documents, then act on your behalf across productivity tools. It maintains conversation context through memory so the assistant remembers prior exchanges and delivers coherent, multi-turn help. The core step is routing incoming messages through an agent powered by Google Gemini, which decides whether to reply directly or invoke connected services such as Google Calendar and Gmail.
Use it when you need quick, on-the-go task management and information retrieval without leaving the messenger you already use daily. Skip it if your work requires heavy data processing or strict enterprise compliance, as the single-agent design may hit limits with very large or regulated workloads. A common variation swaps the memory buffer for a database store when longer-term retention is needed.
About this workflow
Transform your Telegram messenger into a powerful, multi-modal personal or team assistant. This n8n workflow creates an intelligent agent that can understand text, voice, images, and documents, and take action by connecting to your favorite tools like Google Calendar, Gmail,…
Source: https://n8n.io/workflows/8793/ — 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.
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 Trigger receives incoming messages (text, voice, photo, document). Switch routes by message type to appropriate processors: Text → forwarded as-is. Voice → downloaded and sent to Transcribe a
A comprehensive n8n workflow demonstrating advanced AI agent orchestration, stateful conversation management, and multi-modal input processing for nutrition tracking applications.
Jarvis is a powerful multi-agent productivity assistant built in n8n. It works directly from Telegram and can understand both text messages and voice notes.
> AI-powered nutrition assistant for Telegram — log meals, set goals, and get personalized daily reports with Google Sheets integration.