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.
The workflow uses a main Jarvis Manager Agent to understand the user's request and route it to the correct specialist agent, such as Gmail, Calendar, Google Tasks, Finance, or Contacts. It can send and reply to emails, manage calendar events, create and complete tasks, track expenses in Google Sheets, search contacts, and respond back to the user in Telegram.
This template is useful for anyone who wants a personal AI assistant that can manage daily productivity tasks from one simple chat interface.
This node starts the workflow whenever the Telegram bot receives a new message.
It listens for incoming Telegram updates. When a user sends a message to the bot, this node captures message details such as chat ID, message text, voice file ID, and sender information.
This node checks whether the incoming Telegram message is text or audio.
It checks if message.text exists.
If text exists, the workflow continues through the text path.
If text does not exist, it treats the message as an audio or voice message.
This node downloads the voice message file from Telegram.
When a user sends a voice note, Telegram provides a file_id. This node uses that file ID to fetch the actual audio file so it can be processed further.
This node converts the Telegram voice message into text.
It sends the downloaded audio file to OpenAI's audio transcription service. The output becomes normal text, which can then be understood by the AI agent.
This is the main brain of the workflow.
The Manager Agent receives either direct Telegram text or transcribed voice text. It understands the user's intent and decides which specialist agent should handle the request.
Instead of one AI agent doing everything, this node acts like a smart router. It sends each request to the correct expert agent, making the workflow more organized and scalable.
This node provides the language model for the Jarvis Manager Agent.
The Jarvis Manager Agent uses this OpenAI chat model to understand the user's message, decide the correct tool or agent, and generate a short final response.
This node gives Jarvis short-term memory.
It stores conversation context using the Telegram chat ID as the session key. This helps Jarvis remember recent conversation history for the same user.
This node allows the main agent to reason before choosing an action.
The Manager Agent can use this tool to internally think through the user's request and decide which specialist agent should be called.
This is the specialist agent for Gmail-related tasks.
The Manager Agent sends Gmail tasks to this agent, such as searching emails, sending emails, drafting emails, replying to emails, and managing labels. The Gmail Agent then chooses the correct Gmail tool.
This node powers the Gmail Agent.
It helps the Gmail Agent understand Gmail-related instructions and decide which Gmail action should be performed.
This node sends a new email through Gmail.
The Gmail Agent provides the recipient email, subject, and message body. This node then sends the email from the connected Gmail account.
This node replies to an existing Gmail message.
The Gmail Agent provides the message ID and reply content. This node sends the reply inside the correct email thread.
This node adds one or more Gmail labels to an email.
The Gmail Agent provides the message ID and label name or label ID. This node applies the selected label to organize the email.
This node retrieves Gmail labels.
It fetches the available Gmail labels so the Gmail Agent can use them for organizing or filtering emails.
This node creates a new email draft.
Instead of sending the email immediately, the Gmail Agent provides the recipient, subject, and message body, and this node saves it as a Gmail draft.
This node creates a draft reply inside an existing Gmail thread.
The Gmail Agent provides the thread ID, subject, and reply message. This node saves the response as a draft reply.
This node searches and retrieves Gmail messages.
The Gmail Agent can pass filters such as search query, sender, received after date, or received before date. This node returns matching emails.
This is the specialist agent for Google Calendar tasks.
The Manager Agent sends calendar-related requests to this agent. The Calendar Agent can check availability, get events, create events, reschedule events, and delete events.
This node powers the Calendar Agent.
It helps the Calendar Agent understand scheduling requests and choose the correct Google Calendar tool.
This node checks whether a time slot is available on Google Calendar.
The Calendar Agent provides a start time and end time. This node checks the connected calendar for conflicts.
This node retrieves upcoming Google Calendar events.
The Calendar Agent provides a date range, and this node returns matching calendar events ordered by start time.
This node deletes a Google Calendar event.
The Calendar Agent provides the event ID. This node removes the selected event from Google Calendar.
This node updates or reschedules an existing calendar event.
The Calendar Agent provides the event ID, new start time, new end time, and optional attendee details. This node updates the event in Google Calendar.
This node retrieves one specific calendar event.
The Calendar Agent provides the event ID, and this node fetches the full event details from Google Calendar.
This node creates a new Google Calendar event.
The Calendar Agent provides the event title, start time, end time, description, and reminder settings. This node creates the event in the connected calendar.
This is the specialist agent for Google Tasks.
The Manager Agent sends task-related requests to this agent, such as creating a task, reading tasks, completing a task, or deleting a task.
This node powers the Task Agent.
It helps the Task Agent understand task-related instructions and select the correct Google Tasks tool.
This node creates a new Google Task.
The Task Agent provides the task title, due date, and optional notes. This node adds the task to Google Tasks.
This node retrieves one specific Google Task.
The Task Agent provides the task ID, and this node fetches the matching task details.
This node retrieves multiple Google Tasks.
The Task Agent can ask for all tasks or filter based on completed and incomplete tasks. This node returns the matching task list.
This node marks a Google Task as completed.
The Task Agent provides the task ID and completion date. This node updates the task status to completed.
This node deletes a Google Task.
The Task Agent provides the task ID. This node removes the selected task from Google Tasks.
This is the specialist agent for expense tracking.
The Manager Agent sends finance-related requests to this agent, such as logging an expense, reading expense data, summarizing spending, or deleting expense rows.
This node powers the Finance Agent.
It helps the Finance Agent understand expense-related instructions and decide whether to read, create, summarize, or delete expense records.
This node reads expense data from Google Sheets.
It connects to the expense tracker spreadsheet and retrieves the existing expense records for analysis or summarization.
This node adds a new expense record to Google Sheets.
The Finance Agent provides values such as date, description, category, and amount. This node appends the expense as a new row in the spreadsheet.
This node deletes or clears expense rows from Google Sheets.
The Finance Agent provides the row number and number of rows to delete. This node clears the selected expense entry from the sheet.
This is the specialist agent for Google Contacts lookup.
The Manager Agent sends contact search requests to this agent. It can search for contact names, email addresses, and contact details.
This node powers the Contacts Agent.
It helps the Contacts Agent understand contact lookup requests and prepare the right search query.
This node searches Google Contacts.
The Contacts Agent provides a name, email, or query. This node searches the connected Google Contacts account and returns matching names and email addresses.
This node prepares the final response message.
It takes the output from the Jarvis Manager Agent and stores it in a clean field called message, so the Telegram reply nodes can use it easily.
This node decides whether Jarvis should reply with text or audio.
It checks the original Telegram input.
If the user sent a text message, Jarvis sends a text reply.
If the user sent a voice message, Jarvis generates and sends an audio reply.
This node sends Jarvis's final reply as a Telegram text message.
It sends the prepared response back to the same Telegram chat ID. It also escapes Markdown characters so the message displays correctly in Telegram.
This node converts Jarvis's final text reply into audio.
If the user originally sent a voice message, this node uses OpenAI audio generation to create an audio version of the response.
This node sends Jarvis's final reply as a Telegram audio file.
It sends the generated audio back to the same Telegram chat and adds the final message as a caption.
Before using this workflow, connect the following credentials: