AutomationFlowsAI & RAG › Arlo Orchestrator

Arlo Orchestrator

ARLO Orchestrator. Uses telegramTrigger, telegram, lmChatOpenAi, agent. Event-driven trigger; 11 nodes.

Event trigger★★★☆☆ complexityAI-powered11 nodesTelegram TriggerTelegramOpenAI ChatAgentMemory Buffer WindowTool Workflow
AI & RAG Trigger: Event Nodes: 11 Complexity: ★★★☆☆ AI nodes: yes Added:

This workflow follows the Agent → OpenAI Chat 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": "ARLO Orchestrator",
  "nodes": [
    {
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegramTrigger",
      "typeVersion": 1.3,
      "position": [
        864,
        720
      ],
      "id": "25eebd20-acfc-4ea0-bc0a-503dbb24fa7d",
      "name": "Telegram Trigger",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
        "text": "={{ $json.output }}",
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        1824,
        704
      ],
      "id": "08d11277-3755-445c-a7a9-d7fe68a541cb",
      "name": "Send a text message",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "= qwen2.5:7b",
          "mode": "id"
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.3,
      "position": [
        1184,
        928
      ],
      "id": "0d58c5b4-4e80-445c-a4c3-bbd0742b6985",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.message.text }}",
        "options": {
          "systemMessage": "=You are a fast, efficient, and intelligent personal assistant. You manage finances, tasks, and schedules. \n\n[CURRENT CONTEXT]\nToday's Date and Time: {{ $now.setZone('Asia/Manila').toFormat('yyyy-MM-dd HH:mm:ss cccc') }} (Philippine Time). Always use this as your reference for \"today\", \"tomorrow\", or any relative time mentioned by the user.\n\n### Core Directives & Order of Operations:\n1. **TOOL EXECUTION FIRST (CRITICAL):** Depending on the user's input, your VERY FIRST AND ONLY action must be to natively invoke the appropriate tool ('Log Finances', 'Add Task', 'Schedule Event', or 'Get Financial Summary').\n2. **NO PRE-CHAT:** You are STRICTLY FORBIDDEN from generating any conversational text, pleasantries, or acknowledgments before calling the tool. \n3. **Automatic Inference:** DO NOT ask clarifying questions. Infer the required fields silently:\n   - For Finances: Infer amount, type (\"Expense\" or \"Gross Income\"), category, and description.\n   - For Financial Summary: Infer timeframe (e.g. today, this_month, ALL), category (e.g. Food, ALL), search_term. If user asks 'wallet balance', 'total income', or 'total expense', use 'ALL' for category. The tool returns both income and expense totals automatically, so DO NOT filter category by 'Income' or 'Expense'. MUST provide all 3 keys in JSON. Use empty string \"\" if no search term.\\n   - For Tasks: Infer title, priority (\"Low\", \"Medium\", \"High\"), due date (if any).\n   - For Schedules: Infer title, description, start_time (ISO string), and end_time (ISO string).\n   - `user_id`: Extract the exact User ID provided in the system context and pass it to the tools.\n4. **Confirmation Response:** ONLY after the tool has returned, generate a brief conversational reply. If the tool returns an error or conflict (e.g. time slot taken), inform the user nicely. If it succeeds, confirm the action."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3.1,
      "position": [
        1264,
        704
      ],
      "id": "4a19a0a0-e884-4053-952f-33eb7e87b98c",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $json.message.message_id }}"
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.4,
      "position": [
        1328,
        960
      ],
      "id": "582d121e-7437-4660-99a4-88c25b2f7195",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "description": "Use this tool to log a financial transaction (expense or income). You must extract the amount, type, category, and description from the user's message. Once the tool returns a success message, DO NOT call this tool again. Immediately respond to the user confirming it was logged.",
        "workflowId": {
          "__rl": true,
          "value": "3eSvtQBQyLlUiRQh",
          "mode": "list",
          "cachedResultUrl": "/workflow/3eSvtQBQyLlUiRQh",
          "cachedResultName": "Log Finances"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "amount": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('amount', ``, 'number') }}",
            "type": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('type', `Must be exactly \"Expense\" or \"Gross Income\". You MUST guess this automatically (e.g. if they spent money, it is an Expense).`, 'string') }}",
            "category": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('category', `The category of the transaction. You MUST guess this automatically based on the item (e.g. if hotdog, use 'Food'). Do not ask the user for it.`, 'string') }}",
            "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('description', `A short description of the item. Guess this from the user's message.`, 'string') }}",
            "user_id": "9d9cb047-85d3-4f2e-aa9d-bc618577342f"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "amount",
              "displayName": "amount",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "number",
              "removed": false
            },
            {
              "id": "type",
              "displayName": "type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "category",
              "displayName": "category",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "description",
              "displayName": "description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "user_id",
              "displayName": "user_id",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        1568,
        976
      ],
      "id": "df108ef2-644c-42e3-9026-31118c35ffba",
      "name": "Log Finances"
    },
    {
      "parameters": {
        "description": "Use this tool to add a task to the checklist. Extract title, priority, due_date.",
        "workflowId": {
          "__rl": true,
          "value": "1b0859db-ab3a-4c37-ac50-917ff2e3303d",
          "mode": "list",
          "cachedResultUrl": "",
          "cachedResultName": "Add Task"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('title', ``, 'string') }}",
            "priority": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('priority', `Must be 'Low', 'Medium', or 'High'.`, 'string') }}",
            "due_date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('due_date', `ISO string or empty`, 'string') }}",
            "user_id": "9d9cb047-85d3-4f2e-aa9d-bc618577342f"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "title",
              "displayName": "title",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "priority",
              "displayName": "priority",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "due_date",
              "displayName": "due_date",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "user_id",
              "displayName": "user_id",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        -2992,
        -200
      ],
      "id": "add-task-tool-node",
      "name": "Add Task"
    },
    {
      "parameters": {
        "description": "Use this tool to schedule an event. Extract title, description, start_time, end_time.",
        "workflowId": {
          "__rl": true,
          "value": "9b0859db-ab3a-4c37-ac50-917ff2e3303d",
          "mode": "list",
          "cachedResultUrl": "",
          "cachedResultName": "Schedule Event"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('title', ``, 'string') }}",
            "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('description', ``, 'string') }}",
            "start_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('start_time', `ISO string`, 'string') }}",
            "end_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('end_time', `ISO string`, 'string') }}",
            "user_id": "9d9cb047-85d3-4f2e-aa9d-bc618577342f"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "title",
              "displayName": "title",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "displayName": "description",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "start_time",
              "displayName": "start_time",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "end_time",
              "displayName": "end_time",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "user_id",
              "displayName": "user_id",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        -2992,
        0
      ],
      "id": "schedule-event-tool-node",
      "name": "Schedule Event"
    },
    {
      "parameters": {
        "description": "Use this tool to add a task to the checklist. Extract title, priority, due_date.",
        "workflowId": {
          "__rl": true,
          "value": "1b0859db-ab3a-4c37-ac50-917ff2e3303d",
          "mode": "list",
          "cachedResultUrl": "",
          "cachedResultName": "Add Task"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('title', ``, 'string') }}",
            "priority": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('priority', `Must be 'Low', 'Medium', or 'High'.`, 'string') }}",
            "due_date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('due_date', `ISO string or empty`, 'string') }}",
            "user_id": "9d9cb047-85d3-4f2e-aa9d-bc618577342f"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "title",
              "displayName": "title",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "priority",
              "displayName": "priority",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "due_date",
              "displayName": "due_date",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "user_id",
              "displayName": "user_id",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        -2992,
        -200
      ],
      "id": "add-task-tool-node",
      "name": "Add Task"
    },
    {
      "parameters": {
        "description": "Use this tool to schedule an event. Extract title, description, start_time, end_time.",
        "workflowId": {
          "__rl": true,
          "value": "9b0859db-ab3a-4c37-ac50-917ff2e3303d",
          "mode": "list",
          "cachedResultUrl": "",
          "cachedResultName": "Schedule Event"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('title', ``, 'string') }}",
            "description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('description', ``, 'string') }}",
            "start_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('start_time', `ISO string`, 'string') }}",
            "end_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('end_time', `ISO string`, 'string') }}",
            "user_id": "9d9cb047-85d3-4f2e-aa9d-bc618577342f"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "title",
              "displayName": "title",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "displayName": "description",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "start_time",
              "displayName": "start_time",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "end_time",
              "displayName": "end_time",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "user_id",
              "displayName": "user_id",
              "type": "string",
              "display": true,
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        -2992,
        0
      ],
      "id": "schedule-event-tool-node",
      "name": "Schedule Event"
    },
    {
      "parameters": {
        "description": "Use this tool to calculate financial summaries, check wallet balances, or lookup specific transactions. Optional params: timeframe (e.g. today, this_week, this_month, last_month, weekend), category (e.g. Food, Transport, or ALL), search_term (string to filter by description).",
        "workflowId": {
          "__rl": true,
          "value": "get-fin-sum-workflow-v1",
          "mode": "id",
          "cachedResultUrl": "",
          "cachedResultName": "Get Financial Summary"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "timeframe": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('timeframe', `e.g. today, this_month. If asking for overall balance or no time specified, output 'ALL'. MUST provide this key.`, 'string') }}",
            "category": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('category', `e.g. Food, Transport. If asking for overall balance, income, or expense, output 'ALL'. DO NOT use 'Income' or 'Expense' as categories. MUST provide this key.`, 'string') }}",
            "search_term": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('search_term', `e.g. internet. If no specific item mentioned, output empty string ''. MUST provide this key.`, 'string') }}",
            "user_id": "9d9cb047-85d3-4f2e-aa9d-bc618577342f"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "timeframe",
              "displayName": "timeframe",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "category",
              "displayName": "category",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "search_term",
              "displayName": "search_term",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "user_id",
              "displayName": "user_id",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        -2800,
        -100
      ],
      "id": "get-fin-sum-tool-node",
      "name": "Get Financial Summary"
    }
  ],
  "connections": {
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Log Finances": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Add Task": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Event": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Financial Summary": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": false
  },
  "versionId": "70d2e63f-ea23-4f90-a35d-0e994987fe2b",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodeGroups": [],
  "id": "IjPpV4DUEee9BT0I",
  "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

