AutomationFlowsAI & RAG › Process Voice, Images & Documents with Gpt-4o, Mongodb & Gmail Tools

Process Voice, Images & Documents with Gpt-4o, Mongodb & Gmail Tools

ByNanaB @nanabrown on n8n.io

This n8n workflow creates a cutting-edge, multi-modal AI Memory Assistant designed to capture, understand, and intelligently recall your personal or business information from diverse sources. It automatically processes voice notes, images, documents (like PDFs), and text…

Event trigger★★★★☆ complexityAI-powered26 nodesTelegram TriggerOpenAIAgentOpenAI ChatTelegramMemory Mongo Db ChatHTTP RequestGmail Tool
AI & RAG Trigger: Event Nodes: 26 Complexity: ★★★★☆ AI nodes: yes Added:
Process Voice, Images & Documents with Gpt-4o, Mongodb & Gmail Tools — n8n workflow card showing Telegram Trigger, OpenAI, Agent integration

This workflow corresponds to n8n.io template #6211 — 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": "u1UDiWECb1RUnZNN",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Multi-Modal AI Agent Assistant (GPT-4o & MongoDB) with Gmail Tool Use",
  "tags": [
    {
      "id": "88Rkm7VaAFefsT34",
      "name": "AI Agents",
      "createdAt": "2025-05-06T22:52:26.053Z",
      "updatedAt": "2025-07-21T00:33:33.971Z"
    },
    {
      "id": "IEpRLlnMFuw6uI0n",
      "name": "MongoDB",
      "createdAt": "2025-07-21T00:34:02.234Z",
      "updatedAt": "2025-07-21T00:34:02.234Z"
    },
    {
      "id": "YKfqWKbhkj0tMP9a",
      "name": "Assistant",
      "createdAt": "2025-05-11T00:54:42.509Z",
      "updatedAt": "2025-05-11T00:54:42.509Z"
    },
    {
      "id": "s1UA6FThbKhQYbLu",
      "name": "MultiModal",
      "createdAt": "2025-05-06T22:52:35.914Z",
      "updatedAt": "2025-05-06T22:52:35.914Z"
    },
    {
      "id": "u0sDc9TmwaTimDuy",
      "name": "Gmail",
      "createdAt": "2025-05-11T00:53:52.260Z",
      "updatedAt": "2025-05-11T00:53:52.260Z"
    }
  ],
  "nodes": [
    {
      "id": "007accc7-cc28-4904-a66e-e78e73b13b3b",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -220,
        -880
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8d5e865b-7a6b-4c1d-a850-68b9a25de56f",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        -20,
        -880
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "photo",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "05a85c74-cb5e-4fa4-83be-bd258efc1464",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.photo[3]}}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "voice",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "4135a526-68a7-428d-82f3-d5882d9bc4e6",
                    "operator": {
                      "type": "object",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.voice }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "document",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "26c733da-6782-487d-9b37-61e7544e2e84",
                    "operator": {
                      "type": "object",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.document }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b8457c94-8f58-4b84-866a-4b04f3df7779",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.text }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {},
        "looseTypeValidation": true
      },
      "typeVersion": 3.2
    },
    {
      "id": "1dc71295-3f8b-4d7a-9469-707db0828a16",
      "name": "Transcribe a recording",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        680,
        -400
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "31ab270f-3820-4113-b534-70fda48fc108",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1220,
        600
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "You are a helpful assistant.\n\nIf you don't have enough context to answer a question, use the MongoDB Atlas Vector Store Tool to check the vector store for more context before you formulate a response. "
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "25361e7d-6be5-4025-a1d7-b546bb248090",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1040,
        880
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "aa026292-2ddb-41cb-b650-46b336a6607d",
      "name": "Respond",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1600,
        600
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "={{ $('Switch').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b5e4eeec-b901-4121-9f97-6dc8bbdb92db",
      "name": "MongoDB Chat Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryMongoDbChat",
      "position": [
        1240,
        880
      ],
      "parameters": {
        "sessionKey": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "databaseName": "chat_messages",
        "sessionIdType": "customKey",
        "contextWindowLength": 100
      },
      "credentials": {
        "mongoDb": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "638201f8-1e90-46e6-af59-a4ddc8bf5bf9",
      "name": "ConvertAPI HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        460,
        -880
      ],
      "parameters": {
        "": "",
        "url": "https://v2.convertapi.com/convert/ai/to/png",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendQuery": false,
        "curlImport": "",
        "contentType": "multipart-form-data",
        "infoMessage": "",
        "sendHeaders": true,
        "authentication": "none",
        "bodyParameters": {
          "parameters": [
            {
              "name": "StoreFile",
              "value": "true",
              "parameterType": "formData"
            },
            {
              "name": "File",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        },
        "specifyHeaders": "keypair",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        },
        "httpVariantWarning": "",
        "provideSslCertificates": false
      },
      "credentials": {
        "convertApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2,
      "extendsCredential": "convertApi"
    },
    {
      "id": "10176355-04e5-49b5-a128-7aecb538e72a",
      "name": "Get audio file",
      "type": "n8n-nodes-base.telegram",
      "position": [
        240,
        -400
      ],
      "parameters": {
        "fileId": "={{ $json.message.voice.file_id }}",
        "resource": "file"
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "53e02e99-b01a-4115-8663-d4241bfbc8e5",
      "name": "Get photo file",
      "type": "n8n-nodes-base.telegram",
      "position": [
        240,
        -880
      ],
      "parameters": {
        "fileId": "={{ $json.message.photo[3].file_id }}",
        "resource": "file"
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f3341c7e-c303-49c7-be9c-37b6b03b76f7",
      "name": "Analyze image",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        680,
        -880
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "GPT-4O"
        },
        "options": {},
        "resource": "image",
        "imageUrls": "={{ $json.Files[0].Url }}",
        "operation": "analyze"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "7aea5368-650e-440a-b986-31010ab82fdc",
      "name": "Get text from Image",
      "type": "n8n-nodes-base.set",
      "position": [
        900,
        -880
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "da1e0cdd-5633-4bb7-97bd-2caf2e3b45c1",
              "name": "text",
              "type": "string",
              "value": "=I just submitted an images with this description: {{ $json.content }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "676ca8f7-bb55-4c66-ae26-1fab3bb36c77",
      "name": "Get text from Audio",
      "type": "n8n-nodes-base.set",
      "position": [
        880,
        -400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5b1b84f3-b95b-4142-8891-397815757620",
              "name": "text",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f3ec9d7f-1e0e-42cb-bf8b-1bead0558289",
      "name": "Get a file",
      "type": "n8n-nodes-base.telegram",
      "position": [
        240,
        20
      ],
      "parameters": {
        "fileId": "={{ $('Telegram Trigger').item.json.message.document.file_id }}",
        "resource": "file"
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "25fc5879-8fa1-47a8-9888-d4129227beca",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        440,
        20
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c56dbc4c-08c6-49a1-8a3b-fa7b13304c23",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.result.file_path }}",
              "rightValue": "pdf"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d48612ec-28e1-4685-a5f6-efb7cb53ba3b",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        680,
        20
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "36ec8656-502e-45dd-8309-4486bab3c0c8",
      "name": "Get text from PDF",
      "type": "n8n-nodes-base.set",
      "position": [
        880,
        20
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "da1e0cdd-5633-4bb7-97bd-2caf2e3b45c1",
              "name": "text",
              "type": "string",
              "value": "=I just uploaded a file with details: \nName: {{ $json.info.Title }},\nContent :{{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a06fe0fe-0c55-40fa-9711-0f8c39d44780",
      "name": "Unsupported Input",
      "type": "n8n-nodes-base.set",
      "position": [
        680,
        220
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "da1e0cdd-5633-4bb7-97bd-2caf2e3b45c1",
              "name": "text",
              "type": "string",
              "value": "=User just uploaded the Word file but your system doesnt support such files just yet."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a32d4c7d-dd06-49e5-b302-09bb9926341c",
      "name": "Get text from Message",
      "type": "n8n-nodes-base.set",
      "position": [
        220,
        600
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "33f1c9df-bdb2-481d-8cf6-6633d23da23a",
              "name": "text",
              "type": "string",
              "value": "={{$json.message.text}}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d1d4e397-d495-4584-b8c4-bf9c87174f48",
      "name": "Send a message in Gmail",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        1460,
        880
      ],
      "parameters": {
        "sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {},
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "e4c44de2-e751-4baf-afcd-d329c4891d43",
      "name": "Search for a messages in Gmail",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        1660,
        880
      ],
      "parameters": {
        "limit": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Limit', ``, 'number') }}",
        "filters": {
          "q": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Search', ``, 'string') }}"
        },
        "operation": "getAll"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "30e70a97-136e-4dd7-bad2-48c4f0f63773",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -220,
        -1160
      ],
      "parameters": {
        "width": 2820,
        "height": 240,
        "content": "## \ud83d\udcdd General Overview\n\nThis n8n workflow creates a multi-modal AI Memory Assistant that captures and intelligently recalls information from voice, images, documents, and text messages sent via Telegram. It leverages GPT-4o for advanced AI processing (including understanding different input types, chunking, and generation) and MongoDB Atlas for persistent, searchable memory. The assistant can also interact with Gmail via integrated tools.\n\nThe workflow operates in two primary phases:\n\n    **Ingestion**: Incoming messages (voice, image, document, text) are processed, converted into searchable formats, intelligently chunked and tagged by GPT-4o, and then vectorized and stored in MongoDB.\n\n    **Retrieval & Response**: When a user asks a question, the AI Agent retrieves relevant memories from MongoDB Atlas, synthesizes an answer using GPT-4o, and responds via Telegram, potentially using Gmail tools if needed."
      },
      "typeVersion": 1
    },
    {
      "id": "b67876a6-803d-46ba-ae08-f27b718efe2b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        -880
      ],
      "parameters": {
        "width": 1400,
        "height": 340,
        "content": "## \ud83d\udcf8 Processing Photos\n\nThis section of the workflow handles image inputs from Telegram:\n\n    The Telegram Trigger identifies incoming messages with a photo.\n\n    The Get photo file node downloads the image from Telegram's servers.\n\n    The ConvertAPI HTTP Request node processes the downloaded image, ensuring a consistent format (e.g., converting to PNG) for the subsequent AI step.\n\n    The Analyze image node (an OpenAI GPT-4o Langchain node) then performs visual analysis on the image. It generates a detailed textual description of the image's content, recognizing objects, scenes, and any embedded text (OCR). This step turns visual information into a searchable text format.\n\n    Finally, the Get text from Image (Set node) takes this AI-generated description and prepares it as a standardized text input for the main AI Agent for further chunking, tagging, and storage in MongoDB.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1369051f-00c7-4564-bed9-c07b35f92fc8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        20
      ],
      "parameters": {
        "width": 1400,
        "height": 420,
        "content": "## \ud83d\udcc4 Processing Documents & Accounting for Unsupported Files\n\nThis section handles document uploads and provides a fallback for unsupported file types:\n\n    The Telegram Trigger detects incoming document files.\n\n    The Get a file node downloads the document from Telegram.\n\n    An If node then checks the document's file path or MIME type to determine if it's a PDF.\n\n        If PDF: The workflow proceeds to the Extract from File node (an n8n utility) which performs text extraction from the PDF. This could include basic text extraction and potentially OCR capabilities for scanned PDFs, depending on the node's configuration. The Get text from PDF (Set node) formats this extracted content for the AI Agent.\n\n        If Not PDF: The workflow diverts to the Unsupported Input (Set node). This node generates a predefined message (e.g., \"User just uploaded the Word file but your system doesn't support such files just yet.\") to gracefully inform the user that the file type cannot be processed, preventing errors and providing clear feedback.\n\n    The extracted text (or the unsupported message) then flows into the AI Agent for processing."
      },
      "typeVersion": 1
    },
    {
      "id": "4884964b-3a71-4459-9a0b-b4e2de51c90c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        -400
      ],
      "parameters": {
        "width": 1400,
        "height": 300,
        "content": "## \ud83c\udf99\ufe0f Processing Audio\n\nThis part of the workflow manages voice note inputs from Telegram:\n\n    The Telegram Trigger catches incoming messages that are voice notes.\n\n    The Get audio file node downloads the audio file from Telegram.\n\n    The Transcribe a recording node (an OpenAI Whisper or similar Langchain node, part of the OpenAI ecosystem) converts the audio into written text. This is a crucial step for making spoken words searchable and understandable by an LLM.\n\n    The Get text from Audio (Set node) takes the transcribed text and formats it as a standardized input for the main AI Agent, ready for semantic processing and storage in MongoDB."
      },
      "typeVersion": 1
    },
    {
      "id": "791a2aa1-e747-4ac4-be8c-13375349a235",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1880,
        600
      ],
      "parameters": {
        "width": 720,
        "height": 700,
        "content": "## \ud83e\udde0 AI Agent Processing, MongoDB Vector Store, and Gmail Access\n\nThis is the core intelligence hub of your memory assistant:\n\n    The AI Agent (a Langchain Agent node) receives the processed text input (from voice transcriptions, image descriptions, extracted document content, or direct text messages).\n\n    Persistent Memory (MongoDB Recall): The AI Agent is primarily configured to utilize a MongoDB Atlas Vector Store Tool (which you'll connect as a custom tool, enabling RAG).\n\n        When the agent needs to retrieve information, it generates an embedding of the user's query.\n\n        It then queries your MongoDB Atlas cluster (which is configured with an Atlas Vector Search index) to find the most semantically relevant memory chunks.\n\n        These retrieved chunks serve as context for GPT-4o to formulate a grounded and relevant response. This ensures the assistant \"remembers\" information you've previously provided.\n\n    Language Model: The OpenAI Chat Model (specifically GPT-4o in this setup) acts as the brain for the AI Agent. It synthesizes answers based on its own knowledge, the conversation history (via MongoDB Chat Memory for chat history, separate from vector store), and crucially, the retrieved context from MongoDB Atlas Vector Search.\n\n    Gmail Tools: The AI Agent is also given access to Gmail Tools (Send a message in Gmail and Search for a messages in Gmail). This means the AI can perform actions like:\n\n        Sending emails on your behalf if instructed.\n\n        Searching your past emails to retrieve information, acting as an external data source beyond the dedicated memory store.\n\n    Finally, the Respond node sends the AI Agent's generated answer back to the user via Telegram."
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "15a8fd13-ef3a-4df1-bb73-3971d9d3eab9",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Unsupported Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Get photo file",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get audio file",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get a file",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get text from Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Respond",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get a file": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze image": {
      "main": [
        [
          {
            "node": "Get text from Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get audio file": {
      "main": [
        [
          {
            "node": "Transcribe a recording",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get photo file": {
      "main": [
        [
          {
            "node": "ConvertAPI HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Get text from PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get text from PDF": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Unsupported Input": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get text from Audio": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get text from Image": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MongoDB Chat Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Get text from Message": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe a recording": {
      "main": [
        [
          {
            "node": "Get text from Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ConvertAPI HTTP Request": {
      "main": [
        [
          {
            "node": "Analyze image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message in Gmail": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Search for a messages in Gmail": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "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 n8n workflow creates a cutting-edge, multi-modal AI Memory Assistant designed to capture, understand, and intelligently recall your personal or business information from diverse sources. It automatically processes voice notes, images, documents (like PDFs), and text…

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

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

Digital marketers, content creators, social media managers, and businesses who want to use AI marketing automation for YouTube Shorts without spending hours on production. This AI workflow helps anyon

OpenAI, HTTP Request, OpenAI Chat +7
AI & RAG

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

Redis, Agent Tool, Google Calendar +10
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 template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste

Telegram, Telegram Trigger, Google Drive +8