AutomationFlowsAI & RAG › Whatsapp Productivity Assistant with Openai, Gmail, Calendar, Tasks &…

Whatsapp Productivity Assistant with Openai, Gmail, Calendar, Tasks &…

Original n8n title: Whatsapp Productivity Assistant with Openai, Gmail, Calendar, Tasks & Expense Tracking

ByJitesh Dugar @jiteshdugar on n8n.io

This template is designed for anyone who wants to use WhatsApp as a personal AI assistant hub. If you often juggle tasks, emails, calendars, and expenses across multiple tools, this workflow consolidates everything into one seamless AI-powered agent accessible right from your…

Event trigger★★★★★ complexityAI-powered53 nodesOpenAI ChatMemory Buffer WindowMcp Client ToolMcp TriggerGmail ToolGoogle Calendar ToolGoogle Tasks Tool@Elevenlabs/N8N Nodes Elevenlabs
AI & RAG Trigger: Event Nodes: 53 Complexity: ★★★★★ AI nodes: yes Added:
Whatsapp Productivity Assistant with Openai, Gmail, Calendar, Tasks &… — n8n workflow card showing OpenAI Chat, Memory Buffer Window, Mcp Client Tool integration

This workflow corresponds to n8n.io template #9295 — 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 →

Download .json
{
  "id": "5BpYCZtwsFK9Ic7O",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Jarvis on WhatsApp",
  "tags": [],
  "nodes": [
    {
      "id": "797f2391-12cd-4133-86a9-c081215220da",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -768,
        352
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0c132bdf-fbb0-47a6-baa1-32c13b3319c0",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -688,
        464
      ],
      "parameters": {
        "sessionKey": "=1",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "22ddaffe-21e1-47cd-adf6-531b55f3dc46",
      "name": "Gmail MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        -560,
        512
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "https://n8n.exildraw.com/mcp/906a5e01-3f46-444e-a3b7-51d2105eac16/sse"
      },
      "typeVersion": 1.1
    },
    {
      "id": "9c7c001f-9b49-467f-9fea-749a5ec8fd0c",
      "name": "Google Tasks MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        -272,
        448
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "https://n8n.exildraw.com/mcp/7bf1c961-4feb-4c31-919e-ff300c40406d"
      },
      "typeVersion": 1.1
    },
    {
      "id": "2216f1cd-5534-43cd-8a3f-3bb8ae7ca271",
      "name": "Gmail MCP Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -992,
        880
      ],
      "parameters": {
        "path": "906a5e01-3f46-444e-a3b7-51d2105eac16"
      },
      "typeVersion": 1
    },
    {
      "id": "c5d6ce71-bfaf-481d-ad76-512c6c9ba16e",
      "name": "Send Email",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -1120,
        1040
      ],
      "parameters": {
        "sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "dd52cb0f-4a58-4f02-8fff-700cc66b6efc",
      "name": "Reply to an Email",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -1024,
        1104
      ],
      "parameters": {
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {
          "ccList": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('CC', ``, 'string') }}",
          "bccList": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('BCC', ``, 'string') }}",
          "attachmentsUi": {
            "attachmentsBinary": [
              {
                "property": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Attachment_Field_Name', ``, 'string') }}"
              }
            ]
          },
          "appendAttribution": false
        },
        "emailType": "text",
        "messageId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message_ID', ``, 'string') }}",
        "operation": "reply",
        "descriptionType": "manual",
        "toolDescription": "Reply to an email message. AI-configurable parameters: Message_ID (string) - the ID of the message; Message (string) - the reply content; Attachment_Field_Name (string) - input field name containing attachments; BCC (string) - comma-separated BCC recipients; CC (string) - comma-separated CC recipients."
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "f228cfa4-e8d0-4b2b-91bd-948835adb37a",
      "name": "Get Emails",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -912,
        1168
      ],
      "parameters": {
        "filters": {
          "q": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Search', ``, 'string') }}",
          "receivedAfter": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Received_After', ``, 'string') }}",
          "receivedBefore": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Received_Before', ``, 'string') }}"
        },
        "operation": "getAll",
        "returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}",
        "descriptionType": "manual",
        "toolDescription": "Retrieve multiple email messages based on filters. AI-configurable parameters: Return_All (boolean) - whether to return all matching messages; Search (string) - Gmail query string to filter messages; Received_After (string) - datetime (RFC3339) after which messages are received; Received_Before (string) - datetime before which messages are received; Sender (string) - email address of the sender."
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "152951b9-22ef-4110-b75c-280d5a754f7b",
      "name": "Add Label to Email",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -816,
        1232
      ],
      "parameters": {
        "labelIds": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Label_Names_or_IDs', ``, 'string') }}",
        "messageId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message_ID', ``, 'string') }}",
        "operation": "addLabels",
        "descriptionType": "manual",
        "toolDescription": "Add one or more labels to an email message. AI-configurable parameters: Message_ID (string) - the ID of the message to label; Label_Names_or_IDs (string) - comma-separated label names or IDs to apply."
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "0187edc1-373c-4cc4-aa7f-3ba6e8a700ec",
      "name": "Get Labels",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -720,
        1184
      ],
      "parameters": {
        "resource": "label",
        "returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}",
        "descriptionType": "manual",
        "toolDescription": "Retrieve a list of labels. AI-configurable parameters: Return_All (boolean) - whether to return all labels."
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b511f985-b323-4dc3-9a45-8fed3a7b0e6c",
      "name": "Draft Email",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -640,
        1088
      ],
      "parameters": {
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {
          "ccList": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('CC', ``, 'string') }}",
          "sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To_Email', ``, 'string') }}",
          "bccList": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('BCC', ``, 'string') }}"
        },
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
        "resource": "draft",
        "emailType": "html",
        "descriptionType": "manual",
        "toolDescription": "Create an email draft. AI-configurable parameters: Subject (string) - the subject of the draft; Message (string) - the body of the draft; Attachment_Field_Name__in_Input_ (string) - input field name containing attachments; BCC (string) - comma-separated BCC recipients; CC (string) - comma-separated CC recipients."
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "d16c07c0-1ade-4fb6-9e97-fb6cd7076c18",
      "name": "Draft Email Reply",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -544,
        1008
      ],
      "parameters": {
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {
          "ccList": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('CC', ``, 'string') }}",
          "bccList": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('BCC', ``, 'string') }}",
          "threadId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Thread_ID', ``, 'string') }}"
        },
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
        "resource": "draft",
        "emailType": "html",
        "descriptionType": "manual",
        "toolDescription": "Draft a reply to an email. Use the thread_id parameter to pass the thread for which the email must be drafted"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ec555bb6-8710-4d72-b4a9-7d72840f7fb5",
      "name": "Check Availability",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -1856,
        928
      ],
      "parameters": {
        "options": {
          "timezone": {
            "__rl": true,
            "mode": "list",
            "value": "Asia/Kolkata",
            "cachedResultName": "Asia/Kolkata"
          }
        },
        "timeMax": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End_Time', ``, 'string') }}",
        "timeMin": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_Time', ``, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "user@example.com",
          "cachedResultName": "user@example.com"
        },
        "resource": "calendar",
        "descriptionType": "manual",
        "toolDescription": "Check if a slot is available on my calendar"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "562a5c02-1eb4-4e73-85b2-02be6f8d1c50",
      "name": "Get all Events",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -1760,
        1008
      ],
      "parameters": {
        "options": {
          "orderBy": "startTime",
          "timeZone": {
            "__rl": true,
            "mode": "list",
            "value": "Asia/Kolkata",
            "cachedResultName": "Asia/Kolkata"
          },
          "recurringEventHandling": "expand"
        },
        "timeMax": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Before', ``, 'string') }}",
        "timeMin": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('After', `Should be a future date and time`, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "user@example.com",
          "cachedResultName": "user@example.com"
        },
        "operation": "getAll",
        "returnAll": true,
        "descriptionType": "manual",
        "toolDescription": "Get future events on Google Calendar"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "94f5184c-fb74-4142-ad37-8e8924322c3d",
      "name": "Delete Calendar Event",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -1680,
        1120
      ],
      "parameters": {
        "eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', `Pass the event id of the event to delete`, 'string') }}",
        "options": {},
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "user@example.com",
          "cachedResultName": "user@example.com"
        },
        "operation": "delete",
        "descriptionType": "manual",
        "toolDescription": "Delete Calendar Event"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ec8f47d9-876f-4887-a345-b94391d68167",
      "name": "Reschedule Event",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -1552,
        1136
      ],
      "parameters": {
        "eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', `Pass the id of the event to reschedule or update`, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "user@example.com",
          "cachedResultName": "user@example.com"
        },
        "operation": "update",
        "updateFields": {
          "end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}",
          "start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}",
          "attendeesUi": {
            "values": {
              "mode": "replace",
              "attendees": [
                "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('attendees0_Attendees', ``, 'string') }}"
              ]
            }
          },
          "sendUpdates": "all"
        },
        "descriptionType": "manual",
        "toolDescription": "Update an event on Google Calendar",
        "useDefaultReminders": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Use_Default_Reminders', ``, 'boolean') }}"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "0b7fb455-1686-49b9-9f70-c16c37e99893",
      "name": "Get Event",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -1472,
        1024
      ],
      "parameters": {
        "eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', `Pass the event id`, 'string') }}",
        "options": {},
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "user@example.com",
          "cachedResultName": "user@example.com"
        },
        "operation": "get",
        "descriptionType": "manual",
        "toolDescription": "Get an event in Google Calendar"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "11983f80-70f6-4405-b546-af98ed243243",
      "name": "Create an event",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -1376,
        912
      ],
      "parameters": {
        "end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}",
        "start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "user@example.com",
          "cachedResultName": "user@example.com"
        },
        "descriptionType": "manual",
        "toolDescription": "Create an event on Google Calendar",
        "additionalFields": {
          "summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary', ``, 'string') }}",
          "visibility": "default",
          "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
        },
        "useDefaultReminders": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Use_Default_Reminders', ``, 'boolean') }}"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "5561dcfd-c9ad-4647-95fb-63929284a0b2",
      "name": "Calendar MCP Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -1744,
        752
      ],
      "parameters": {
        "path": "64e72cc1-3df0-4090-9522-d534c3f245aa"
      },
      "typeVersion": 1
    },
    {
      "id": "a23f3900-a2f8-44ed-a492-97ea87287f9f",
      "name": "Calendar MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        -224,
        336
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "https://n8n.exildraw.com/mcp/64e72cc1-3df0-4090-9522-d534c3f245aa/sse"
      },
      "typeVersion": 1.1
    },
    {
      "id": "118c89ef-6d7f-41f5-85ee-ccb2318e6c8c",
      "name": "Complete a Task",
      "type": "n8n-nodes-base.googleTasksTool",
      "position": [
        -2064,
        752
      ],
      "parameters": {
        "task": "MDM1NDg1NzcxMjIyNzg5NzQ1ODI6MDow",
        "taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', `Pass the task_id of the task to be completed`, 'string') }}",
        "operation": "update",
        "updateFields": {
          "status": "completed",
          "completed": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Completion_Date', `Pass the date when the task is completed`, 'string') }}"
        }
      },
      "credentials": {
        "googleTasksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e8349f65-94f3-43d5-8f80-134901786b49",
      "name": "Task Manager MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -2416,
        608
      ],
      "parameters": {
        "path": "7bf1c961-4feb-4c31-919e-ff300c40406d"
      },
      "typeVersion": 2
    },
    {
      "id": "49b6eb9a-346c-4554-9f8f-bc730a9cded8",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        -1920,
        288
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3421ce54-2c7c-4c87-ab7f-a4598eaa7f6b",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.messages[0].type }}",
                    "rightValue": "text"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Audio",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "85c06561-3e1d-4871-af64-f08e5f657b24",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.messages[0].type }}",
                    "rightValue": "audio"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "d2991d7d-9dc4-4910-9738-e633dd4a4f1c",
      "name": "Transcribe audio or video",
      "type": "@elevenlabs/n8n-nodes-elevenlabs.elevenLabs",
      "position": [
        -1184,
        384
      ],
      "parameters": {
        "resource": "speech",
        "operation": "speechToText",
        "requestOptions": {},
        "additionalOptions": {}
      },
      "credentials": {
        "elevenLabsApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "dbf8e88f-52e2-4db8-a23e-22ca7702073f",
      "name": "Finance Tracker",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        -464,
        576
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "https://n8n.exildraw.com/mcp/f226741c-0f79-4f23-96bf-d8eb47206bcf/sse"
      },
      "typeVersion": 1.1
    },
    {
      "id": "f2a36cc9-3972-4c1c-817d-603454e6b2a2",
      "name": "Finance Manager MCP Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "notes": "\ud83d\ude80 MCP TRIGGER\n\nThis is the entry point for AI interactions with Google Sheets. The MCP (Model Context Protocol) trigger allows AI models to call any of the connected Google Sheets tools based on user requests.\n\nKey Features:\n\u2022 Enables natural language spreadsheet commands\n\u2022 Routes AI requests to appropriate Sheets operations\n\u2022 Provides context-aware data management\n\u2022 Supports complex multi-step data workflows\n\u2022 Handles dynamic sheet and document selection",
      "position": [
        256,
        560
      ],
      "parameters": {
        "path": "f226741c-0f79-4f23-96bf-d8eb47206bcf"
      },
      "typeVersion": 1.1
    },
    {
      "id": "622aeab4-ae81-4715-8a40-e362194b96e5",
      "name": "Get all Expenses",
      "type": "n8n-nodes-base.googleSheetsTool",
      "notes": "\ud83d\udcca READ SPREADSHEET DATA\n\nRetrieve and analyze data from Google Sheets. Perfect for AI to read, process, and extract insights from spreadsheet content.\n\nUse Cases:\n\u2022 \"Read data from the Sales sheet\"\n\u2022 \"Get all entries from A1:E100\"\n\u2022 \"Show me the data in the Budget spreadsheet\"\n\u2022 \"Extract customer information from the CRM sheet\"\n\nAI Parameters:\n\u2022 Document_ID: Target spreadsheet ID\n\u2022 Sheet_Name: Specific sheet tab name\n\u2022 Range: Cell range to read (optional)",
      "position": [
        256,
        720
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs/edit?usp=drivesdk",
          "cachedResultName": "Expense Tracker"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "16d927a9-372e-4dff-a069-5f6cb6a1e70d",
      "name": "Create Expense",
      "type": "n8n-nodes-base.googleSheetsTool",
      "notes": "\ud83d\uddd1\ufe0f CLEAR SPREADSHEET DATA\n\nRemove data from specific ranges or entire sheets. Useful for resetting data, clearing temporary calculations, or preparing sheets for new data.\n\nUse Cases:\n\u2022 \"Clear all data from the temp sheet\"\n\u2022 \"Remove entries from A1:E100\"\n\u2022 \"Clean up the old data in column C\"\n\u2022 \"Reset the calculation area\"\n\nAI Parameters:\n\u2022 Document_ID: Target spreadsheet ID\n\u2022 Sheet_Name: Sheet to clear data from\n\u2022 Range: Specific range to clear\n\n\u26a0\ufe0f Use with caution - data will be permanently removed!",
      "position": [
        384,
        784
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', ``, 'string') }}",
            "Amount": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Amount', ``, 'string') }}",
            "Category": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Category', ``, 'string') }}",
            "Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Amount",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs/edit?usp=drivesdk",
          "cachedResultName": "Expense Tracker"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "3aef6fd6-c076-4935-ada4-7d175634ebb2",
      "name": "Delete Expense",
      "type": "n8n-nodes-base.googleSheetsTool",
      "notes": "\u2795 ADD NEW DATA\n\nAppend new rows of data to existing sheets. Perfect for adding records, logging events, or inserting new entries without affecting existing data.\n\nUse Cases:\n\u2022 \"Add a new customer to the CRM sheet\"\n\u2022 \"Log today's sales data\"\n\u2022 \"Insert a new project entry\"\n\u2022 \"Record the meeting notes\"\n\nAI Parameters:\n\u2022 Document_ID: Target spreadsheet ID\n\u2022 Sheet_Name: Sheet to add data to\n\u2022 Data_To_Add: Array/object of new data\n\nFeatures:\n\u2022 Automatically finds next empty row\n\u2022 Preserves existing data\n\u2022 Supports multiple columns",
      "position": [
        512,
        736
      ],
      "parameters": {
        "clear": "specificRows",
        "operation": "clear",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QCS8_RA5neEDAmgotpzgbBbeEjdYi-LAmCSJVeNWVxs/edit?usp=drivesdk",
          "cachedResultName": "Expense Tracker"
        },
        "startIndex": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_Row_Number', ``, 'number') }}",
        "rowsToDelete": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Number_of_Rows_to_Delete', ``, 'number') }}"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "124c7cdc-2bdd-4d97-acc3-f5cc0b386fac",
      "name": "Get many Tasks",
      "type": "n8n-nodes-base.googleTasksTool",
      "position": [
        -2128,
        896
      ],
      "parameters": {
        "task": "MDM1NDg1NzcxMjIyNzg5NzQ1ODI6MDow",
        "operation": "getAll",
        "returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}",
        "descriptionType": "manual",
        "toolDescription": "Get tasks from Google Tasks",
        "additionalFields": {
          "showCompleted": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Show_Completed', ``, 'boolean') }}"
        }
      },
      "credentials": {
        "googleTasksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "904017a7-cfd9-4043-800b-3f29bdcb6bdc",
      "name": "Delete a Task",
      "type": "n8n-nodes-base.googleTasksTool",
      "position": [
        -2240,
        944
      ],
      "parameters": {
        "task": "MDM1NDg1NzcxMjIyNzg5NzQ1ODI6MDow",
        "taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
        "operation": "delete"
      },
      "credentials": {
        "googleTasksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9182e719-5639-435b-b9d8-4f1c839cf99d",
      "name": "Get a Task",
      "type": "n8n-nodes-base.googleTasksTool",
      "position": [
        -2368,
        880
      ],
      "parameters": {
        "task": "MDM1NDg1NzcxMjIyNzg5NzQ1ODI6MDow",
        "taskId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Task_ID', ``, 'string') }}",
        "operation": "get"
      },
      "credentials": {
        "googleTasksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2d6f032e-9141-49a2-9a61-55af392bd474",
      "name": "Create a Task",
      "type": "n8n-nodes-base.googleTasksTool",
      "position": [
        -2464,
        768
      ],
      "parameters": {
        "task": "MDM1NDg1NzcxMjIyNzg5NzQ1ODI6MDow",
        "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
        "additionalFields": {
          "notes": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Notes', ``, 'string') }}",
          "dueDate": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Due_Date', `Always use future dates`, 'string') }}"
        }
      },
      "credentials": {
        "googleTasksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e8d219de-13e4-4bdc-a353-06616d053b2d",
      "name": "Get Contacts",
      "type": "n8n-nodes-base.googleContactsTool",
      "position": [
        -160,
        1248
      ],
      "parameters": {
        "query": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Query', ``, 'string') }}",
        "fields": [
          "names",
          "emailAddresses"
        ],
        "options": {},
        "rawData": true,
        "useQuery": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Use_Query', ``, 'boolean') }}",
        "operation": "getAll"
      },
      "credentials": {
        "googleContactsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "480cdf73-d41a-4e2a-aa26-8458a3309f38",
      "name": "Google Contacts MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -176,
        1088
      ],
      "parameters": {
        "path": "01e90a0b-6f53-40d0-a8d3-a05c34a46fbb"
      },
      "typeVersion": 2
    },
    {
      "id": "b51c2b55-bdd7-4d53-adc5-873979e9ef9d",
      "name": "Google Contacts",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        -352,
        544
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "https://n8n.exildraw.com/mcp/01e90a0b-6f53-40d0-a8d3-a05c34a46fbb"
      },
      "typeVersion": 1.1
    },
    {
      "id": "13b49fc6-3797-46e7-92d9-dba4bde58341",
      "name": "Jarvis",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueRegularOutput",
      "position": [
        -608,
        192
      ],
      "parameters": {
        "text": "={{ $json.messages[0].text.body }}\n\n{{ $json.text }}",
        "options": {
          "systemMessage": "=You are Jarvis, an intelligent productivity assistant designed to help manage daily tasks, communications, and schedules efficiently. You have access to multiple tools and should use them proactively to assist the user.\n\n## Core Identity\n- You are professional, helpful, and proactive\n- Always maintain a personal assistant tone - attentive but not overly casual\n- Use \"Jitesh Dugar\" as the user's name in all communications\n- Current date and time: {{ $now }}\n- Timezone: Asia/Kolkata\n\n## Available Capabilities\n\n### Email Management (Gmail MCP)\n- Read, send, reply to, and draft emails\n- Organize emails with labels\n- Search and filter emails by various criteria\n- Always use well-formatted HTML for email composition\n- Include proper signatures with \"Jitesh Dugar\"\n- If you're asked to send an email, just use the 'Google Contacts MCP' to get their email address first, then confirm from the user\n\n### Calendar Management (Calendar MCP)\n- Check availability and schedule conflicts\n- Create, update, reschedule, and delete events\n- Retrieve upcoming events and meetings\n- Handle meeting requests and confirmations\n\n### Task Management (Google Tasks MCP)\n- Create, update, complete, and delete tasks\n- Retrieve task lists with filtering options\n- Set due dates and add detailed notes\n- Mark tasks as completed with timestamps\n\n### Finance Tracking (Finance Manager MCP)\n- Log expenses with categories and descriptions\n- Retrieve expense reports and summaries\n- Delete or modify expense entries\n- Track spending patterns\n\n### Contact Management (Google Contacts MCP)\n- Search and retrieve contact information\n- Access email addresses and phone numbers for communications\n\n## Communication Guidelines\n\n### Email Composition\n- Use professional HTML formatting\n- Include clear subject lines\n- Structure emails with proper greetings and closings\n- Always sign emails as \"Jitesh Dugar\"\n- No placeholder text - ask for clarification if information is missing\n\n### Response Style\n- Be concise but complete in responses\n- Proactively suggest related actions when appropriate\n- Confirm actions taken and provide relevant details\n- If multiple steps are involved, explain what you're doing\n\n## Operational Rules\n\n### Data Handling\n- Always use specific, actionable parameters\n- For dates, use future dates when creating tasks/events unless specified otherwise\n- When scheduling, check for conflicts before confirming\n- Validate email addresses before sending\n\n### Error Management\n- If information is incomplete, ask specific questions\n- Don't use placeholders or generic text\n- Confirm understanding before executing actions\n- Provide clear feedback on completed actions\n\n### Privacy & Security\n- Handle all personal information with appropriate discretion\n- Confirm sensitive actions before executing\n- Maintain professional boundaries in all communications\n\n## Task Prioritization\n1. **Urgent**: Time-sensitive items (meetings, deadlines)\n2. **Important**: High-impact tasks and communications\n3. **Routine**: Regular maintenance and organization\n4. **Optional**: Enhancement and optimization tasks\n\n## Example Interactions\n\n**Calendar Query**: \"What meetings do I have today?\"\n\u2192 Check calendar for today's events, provide detailed schedule with times and attendees\n\n**Email Task**: \"Send a follow-up email to the marketing team about the quarterly review\"\n\u2192 Ask for specific details if needed, compose professional HTML email, confirm before sending\n\n**Task Creation**: \"Add a reminder to prepare the presentation for next week\"\n\u2192 Create task with appropriate due date, ask for specific deadline if unclear\n\n**Expense Logging**: \"I spent $45 on lunch at the restaurant\"\n\u2192 Log expense with date, amount, category (Food/Dining), and description\n\n## Always Remember\n- You represent Jitesh professionally in all communications\n- Double-check important details before executing actions\n- Provide clear confirmations of completed tasks\n- Be proactive in suggesting helpful follow-up actions\n- Maintain context across conversations using the memory system"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "91ce4cbe-421b-46f7-a791-6d4127ac7351",
      "name": "Only allow me",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2144,
        288
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "74570957-ff95-4df8-bbc2-043c4973a733",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.messages[0].from }}",
              "rightValue": "919920842422"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6a586a28-8869-4848-9d66-485e5fbdf939",
      "name": "Set Reply Message",
      "type": "n8n-nodes-base.set",
      "position": [
        0,
        192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c707ac04-2237-4cc4-991a-6aa22b1cef81",
              "name": "message",
              "type": "string",
              "value": "={{ $json.output || $json.error }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2069b78d-cdc9-4c8f-8bed-49597bab9c77",
      "name": "Check Text or Audio",
      "type": "n8n-nodes-base.switch",
      "position": [
        192,
        192
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "9f763ec1-25e5-4a4d-88fa-70156851ff2a",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
                    "rightValue": "text"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Audio",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "12be0a10-540d-423c-82de-00d0e9e9e501",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
                    "rightValue": "audio"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "72f0325e-ea0f-4d5c-b427-5c6304c6aa9d",
      "name": "Convert text to speech",
      "type": "@elevenlabs/n8n-nodes-elevenlabs.elevenLabs",
      "position": [
        416,
        240
      ],
      "parameters": {
        "text": "={{ $('Set Reply Message').item.json.message }}",
        "voice": {
          "__rl": true,
          "mode": "list",
          "value": "MF4J4IDTRo0AxOO4dpFR",
          "cachedResultName": "Devi - Clear Hindi pronunciation"
        },
        "resource": "speech",
        "requestOptions": {},
        "additionalOptions": {
          "outputFormat": "opus_48000_192"
        }
      },
      "credentials": {
        "elevenLabsApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f84af53d-c8b9-4d01-8808-61b6fbc3a3f2",
      "name": "Think",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        -656,
        592
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "ff370b17-3c64-49bc-b81c-f58189ee80a3",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        16
      ],
      "parameters": {
        "width": 720,
        "height": 704,
        "content": "## Jarvis \ud83e\udd16\nYour AI-powered personal assistant.  \n- Orchestrates tasks, calendar, emails, contacts & expenses  \n- Uses memory + OpenAI model for smart decisions  \n- Sends results back to Telegram  "
      },
      "typeVersion": 1
    },
    {
      "id": "d1085087-53d5-4f8b-a026-d97106ee7fb1",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1168,
        752
      ],
      "parameters": {
        "color": 3,
        "width": 768,
        "height": 640,
        "content": "## Gmail MCP \ud83d\udce7\nFull email management.  \n- Send & draft messages  \n- Reply, label, and fetch emails  "
      },
      "typeVersion": 1
    },
    {
      "id": "3ae2462f-0afc-4fd8-bb4d-0dbca47e08e1",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        400
      ],
      "parameters": {
        "color": 4,
        "width": 496,
        "height": 544,
        "content": "## Finance Manager MCP \ud83d\udcb5\nTrack personal or business expenses.  \n- Create new expenses  \n- Get expense reports  \n- Delete outdated entries  "
      },
      "typeVersion": 1
    },
    {
      "id": "6b97a9fa-1362-4758-8c2f-9d5169039143",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        960
      ],
      "parameters": {
        "color": 6,
        "width": 448,
        "height": 416,
        "content": "## Google Contacts MCP \ud83d\udc65\nAccess and manage your contact list.  \n- Fetch contacts for quick communication  "
      },
      "typeVersion": 1
    },
    {
      "id": "e37505c8-29d5-4e78-8b27-7eb48ff6f670",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1904,
        592
      ],
      "parameters": {
        "color": 5,
        "width": 624,
        "height": 704,
        "content": "## Calendar MCP \ud83d\udcc5\nYour scheduling hub.  \n- Check availability  \n- Create, reschedule, or delete events "
      },
      "typeVersion": 1
    },
    {
      "id": "978a9bcc-17a4-4195-98d0-05c0640fbfb9",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2496,
        464
      ],
      "parameters": {
        "color": 6,
        "width": 560,
        "height": 624,
        "content": "## Task Manager MCP \u2705\nManages to-dos with ease:  \n- Create / Complete / Delete tasks  \n- Retrieve individual or bulk tasks "
      },
      "typeVersion": 1
    },
    {
      "id": "c1b4609f-c432-4eef-987f-acb47200e6d8",
      "name": "WhatsApp Trigger",
      "type": "n8n-nodes-base.whatsAppTrigger",
      "position": [
        -2400,
        288
      ],
      "parameters": {
        "options": {},
        "updates": [
          "messages"
        ]
      },
      "credentials": {
        "whatsAppTriggerApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "089efa89-ecc2-485f-bf1c-036cf9eab365",
      "name": "Send message",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        432,
        32
      ],
      "parameters": {
        "textBody": "={{ $('Set Reply Message').item.json.message }}",
        "operation": "send",
        "phoneNumberId": "806311772561831",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d31161eb-e90b-459e-8e78-646485382ad9",
      "name": "Send Audio",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        832,
        240
      ],
      "parameters": {
        "mediaPath": "useMedian8n",
        "operation": "send",
        "messageType": "audio",
        "phoneNumberId": "806311772561831",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3c564f0f-5ef8-4837-b8aa-1ef011230399",
      "name": "Get Media URL",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -1712,
        384
      ],
      "parameters": {
        "resource": "media",
        "operation": "mediaUrlGet",
        "mediaGetId": "={{ $json.messages[0].audio.id }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4e20baa2-9d9d-403c-8d2a-416572d98cf5",
      "name": "Download Audio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1440,
        384
      ],
      "parameters": {
        "url": "https://lookaside.fbsbx.com/whatsapp_business/attachments/?mid=1198095598810445&source=getMedia&ext=1759730456&hash=ARnbUL6GwAZe33CMZ9GeAMRHysh_AMmNe_PhOgjJnesf5Q",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "whatsAppApi"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "25f7bec9-cf2c-4881-9155-88089cdccb70",
  "connections": {
    "Think": {
      "ai_tool": [
        [
          {
            "node": "Jarvis",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Jarvis": {
      "main": [
        [
          {
            "node": "Set Reply Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Jarvis",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Media URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Event": {
      "ai_tool": [
        [
          {
            "node": "Calendar MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Gmail MCP": {
      "ai_tool": [
        [
          {
            "node": "Jarvis",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Emails": {
      "ai_tool": [
        [
          {
            "node": "Gmail MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Labels": {
      "ai_tool": [
        [
          {
            "node": "Gmail MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get a Task": {
      "ai_tool": [
        [
          {
            "node": "Task Manager MCP",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Send Email": {
      "ai_tool": [
        [
          {
            "node": "Gmail MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Draft Email": {
      "ai_tool": [
        [
          {
            "node": "Gmail MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Calendar MCP": {
      "ai_tool": [
        [
          {
            "node": "Jarvis",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Contacts": {
      "ai_tool": [
        [
          {
            "node": "Google Contacts MCP",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create a Task": {
      "ai_tool": [
        [
          {
            "node": "Task Manager MCP",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Delete a Task": {
      "ai_tool": [
        [
          {
            "node": "Task Manager MCP",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Media URL": {
      "main": [
        [
          {
            "node": "Download Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Only allow me": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Jarvis",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Create Expense": {
      "ai_tool": [
        [
          {
            "node": "Finance Manager MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Delete Expense": {
      "ai_tool": [
        [
          {
            "node": "Finance Manager MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Download Audio": {
      "main": [
        [
          {
            "node": "Transcribe audio or video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all Events": {
      "ai_tool": [
        [
          {
            "node": "Calendar MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get many Tasks": {
      "ai_tool": [
        [
          {
            "node": "Task Manager MCP",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Complete a Task": {
      "ai_tool": [
        [
          {
            "node": "Task Manager MCP",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create an event": {
      "ai_tool": [
        [
          {
            "node": "Calendar MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Finance Tracker": {
      "ai_tool": [
        [
          {
            "node": "Jarvis",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Google Contacts": {
      "ai_tool": [
        [
          {
            "node": "Jarvis",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get all Expenses": {
      "ai_tool": [
        [
          {
            "node": "Finance Manager MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Google Tasks MCP": {
      "ai_tool": [
        [
          {
            "node": "Jarvis",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Reschedule Event": {
      "ai_tool": [
        [
          {
            "node": "Calendar MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "WhatsApp Trigger": {
      "main": [
        [
          {
            "node": "Only allow me",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Draft Email Reply": {
      "ai_tool": [
        [
          {
            "node": "Gmail MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Jarvis",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Reply to an Email": {
      "ai_tool": [
        [
          {
            "node": "Gmail MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Set Reply Message": {
      "main": [
        [
          {
            "node": "Check Text or Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Label to Email": {
      "ai_tool": [
        [
          {
            "node": "Gmail MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Check Availability": {
      "ai_tool": [
        [
          {
            "node": "Calendar MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Check Text or Audio": {
      "main": [
        [
          {
            "node": "Send message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Convert text to speech",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete Calendar Event": {
      "ai_tool": [
        [
          {
            "node": "Calendar MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Convert text to speech": {
      "main": [
        [
          {
            "node": "Send Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe audio or video": {
      "main": [
        [
          {
            "node": "Jarvis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

This template is designed for anyone who wants to use WhatsApp as a personal AI assistant hub. If you often juggle tasks, emails, calendars, and expenses across multiple tools, this workflow consolidates everything into one seamless AI-powered agent accessible right from your…

Source: https://n8n.io/workflows/9295/ — 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

Transform your salon/service business with this streamlined WhatsApp automation system featuring Claude integration, zero-setup database management, and intelligent conversation handling. Claude MCP I

WhatsApp Trigger, WhatsApp, Redis +11
AI & RAG

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.

Telegram Trigger, Telegram, OpenAI +10
AI & RAG

This n8n workflow creates an intelligent WhatsApp customer support bot that can handle text, image, audio, and document messages. The workflow automatically processes incoming messages through differe

HTTP Request, N8N Nodes Rapiwa, Agent Tool +9
AI & RAG

This template is designed for anyone who wants to use Telegram as a personal AI assistant hub. If you often juggle tasks, emails, calendars, and expenses across multiple tools, this workflow consolida

OpenAI Chat, Memory Buffer Window, Mcp Client Tool +11
AI & RAG

⚠️ EDUCATIONAL DEMONSTRATION ONLY - NOT FOR PRODUCTION MEDICAL USE ⚠️

Agent, Memory Postgres Chat, OpenAI Chat +7