ARLO Orchestrator. Uses telegramTrigger, telegram, lmChatOpenAi, agent. Event-driven trigger; 11 nodes.

Source: https://github.com/JohnRobert-Olano/ARLO-Agentic-Relational-Logic-Operator-/blob/1ab9b36da881abf2c84aa99cca3e4615ef9eae9a/n8n/n8n-workflow.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

This workflow is perfect for:

Telegram Trigger, Tool Workflow, Airtable Tool +7
AI & RAG

📈 Get daily and on-demand Tesla (TSLA) trading signals via Telegram—powered by GPT-4.1 and real-time market data. This is the central AI supervisor that orchestrates seven sub-agents for technical ana

Telegram Trigger, OpenAI Chat, Telegram +3
AI & RAG

This workflow creates a powerful AI assistant in Telegram that helps you manage your tasks in Notion. The assistant leverages OpenAI's language models to understand natural language commands, process

Telegram Trigger, Agent, OpenAI Chat +6
AI & RAG

Agent Data Analyst + Visualisation. Uses nocoDbTool, httpRequest, executeWorkflowTrigger, lmChatOpenAi. Event-driven trigger; 23 nodes.

Noco Db Tool, HTTP Request, Execute Workflow Trigger +9
AI & RAG

SEO Blog Generator with GPT-4o, Perplexity, and Telegram Integration. Uses stickyNote, lmChatOpenAi, outputParserStructured, agent. Event-driven trigger; 22 nodes.

OpenAI Chat, Output Parser Structured, Agent +5