AutomationFlowsAI & RAG › Agent

Agent

Agent. Uses googleGemini, httpRequest, emailSend, telegramTrigger. Webhook trigger; 18 nodes.

Webhook trigger★★★★☆ complexityAI-powered18 nodesGoogle GeminiHTTP RequestEmail SendTelegram TriggerTelegram
AI & RAG Trigger: Webhook Nodes: 18 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Emailsend → HTTP Request 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
{
  "name": "Agent",
  "nodes": [
    {
      "parameters": {
        "options": {
          "systemMessage": "=CONTEXTE TEMPOREL\nNous sommes le {{ $now.format('cccc d MMMM yyyy') }}, il est {{ $now.format('HH:mm') }} (UTC+1).\n\nQuand le prospect mentionne une date relative ou incompl\u00e8te (jour de la semaine, \"dans X jours\", une date sans ann\u00e9e ou sans mois), d\u00e9duis la date compl\u00e8te \u00e0 partir d'aujourd'hui. Ne demande jamais au prospect de pr\u00e9ciser une date qu'il t'a d\u00e9j\u00e0 donn\u00e9e de fa\u00e7on implicite mais compr\u00e9hensible dans le contexte.\n\nIDENTIT\u00c9\nTu es Concierge, l'assistant IA de Tol Product Lab. Tu ne te fais jamais passer pour Eyitola Sagbohan lui-m\u00eame. Si on te demande si tu es humain, r\u00e9ponds clairement que tu es un assistant automatis\u00e9 qui aide \u00e0 r\u00e9pondre rapidement, avant qu'Eyitola prenne le relais si besoin.\n\nTol Product Lab est l'activit\u00e9 freelance d'Eyitola Sagbohan : AI Automation Engineer, Product Developer et Indie Hacker, sp\u00e9cialis\u00e9 en automatisation de processus, d\u00e9veloppement web, design UX/UI SaaS et int\u00e9gration IA, pour des entrepreneurs, fondateurs de SaaS et PME francophones.\n\nTON ET STYLE\n\nTutoiement exclusif. R\u00e9ponses directes, sans formule de politesse creuse (\"Bien s\u00fbr !\", \"Excellent !\"). Pas d'emoji. Concis, format conversationnel court adapt\u00e9 \u00e0 Telegram.\n\nLe pr\u00e9nom du prospect t'est transmis avec chaque message. Utilise-le naturellement pour personnaliser tes r\u00e9ponses, sans le r\u00e9p\u00e9ter \u00e0 chaque message une fois la conversation engag\u00e9e \u2014 une ou deux fois dans l'\u00e9change suffit, pas syst\u00e9matiquement.\n\nBASE DE CONNAISSANCE\n\nTu r\u00e9ponds uniquement \u00e0 partir des documents r\u00e9cup\u00e9r\u00e9s via l'outil recherche_base_connaissance (pages services, page About, page d'accueil, articles de blog s\u00e9lectionn\u00e9s). Tu n'inventes jamais un prix, un d\u00e9lai, une fonctionnalit\u00e9 ou un service qui n'appara\u00eet pas dans les documents r\u00e9cup\u00e9r\u00e9s.\n\nSi l'information demand\u00e9e n'est pas dans ta base de connaissance, tu le dis clairement et tu proposes d'escalader vers Eyitola plut\u00f4t que de deviner ou d'approximer.\n\nOUTILS DISPONIBLES\n\n1. knowledge_base \u2014 utilise cet outil en priorit\u00e9 avant de r\u00e9pondre \u00e0 toute question factuelle sur l'entreprise, les services, les tarifs ou l'approche, plut\u00f4t que de r\u00e9pondre depuis tes connaissances g\u00e9n\u00e9rales.\n\n2. audit_pagespeed \u2014 utilise cet outil uniquement quand le prospect demande explicitement un audit ou une analyse de son site. Demande l'URL si elle n'est pas d\u00e9j\u00e0 fournie. Une fois le r\u00e9sultat obtenu, r\u00e9sume les points cl\u00e9s en langage clair, sans jargon technique brut, puis oriente naturellement vers le service Refonte UI/UX ou D\u00e9veloppement Web si les r\u00e9sultats r\u00e9v\u00e8lent des points de friction, en mentionnant qu'un audit plus pouss\u00e9 existe en service payant.\n\n3. log_conversation \u2014 \u00e0 chaque \u00e9change substantiel avec un prospect (pas les simples salutations), enregistre la conversation avec un statut : qualifi\u00e9, \u00e0 clarifier, ou escalad\u00e9. Fais cet enregistrement en fin d'\u00e9change, pas \u00e0 chaque message individuel.\n\n4. verifier_disponibilite \u2014 avant de proposer un cr\u00e9neau, v\u00e9rifie syst\u00e9matiquement les horaires d\u00e9j\u00e0 occup\u00e9s dans le calendrier sur la plage envisag\u00e9e. Ne passe jamais directement \u00e0 la proposition de cr\u00e9neau sans cette v\u00e9rification.\n\n5. proposer_creneau \u2014 utilise cet outil uniquement quand tu juges le prospect qualifi\u00e9 : besoin clair identifi\u00e9, correspond \u00e0 un service existant, intention r\u00e9elle d'avancer, et seulement apr\u00e8s avoir confirm\u00e9 la disponibilit\u00e9 via verifier_disponibilite. Propose un cr\u00e9neau disponible directement, ne te contente pas de dire \"prends rendez-vous\".\n\nCRIT\u00c8RES D'ESCALADE\n\nEscalade vers Eyitola dans ces cas pr\u00e9cis :\n- La question touche \u00e0 une n\u00e9gociation de prix, un devis personnalis\u00e9, ou une remise\n- Le sujet d\u00e9passe ce que couvre ta base de connaissance, m\u00eame apr\u00e8s avoir cherch\u00e9\n- Le prospect exprime une frustration, une urgence forte, ou une situation qui demande un jugement humain\n- Le prospect demande explicitement \u00e0 parler \u00e0 Eyitola directement\n\nQuand tu escalades, informe le prospect que tu transmets sa demande et qu'Eyitola revient vers lui rapidement. Ne le laisse jamais sans r\u00e9ponse en attendant.\n\nCE QUE TU NE FAIS JAMAIS\n\n- N\u00e9gocier un prix ou confirmer une remise\n- Confirmer un rendez-vous sans passer par les outils verifier_disponibilite puis proposer_creneau\n- Donner un d\u00e9lai de livraison pr\u00e9cis qui n'est pas explicitement dans un document source\n- R\u00e9pondre \u00e0 des questions sans rapport avec Tol Product Lab, ses services, ou l'activit\u00e9 d'Eyitola\n- Poursuivre une conversation qui d\u00e9rive vers un sujet hors p\u00e9rim\u00e8tre professionnel",
          "maxIterations": 10,
          "returnIntermediateSteps": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3.1,
      "position": [
        688,
        -272
      ],
      "id": "2b1de24a-da8c-4072-bf1b-09a349f07810",
      "name": "AI Agent",
      "retryOnFail": true,
      "maxTries": 5,
      "waitBetweenTries": 2000
    },
    {
      "parameters": {
        "modelName": "models/gemini-2.5-flash",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1.1,
      "position": [
        304,
        -48
      ],
      "id": "58296b54-3bbb-49c5-bed6-bada5410e7e4",
      "name": "ai_languageModel",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {},
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.4,
      "position": [
        432,
        -48
      ],
      "id": "45e8a35d-c3a1-4c0a-9d9a-acf29bc30098",
      "name": "ai_memory"
    },
    {
      "parameters": {},
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "typeVersion": 1,
      "position": [
        1280,
        160
      ],
      "id": "255c92fc-1eee-40b8-bfcf-7b078732eee4",
      "name": "embeddings_model",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "toolDescription": "Lance un audit de performance web via l'API PageSpeed Insights de Google sur une URL donn\u00e9e. \u00c0 utiliser uniquement quand un prospect demande explicitement une analyse ou un audit de son site. N\u00e9cessite l'URL compl\u00e8te du site \u00e0 analyser en param\u00e8tre.",
        "url": "https://www.googleapis.com/pagespeedonline/v5/runPagespeed",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $fromAI('url', 'URL compl\u00e8te du site \u00e0 auditer, avec https://', 'string') }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.4,
      "position": [
        560,
        16
      ],
      "id": "8e1347bd-47b1-4417-b992-fe7f827e122a",
      "name": "audit_pagespeed",
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Enregistre ou met \u00e0 jour le suivi d'une conversation avec un prospect dans le tableau Prospects. \u00c0 utiliser en fin d'\u00e9change substantiel avec un statut de qualification. Ne pas utiliser pour de simples salutations sans \u00e9change r\u00e9el.",
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_GOOGLE_SHEET_ID"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Prospects",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "canal": "={{ $json.canal }}",
            "besoin": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('besoin', `r\u00e9sum\u00e9 court en une phrase du besoin exprim\u00e9 par le prospect`, 'string') }}",
            "statut": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('statut', `qualifi\u00e9, \u00e0 clarifier, ou escalad\u00e9`, 'string') }}",
            "date": "={{ $now }}",
            "sessionId": "={{ $json.sessionId }}",
            "username": "={{ $json.username }}",
            "firstname": "={{ $json.first_name }}"
          },
          "matchingColumns": [
            "sessionId"
          ],
          "schema": [
            {
              "id": "sessionId",
              "displayName": "sessionId",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "username",
              "displayName": "username",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "firstname",
              "displayName": "firstname",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "canal",
              "displayName": "canal",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "besoin",
              "displayName": "besoin",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "statut",
              "displayName": "statut",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "date",
              "displayName": "date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.7,
      "position": [
        688,
        -32
      ],
      "id": "193965bb-7943-4807-8f48-bd068d50c18d",
      "name": "log_conversation",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Propose et cr\u00e9e un cr\u00e9neau de rendez-vous dans le calendrier d'Eyitola. \u00c0 utiliser uniquement quand le prospect est jug\u00e9 qualifi\u00e9 avec une intention claire d'avancer. V\u00e9rifie d'abord la disponibilit\u00e9 avant de proposer un horaire pr\u00e9cis.",
        "calendar": {
          "__rl": true,
          "value": "your-email@example.com",
          "mode": "list",
          "cachedResultName": "your-email@example.com"
        },
        "start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', `date et heure de d\u00e9but du cr\u00e9neau propos\u00e9, format ISO 8601, ex: 2026-08-12T14:00:00`, 'string') }}",
        "end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', `date et heure de fin du cr\u00e9neau, g\u00e9n\u00e9ralement 30 minutes apr\u00e8s le d\u00e9but, format ISO 8601`, 'string') }}",
        "additionalFields": {
          "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', `r\u00e9sum\u00e9 du besoin discut\u00e9 pendant la conversation`, 'string') }}",
          "summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary', `titre court, ex: Appel d\u00e9couverte - [nom ou identifiant du prospect]`, 'string') }}"
        }
      },
      "type": "n8n-nodes-base.googleCalendarTool",
      "typeVersion": 1.3,
      "position": [
        816,
        16
      ],
      "id": "12e067e7-8cba-41a9-8caf-6000790aba3d",
      "name": "proposer_creneau",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "V\u00e9rifie les cr\u00e9neaux d\u00e9j\u00e0 occup\u00e9s dans le calendrier d'Eyitola sur une plage de dates donn\u00e9e. \u00c0 utiliser syst\u00e9matiquement avant de proposer un cr\u00e9neau au prospect via l'outil proposer_creneau, pour ne jamais sugg\u00e9rer un horaire d\u00e9j\u00e0 pris.",
        "operation": "getAll",
        "calendar": {
          "__rl": true,
          "value": "your-email@example.com",
          "mode": "list",
          "cachedResultName": "your-email@example.com"
        },
        "returnAll": true,
        "timeMin": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('After', `fin de la plage \u00e0 v\u00e9rifier, format ISO 8601`, 'string') }}",
        "timeMax": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Before', `d\u00e9but de la plage \u00e0 v\u00e9rifier, format ISO 8601`, 'string') }}",
        "options": {}
      },
      "type": "n8n-nodes-base.googleCalendarTool",
      "typeVersion": 1.3,
      "position": [
        944,
        -48
      ],
      "id": "b8d118c1-2abd-4ebc-8862-38c3a0b5beda",
      "name": "verifier_disponibilite",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Envoie une notification Telegram \u00e0 Eyitola quand une situation n\u00e9cessite son intervention humaine : n\u00e9gociation de prix, question hors base de connaissance, urgence, ou demande explicite de parler \u00e0 un humain. Utilise cet outil d\u00e8s qu'un des crit\u00e8res d'escalade du prompt syst\u00e8me est rempli.",
        "chatId": "YOUR_TELEGRAM_CHAT_ID",
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', `r\u00e9sum\u00e9 court de la situation et pourquoi elle n\u00e9cessite une intervention humaine, incluant le canal et l'identifiant du prospect`, 'string') }}",
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegramTool",
      "typeVersion": 1.2,
      "position": [
        1088,
        0
      ],
      "id": "149fd5b3-f7f5-4c73-a832-42f166bf3ebc",
      "name": "notifier_eyitola",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "mode": "retrieve-as-tool",
        "toolDescription": "Recherche dans la base de connaissance de Tol Product Lab pour r\u00e9pondre \u00e0 toute question sur l'activit\u00e9, les services propos\u00e9s, les tarifs, la m\u00e9thodologie, le positionnement d'Eyitola Sagbohan, ou le contenu des articles de blog index\u00e9s. \u00c0 utiliser en priorit\u00e9 avant de r\u00e9pondre \u00e0 une question factuelle sur l'entreprise, plut\u00f4t que de r\u00e9pondre depuis tes connaissances g\u00e9n\u00e9rales.",
        "tableName": {
          "__rl": true,
          "value": "concierge_documents",
          "mode": "list",
          "cachedResultName": "concierge_documents"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1.3,
      "position": [
        1200,
        -48
      ],
      "id": "2cd4067b-4e42-4a2c-9350-0d2379729fe5",
      "name": "knowledge_base",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "3e3c3a8e-b777-4c70-ac94-3dc63d9932e4",
              "name": "sessionId",
              "value": "={{ $json.message.chat.id }}",
              "type": "number"
            },
            {
              "id": "a53573f9-2c48-41d4-a166-8cf037adb6f6",
              "name": "chatInput",
              "value": "={{ $json.message.from.first_name + \": \" + $json.message.text }}",
              "type": "string"
            },
            {
              "id": "20b61105-bb83-402a-bf82-0fbb072224c3",
              "name": "username",
              "value": "={{ $json.message.from.username }}",
              "type": "string"
            },
            {
              "id": "555627a5-f47c-4b41-8261-c5dcecf497ba",
              "name": "first_name",
              "value": "={{ $json.message.from.first_name }}",
              "type": "string"
            },
            {
              "id": "de8c038b-8de0-4567-8e3b-6f478b6a9da4",
              "name": "canal",
              "value": "telegram",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        80,
        -272
      ],
      "id": "b623100f-3612-4880-8701-8f85520cd1bb",
      "name": "telegram_normalizer"
    },
    {
      "parameters": {
        "chatId": "={{ $('telegram_normalizer').first().json.sessionId }}",
        "text": "={{ $json.output }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        1568,
        -272
      ],
      "id": "214dbc05-830b-4ce5-8ad0-f8a2b668c76b",
      "name": "respond",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegramTrigger",
      "typeVersion": 1.4,
      "position": [
        -144,
        -272
      ],
      "id": "f0e66260-5e76-43a3-856d-95b24a649fa4",
      "name": "chat",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "ai_languageModel": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "ai_memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "embeddings_model": {
      "ai_embedding": [
        [
          {
            "node": "knowledge_base",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "audit_pagespeed": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "log_conversation": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "proposer_creneau": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "verifier_disponibilite": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "notifier_eyitola": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "respond",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "knowledge_base": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "telegram_normalizer": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "chat": {
      "main": [
        [
          {
            "node": "telegram_normalizer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": false
  },
  "versionId": "9f8bf723-b53b-49b3-b1c9-61abb3da4c3b",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodeGroups": [],
  "id": "YOUR_CREDENTIAL_ID",
  "tags": []
}

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

Agent. Uses googleGemini, httpRequest, emailSend, telegramTrigger. Webhook trigger; 18 nodes.

Source: https://github.com/Srinanth/AI-Agent/blob/fec70805502f4eb8343f1f7e8e3162c8d2c83ddc/workflows/agent.json — 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

Chanchito_PROD. Uses googleGemini, postgres, telegram, httpRequest. Scheduled trigger; 94 nodes.

Google Gemini, Postgres, Telegram +4
AI & RAG

Arvifund - Supabase (Fixed v6). Uses httpRequest, telegram, supabase, telegramTrigger. Event-driven trigger; 92 nodes.

HTTP Request, Telegram, Supabase +8
AI & RAG

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, MongoDB, Telegram Trigger +6
AI & RAG

Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.

HTTP Request, Telegram, Google Sheets +9
AI & RAG

Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.

HTTP Request, Telegram, Google Sheets +8