This workflow corresponds to n8n.io template #15343 — we link there as the canonical source.
This workflow follows the Agent → Chat Trigger 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 →
{
"id": "FyJNBK0nGbZcKwd9",
"name": "MniBox - Rag - FINAL",
"tags": [],
"nodes": [
{
"id": "324d7c45-9479-4f0e-8d5d-8197c24489fb",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
10528,
656
],
"parameters": {
"options": {}
},
"typeVersion": 1.3
},
{
"id": "71ef0b01-2394-45ce-9630-9439c590dbc4",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
8768,
592
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "TID"
},
{
"name": "Name"
},
{
"name": "Workstream"
},
{
"name": "Status"
},
{
"name": "Due Date",
"type": "any"
},
{
"name": "Owner"
},
{
"name": "Prirority"
},
{
"name": "Source"
},
{
"name": "Links",
"type": "any"
},
{
"name": "Notes"
}
]
}
},
"typeVersion": 1.1,
"alwaysOutputData": false
},
{
"id": "3a082b96-18a8-4b68-82ec-9290c6acdce7",
"name": "Gemini \u2014 Classify Intent",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
10752,
656
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are Minibox, the Operations Manager.\n\nYour task is to read the user's message below and classify it into one of the following intents:\n[\"notion_create\", \"mail_send\", \"gen_input\", \"notion_update\",\"latest_TID\"]\n\nReturn your answer strictly in this format:\nintent=<one_of_the_above>, message=<original_user_message>\n\nOnly use latest_TID if the user ask for it\nDo not include explanations, greetings, or any extra text.\n\nUser message:\n{{ $json.chatInput }}"
}
]
}
},
"typeVersion": 1
},
{
"id": "ff182d6f-74e3-4395-b094-fe4cb1cc8543",
"name": "Parse Intent from Response",
"type": "n8n-nodes-base.code",
"position": [
11104,
656
],
"parameters": {
"jsCode": "const output = $input.first().json.content.parts[0].text;\nconst [intentPart] = output.split(\",\");\nreturn [\n {\n json: {\n intent: intentPart.split(\"=\")[1]?.trim(),\n message: $('When chat message received').first().json.chatInput\n },\n },\n];\n"
},
"typeVersion": 2
},
{
"id": "b2e90696-2df5-45f5-b77f-67a19d35d2bf",
"name": "Gemini \u2014 Task Creator",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
11552,
-16
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "2c2bd310-9fd2-45de-8e7f-09b70fab7203",
"name": "Call Sub-Create Workflow",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
11680,
-16
],
"parameters": {
"workflowId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": "Sub-create"
},
"description": "Call this tool to create a new page in the notion database, the data base contains:\n- TID (task id)\n- Name (title)\n- Workstream (select: Registrations, Sponsorships, Content, Logistics, Agenda, Exhibition, Finance, Legal, IT/Website)\n- Status (select: Backlog, In Progress, Waiting Approval, On Hold, Done)\n- Due Date (date, format: YYYY-MM-DD)\n- Owner (rich_text)\n- Priority (select: Low, Medium, High, Urgent)\n- Source (rich_text)\n- Links (url)\n\nOnly call the Sub-create workflow once and stop.\n"
},
"typeVersion": 2.2
},
{
"id": "7bee069d-55f9-4a31-8386-3fc94aa76b84",
"name": "Gemini \u2014 Report Generator",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
11616,
784
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "bfacbf5a-0eda-49da-bf70-eb876bd1377e",
"name": "Gemini \u2014 Email Composer",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
11616,
384
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "c4596095-15de-4f0b-8f51-a9f72c28ac7f",
"name": "Read Notion DB \u2014 Report",
"type": "n8n-nodes-base.notionTool",
"position": [
11744,
784
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "YOUR_NOTION_DATABASE_ID",
"cachedResultUrl": "",
"cachedResultName": "Workstreams"
}
},
"typeVersion": 2.2
},
{
"id": "4b14da8c-f7c4-48c0-8ae4-0d058f07bda4",
"name": "Gemini \u2014 Notion Updater",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
11568,
1184
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "d04c66e5-a4f0-40b1-8fa5-1e43ca162483",
"name": "Call Sub-Update Workflow",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
11680,
1184
],
"parameters": {
"workflowId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": "sub -update"
},
"description": "call this tool to update database in notion."
},
"typeVersion": 2.2
},
{
"id": "15c8657b-d30b-4b11-973f-2f2d1b9c2de7",
"name": "Notion Updater Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
11616,
960
],
"parameters": {
"text": "=You are MiniBox, the Notion Database Updater.\n\nYou have access to a workflow tool called **Update Notion Task**, which updates existing tasks in the Notion Workstreams database.\n\n---\n\n### \ud83c\udfaf Your Objective\nWhen the user requests an update \n\n1. **Identify the task** mentioned in the message.\n - Detect the Task ID (`TID` or `Task_ID`) from the user\u2019s input.\n - Normalize it to the format \u201cTID-<number>\u201d.\n\n2. **Fetch the task data** from the Notion database using the detected TID.\n - Retrieve all task properties: \n `TID`, `Name`, `Workstream`, `Status`, `Due Date`, `Owner`, `Priority`, `Source`, `Links`, and `Notes`. \n - Include the User mentioned task\u2019s Notion `UUID (Task_UUID)`. and pass the internal Notion UUID as Task ID\n\n3. **Apply the requested update** to that fetched data.\n - Identify which property is being updated (e.g., Status, Priority, Owner, Due Date, etc.).\n - Replace its old value with the new value mentioned by the user (e.g., \u201cDone\u201d, \u201cHigh\u201d, \u201cAli Hassan\u201d, \u201c2025-10-21\u201d).\n - Keep all other fields **unchanged**.\n\n4. **Send the full updated task data** to the **Update Notion Task** sub-workflow tool.\n\n---\n\n### \ud83d\udce6 JSON object required by the sub-workflow\nThe object you must send should contain **all fields** needed for a Notion update:\n\n```json\n{\n \"Task_UUID\": \"<TaskID mentioned by USER>\",\n \"TID\": \"<external_task_id>\",\n \"Title\": \"<task name>\",\n \"Workstream\": \"<workstream name>\",\n \"Status\": \"<updated status>\",\n \"Due Date\": \"<YYYY-MM-DD>\",\n \"Owner\": \"<assigned person>\",\n \"Priority\": \"<priority>\",\n \"Source\": \"<origin or request>\",\n \"Links\": \"<url if available>\",\n \"Notes\": \"<task description or notes>\"\n}\n\nUser Msg:\n {{ $json.message }}",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "ef159ebd-8cf9-4800-a212-bded6f3132bb",
"name": "Report Generator Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
11616,
560
],
"parameters": {
"text": "=You are MiniBox, the Operations Manager and Report Assistant.\n\nYou can summarize project data, generate digests, and answer user questions using information from the Notion databases (Workstreams, Tasks, Sponsors, Logistics, etc.).\n\n---\n\n\ud83c\udfaf Your Responsibilities\n1. If the user **asks for the daily or weekly digest / report**, call the Notion tool to generate a summary.\n2. If the user asks about **specific items** such as:\n - \"pending tasks\"\n - \"delayed items\"\n - \"completed work\"\n - \"tasks by department\"\n \u2192 Use the Notion tool to fetch and summarize only that part.\n3. If the user asks a **general or conversational question**, respond politely from your own knowledge (don\u2019t call the Notion tool).\n4. If the user message is **unrelated**, respond courteously and redirect the conversation to helpful topics.\n\n---\n\n### \ud83e\udde0 When using the Notion Tool:\n- Query the database only for the specific data requested.\n- Return a clear, concise summary \u2014 no raw lists or IDs.\n- Format the response neatly in plain text (no JSON or bullet overload).\n- Never modify or create new pages in Notion.\n\n---\n\n### \ud83d\uddd2\ufe0f Output Guidelines:\nIf generating a digest, include:\n- Completed tasks\n- Pending or delayed tasks\n- Red flag alerts\n- Summary per department (brief)\n\nIf showing specific requests:\n- Mention only the relevant tasks with Task_ID and data.\n- Be clear and organized.\n\nIf replying conversationally:\n- Be polite, short, and natural (e.g., \u201cSure! What kind of report would you like \u2014 full digest or just pending items?\u201d)\n\n---\n\n### \ud83e\udde9 Examples\n\n**User:** \u201cGenerate today\u2019s report.\u201d\n\u2192 *Use Notion tool to create digest.*\n\u201cHere\u2019s today\u2019s summary:\n- 5 tasks completed (Content & Logistics)\n- 3 pending (Finance & Sponsorships)\n- 1 delayed in IT/Website\nOverall, good progress!\u201d\n\n\n\n---\n\n**User:** \u201cHow are we doing overall?\u201d\n\u2192 *General question \u2014 answer conversationally.*\n\u201cWe\u2019re on track! Most departments have met their goals for the week.\u201d\n\n---\n\n**User:** \u201cHi MiniBox\u201d\n\u2192 *General greeting.*\n\u201cHi there! How can I assist you today?\u201d\n\n---\n\n### \ud83d\udeab Never Do:\n- Don\u2019t generate a digest unless the user explicitly requests it.\n- Don\u2019t create or modify Notion data.\n- Don\u2019t show technical JSON or database fields.\n\n---\n\n### User Message:\n{{$json[\"message\"]}}\n\nNow respond as MiniBox:\nProvide only the final user-facing message.\n",
"options": {},
"promptType": "=define"
},
"typeVersion": 2.2
},
{
"id": "23d70e48-38dd-4ee4-a94c-e41c058d02ac",
"name": "Email Composer Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
11616,
160
],
"parameters": {
"text": "=You are MiniBox, the Operations Manager for the project.\n\nYour task is to interpret the user's message and prepare an email to send\nThe user's message will be provided below.\n\nYou must:\n1. Identify the recipient(s) \u2014 person or team mentioned in the message.\n2. Extract the email purpose and generate a short, clear subject line.\n3. Write a professional, concise email body that reflects the intent of the user.\n4. If the message is incomplete or ambiguous, make a polite, intelligent assumption to fill in missing details.\n5. Never ask the user for more input; just generate the best possible email from what you have.\n\nReturn your output in the following format:\nTo: <recipient or team>\nSubject: <short, descriptive subject>\nBody:\n<polished professional email body>\n\nUser message:\n{{ $json.message }}",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "b2a0d244-7778-4e94-80a9-5c4443b6c386",
"name": "Task Creator Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
11616,
-272
],
"parameters": {
"text": "=You are MiniBox, the Operations Manager for the \"Workstream\" Notion Dashboard.\n\nYou have access to a sub-workflow tool that creates new pages in the \u201cWorkstreams\u201d Notion database.\n\n---\n\n### \ud83e\udde0 Database Schema\nEach page in the database includes the following properties:\n\n- **TID (Task ID)** \u2014 unique incremental identifier (e.g., TID-106)\n- **Name** \u2014 main title of the task\n- **Workstream** \u2014 select from: Registrations, Sponsorships, Content, Logistics, Agenda, Exhibition, Finance, Legal, IT/Website\n- **Status** \u2014 select from: Backlog, In Progress, Waiting Approval, On Hold, Done\n- **Due Date** \u2014 date (format: YYYY-MM-DD)\n- **Owner** \u2014 person or team name\n- **Priority** \u2014 select from: Low, Medium, High, Urgent\n- **Source** \u2014 short text or description of task origin\n- **Links** \u2014 URL (optional)\n\n---\n\n### \ud83c\udfaf Your Objective\n1. Read the user\u2019s message carefully and extract all relevant task details. \n - Generate a clear, descriptive **Name** for the task.\n - Identify the correct **Workstream**, **Status**, **Owner**, and any other relevant fields.\n - If the user mentions a due date, extract it and convert to `YYYY-MM-DD` format.\n\n2. For **TID (Task ID):**\n - User will specify the Task ID\n\n3. Prepare a **single structured JSON object** containing all fields exactly as shown below.\n\n4. Call the **Notion Page Creation sub-workflow** **once**, passing this JSON object as input. \n The sub-workflow handles validation, formatting, and Notion API creation. \n You must not output text, explanations, or multiple calls.\n\n5. Use curretDate tool to set the value of the Deadline, eg. if user says to set the deadline for tommorow then get the data and set it accordingly then pass it to the other workflow\n\n---\n\n### \ud83d\udce6 Required JSON Payload\nWhen calling the sub-workflow, provide the data in this exact structure:\n\n```json\n{\n \"TID\": \"<Task ID>\",\n \"Title\": \"<main task or page title>\",\n \"Workstream\": \"<workstream name>\",\n \"Status\": \"<status>\",\n \"Due Date\": \"<date in YYYY-MM-DD>\",\n \"Owner\": \"<assigned person or team>\",\n \"Priority\": \"<priority>\",\n \"Source\": \"<origin of task or note>\",\n \"Notes\": \"<description or context>\"\n}\n\n---\n### \ud83e\udde9 Output Requirements\n- Do **not** ask for missing details; infer them from the message.\n- Do **not** request clarification.\n- Always generate a single JSON object using what\u2019s provided and reasonable defaults.\n- Output only the JSON object (no explanation or questions).\n\n### \ud83d\udcac User Message\n{{$json[\"message\"]}}\n\nNow respond with only the structured JSON object.\n\nYour output must be valid JSON.\n- All string values must be enclosed in double quotes (\"\").\n- Do not include comments, semicolons, or extra spaces.\n- Output only the JSON object, nothing else.\n\nIf the user mentions a name \u2192 Owner.\nIf the user mentions \"by tomorrow\" \u2192 Due Date = tomorrow\u2019s date (YYYY-MM-DD).\nIf the user mentions a group/team \u2192 Workstream = that team name.\nIf the user provides a Task ID \u2192 use it directly.\n\n",
"options": {},
"promptType": "define"
},
"executeOnce": false,
"typeVersion": 2.2
},
{
"id": "f6a6cd15-ee9a-4c1e-a16f-cdf89a1eef20",
"name": "Fetch All Notion Tasks",
"type": "n8n-nodes-base.notion",
"position": [
11680,
1360
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "YOUR_NOTION_DATABASE_ID",
"cachedResultUrl": "",
"cachedResultName": "Workstreams"
}
},
"typeVersion": 2.2
},
{
"id": "c30af49a-2d4f-4d53-9590-6843f4362911",
"name": "Extract Latest TID",
"type": "n8n-nodes-base.code",
"position": [
12016,
1360
],
"parameters": {
"language": "python",
"pythonCode": "# \u2705 Safely return property_tid from the first input item\n# Get first item safely\nfirst_item = _input.last() or {}\nitem_json = first_item.get(\"json\", {})\n\n# Get the value if present\ntid_value = item_json.get(\"property_tid\")\n\n# Return structured output (n8n expects a list of dicts)\nreturn [{\n \"json\": {\n \"message\": f\"The latest TID is: {tid_value}\"\n }\n}]\n\n"
},
"typeVersion": 2
},
{
"id": "1ae6c96c-34d9-4b2f-b9e1-f42b10fd8d87",
"name": "Read Notion DB \u2014 Updater",
"type": "n8n-nodes-base.notionTool",
"position": [
11808,
1184
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "YOUR_NOTION_DATABASE_ID",
"cachedResultUrl": "",
"cachedResultName": "Workstreams"
}
},
"typeVersion": 2.2
},
{
"id": "3e6827c1-c5b5-43be-a404-c19fa2691c41",
"name": "Get Current Date",
"type": "n8n-nodes-base.dateTimeTool",
"position": [
11808,
-16
],
"parameters": {
"options": {},
"outputFieldName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Output_Field_Name', ``, 'string') }}"
},
"typeVersion": 2
},
{
"id": "a5d73882-299f-46f5-9197-bdbd0b20100f",
"name": "Route by Intent",
"type": "n8n-nodes-base.switch",
"position": [
11328,
608
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "notion_create",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f98665b5-cb9f-4c28-85fc-826c75729e09",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.intent }}",
"rightValue": "notion_create"
}
]
},
"renameOutput": true
},
{
"outputKey": "mail_send",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "79a8f00c-e232-4bc0-8071-80e9957a2704",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.intent }}",
"rightValue": "mail_send"
}
]
},
"renameOutput": true
},
{
"outputKey": "gen_digest",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2f06c2c3-fb32-4e84-bfab-ec32514e0fdb",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.intent }}",
"rightValue": "gen_input"
}
]
},
"renameOutput": true
},
{
"outputKey": "notion_update",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "00936cf5-190c-43af-a0de-ca5ed2110e7f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.intent }}",
"rightValue": "notion_update"
}
]
},
"renameOutput": true
},
{
"outputKey": "latest_tid",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c428747d-163a-4099-b2fe-6b4170b3bb99",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.intent }}",
"rightValue": "latest_TID"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "9337cc5b-b0b1-4ef4-b44f-799e11cf35d9",
"name": "Send Gmail Message",
"type": "n8n-nodes-base.gmailTool",
"position": [
11744,
384
],
"parameters": {
"options": {}
},
"typeVersion": 2.1
},
{
"id": "6727edfe-d467-4657-aaf5-dbe410cfe09b",
"name": "Chatbot Section",
"type": "n8n-nodes-base.stickyNote",
"position": [
10416,
-320
],
"parameters": {
"color": 7,
"width": 2064,
"height": 1872,
"content": "## Chatbot\n\n**Purpose:** Accept a user message, classify the intent with Gemini, and route to the correct agent\n\n"
},
"typeVersion": 1
},
{
"id": "e5b4e1e0-2208-4c4b-af3a-8bd44892e46f",
"name": "Build Notion Payload",
"type": "n8n-nodes-base.set",
"position": [
9264,
608
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={\n \"TID\":\"{{ $('When Executed by Another Workflow').item.json.TID }}\",\n \"Title\": \" {{ $('When Executed by Another Workflow').item.json.Name }}\",\n \"Workstream\": \"{{ $('When Executed by Another Workflow').item.json.Workstream }}\",\n \"Status\": \"{{ $('When Executed by Another Workflow').item.json.Status }}\",\n \"Due Date\": \"{{ $('When Executed by Another Workflow').item.json['Due Date'] }}\",\n \"Owner\": \"{{ $('When Executed by Another Workflow').item.json.Owner }}\",\n \"Priority\": \"{{ $('When Executed by Another Workflow').item.json.Prirority }}\",\n \"Source\": \"{{ $('When Executed by Another Workflow').item.json.Source }}\",\n \"Notes\": \"{{ $('When Executed by Another Workflow').item.json.Notes }}\"\n}\n",
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "abd7f820-9c83-4f58-99f8-0a72a61e2a3f",
"name": "Clear Date Field",
"type": "n8n-nodes-base.set",
"position": [
9712,
512
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "79194bc3-853f-4e7d-9d7c-233ddea5e485",
"name": "formattedDate",
"type": "string",
"value": "="
}
]
}
},
"typeVersion": 3.4
},
{
"id": "429bdf0a-9312-4bc1-bd87-f702ba141d4a",
"name": "Create Notion Page",
"type": "n8n-nodes-base.notion",
"position": [
9936,
608
],
"parameters": {
"title": "={{ $json.properties.Name }}",
"simple": false,
"options": {},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "YOUR_NOTION_DATABASE_ID",
"cachedResultUrl": "",
"cachedResultName": "Workstreams"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Task Name|title",
"title": "={{ $json.properties.Name.title[0].text.content }}"
},
{
"key": "Workstream|rich_text",
"textContent": "={{ $json.properties.Workstream.rich_text[0].text.content }}"
},
{
"key": "Status|select",
"selectValue": "={{ $json.properties.Status.select.name }}"
},
{
"key": "Due Date|date",
"date": "={{ $json.properties['Due Date'].date.start }}"
},
{
"key": "Owner|rich_text",
"textContent": "={{ $json.properties.Owner.rich_text[0].text.content }}"
},
{
"key": "Priority|select",
"selectValue": "={{ $json.properties.Priority.select.name }}"
},
{
"key": "Source|rich_text",
"textContent": "={{ $json.properties.Source.rich_text[0].text.content }}"
},
{
"key": "Links|url",
"urlValue": "={{ $json.properties.Links.url }}"
},
{
"key": "Source|rich_text",
"textContent": "Whatsapp"
},
{
"key": "Notes|rich_text",
"textContent": "={{ $json.properties.Notes.rich_text[0].text.content }}"
},
{
"key": "TID|rich_text",
"textContent": "={{ $json.properties.TID.rich_text[0].text.content }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c03802ca-87f3-4bf1-9e84-8369dceab68c",
"name": "Has Valid Date?",
"type": "n8n-nodes-base.if",
"position": [
9488,
608
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fec8ad7b-0f36-436c-ad5e-0c092c320059",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.formattedDate }}",
"rightValue": "01/01/1970"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "5e6b8e45-ab65-4e35-b22e-94b44c48eaba",
"name": "Format Due Date",
"type": "n8n-nodes-base.dateTime",
"position": [
9040,
608
],
"parameters": {
"date": "={{ $json['Due Date'] }}",
"options": {},
"operation": "formatDate"
},
"typeVersion": 2
},
{
"id": "7ef9968e-acf4-41c4-a986-f1c14252bd5c",
"name": "Build Full Notion Payload",
"type": "n8n-nodes-base.code",
"position": [
9712,
704
],
"parameters": {
"jsCode": "// \u2705 Safe Notion Page Creation payload builder with TID support\n\nconst inputItems = $input.all();\nconst output = [];\n\n// Helper: clean string\nconst getSafe = (val, fb = \"\") =>\n typeof val === \"string\" && val.trim() !== \"\" ? val.trim() : fb;\n\n// Helper: parse to ISO (YYYY-MM-DD)\nconst toISODate = (val) => {\n if (!val) return null;\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(val)) return val;\n const parsed = new Date(val);\n if (isNaN(parsed.getTime())) return null;\n return parsed.toISOString().split(\"T\")[0];\n};\n\nfor (const item of inputItems) {\n const data = item.json;\n\n // Ensure Due Date is ISO or fallback to today\n const isoDate = toISODate(data[\"Due Date\"]) || new Date().toISOString().split(\"T\")[0];\n\n output.push({\n json: {\n parent: { database_id: \"28b363499f1080f6817ad1ebaceebadc\" },\n properties: {\n // \u2705 New TID property\n TID: {\n rich_text: [\n { text: { content: getSafe(data.TID, \"\") } }\n ]\n },\n\n // Title\n Name: {\n title: [{ text: { content: getSafe(data.Title, \"Untitled Task\") } }]\n },\n\n // Workstream\n Workstream: {\n rich_text: [\n { text: { content: getSafe(data.Workstream, \"General\") } }\n ]\n },\n\n // Status\n Status: data.Status\n ? { select: { name: data.Status } }\n : { select: { name: \"In Progress\" } },\n\n // Due Date\n \"Due Date\": { date: { start: isoDate } },\n\n // Owner\n Owner: {\n rich_text: [\n { text: { content: getSafe(data.Owner, \"MiniBox\") } }\n ]\n },\n\n // Priority\n Priority: data.Priority\n ? { select: { name: data.Priority } }\n : { select: { name: \"Medium\" } },\n\n // Source\n Source: {\n rich_text: [\n { text: { content: getSafe(data.Source, \"\") } }\n ]\n },\n\n // Links\n Links: getSafe(data.Links)\n ? { url: getSafe(data.Links) }\n : { url: null },\n\n // Notes (optional)\n Notes: {\n rich_text: [\n { text: { content: getSafe(data.Notes, \"\") } }\n ]\n }\n }\n }\n });\n}\n\nreturn output;\n"
},
"typeVersion": 2
},
{
"id": "beb2caba-d589-4c41-843e-b0f832356515",
"name": "Sub-Create Section",
"type": "n8n-nodes-base.stickyNote",
"position": [
8672,
320
],
"parameters": {
"color": 7,
"width": 1584,
"height": 560,
"content": "## Sub-Create\n\n**Purpose:** Validate, format, and write a new task page to the Notion Workstreams database\n\nReceives task fields from Task Creator Agent. Formats the due date, builds the full Notion API payload, and creates the page. If no due date is supplied, the date field is cleared rather than defaulting to epoch.\nCalled by Task Creator Agent via the Call Sub-Create Workflow tool node. After importing, update the workflow ID in that tool node to point to this workflow."
},
"typeVersion": 1
},
{
"id": "fac06b51-cf93-4d4d-94d7-e04c4c09de94",
"name": "Weekly Report Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
13088,
512
],
"parameters": {
"text": "\nYou are MiniBox, a **Weekly Progress Reporter**. Your task is to analyze the provided data from a Notion database, covering the activity of the past week, and generate a structured, comprehensive, and strategic weekly status report.\n\n## 1. Input Data Structure\nThe input will be a JSON array of objects, where each object represents a Notion database item (a row/page). You must analyze status changes and priorities. Key fields include:\n- `Title` (the name of the task/item)\n- `Status` (e.g., 'To Do', 'In Progress', 'Done', 'Blocked')\n- `Priority` (e.g., 'High', 'Medium', 'Low', 'P0', 'P1')\n- `Due Date` (to track approaching deadlines)\n\n## 2. Output Report Format\nThe final output must be a **single Markdown-formatted text string** following this exact structure:\n\n### \ud83d\ude80 Weekly Progress Report - Week Ending [Current Date - e.g., October 20]\n\n### \u2705 Key Accomplishments This Week (Status: Done)\n*List 3-5 of the most significant items completed in the past week. Prioritize 'High' priority items that moved to 'Done'. If few completions, list the most actively progressed items ('In Progress').*\n- **[Title of Completed Item 1]** (Priority: [Priority]) - Assigned To : [Owner]\n- **[Title of Completed Item 2]** (Priority: [Priority]) - Assigned To : [Owner]\n- ...\n\n### \ud83d\udea7 Current Roadblocks and Dependencies (Status: Not Done/In progress/Back Log/Waiting Approval/On Hold)\n*List all items currently marked like 'Blocked' or 'On Hold' or similar to these but not as 'Done'. For each, briefly infer the dependency or blocker based on the item's title or notes (if available).*\n- **[Title of Item 1]**: [Suggested reason/dependency] - Assigned To : [Owner]\n- **[Title of Item 2]**: [Suggested reason/dependency] - Assigned To : [Owner]\n- ...\n\n### \ud83c\udfaf Strategic Focus for Next Week\n*Based on the outstanding 'High' priority items and approaching 'Due Dates', suggest 2-4 strategic goals or projects the team must focus on in the upcoming week to maximize momentum.*\n1. [Strategic Goal 1] (e.g., \"Finalize integration testing for Module X.\")\n2. [Strategic Goal 2] (e.g., \"Clear all dependencies blocking P0 tasks.\")\n\n### \ud83d\udca1 High-Level Summary and Takeaway\n*Write a short paragraph (3-4 sentences) that summarizes the team's performance, addresses any key risks (like critical roadblocks or missed deadlines), and sets a positive but challenging tone for the week ahead.*\n*[High-Level Summary and Takeaway]*\n\n## 3. Processing Instructions\n1. **Time Frame:** Assume the report covers the last seven days of activity. Analyze the `Last Edited Time` and `Status` fields to determine what was completed this week.\n2. **Focus:** Shift the focus from *daily execution* to *weekly strategic completion* and *future planning*.\n3. **Inference:** When listing roadblocks, make a reasonable guess at the dependency if the data doesn't explicitly provide a reason.\n4. **Clarity:** Ensure the tone is professional, analytical, and forward-looking.\n```\n",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "6a466eb6-9f2b-44d6-85ce-9b79ceba2cd2",
"name": "Every Friday at 9am",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
12768,
512
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
5
],
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "440f5512-d9f3-4813-ba12-1e3cc89a17f0",
"name": "Gemini \u2014 Weekly Report",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
13088,
704
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "66089d2c-ed9b-4415-90f7-c5a1ce54b163",
"name": "Read Notion DB \u2014 Weekly",
"type": "n8n-nodes-base.notionTool",
"position": [
13232,
784
],
"parameters": {
"simple": false,
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "YOUR_NOTION_DATABASE_ID",
"cachedResultUrl": "",
"cachedResultName": "Workstreams"
}
},
"typeVersion": 2.2
},
{
"id": "c30cc81a-5fe8-48c6-9a25-f716eaac6c26",
"name": "Weekly Report Section",
"type": "n8n-nodes-base.stickyNote",
"position": [
12576,
304
],
"parameters": {
"color": 7,
"width": 1168,
"height": 816,
"content": "## Weekly Report\n\n**Purpose:** Every Friday at 9 am \u2014 fetch all Notion tasks and generate a structured weekly progress report\n"
},
"typeVersion": 1
},
{
"id": "613fe6a8-6ea3-4632-b0b3-aaee967a5804",
"name": "Daily Digest Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
15648,
560
],
"parameters": {
"text": "\nYou are MiniBox a **Daily Reporting Agent**. Your task is to analyze the provided data from a Notion database and generate a structured, professional, and motivating daily status report.\n\n## 1. Input Data Structure\nThe input will be a JSON array of objects, where each object represents a Notion database item (a row/page). Key fields you must analyze include:\n- `Title` (the name of the task/item)\n- `Status` (e.g., 'In Progress', 'Done', 'Backlog','Waiting Approval')\n- `Priority` (e.g., 'High', 'Medium', 'Low', 'Urgent')\n- `Owner` (owner of the task)\n- *Include other relevant fields if available, such as `Due Date`, `Tags'.\n\n## 2. Output Report Format\nThe final output must be a **single Markdown-formatted text string** following this exact structure:\n\n### \u2600\ufe0f Daily Status Report - [Current Date/Day - e.g., Thursday, October 16]\n\n### \ud83d\udd34 High Priority Items to Focus On (Priority: High )\n*List all items with 'High' or 'P0' priority that have a 'To Do' or 'In Progress' status. Limit to a maximum of 5 items. If more than 5, prioritize those edited most recently.*\n- **[Title of Item 1]** (Status: [Status]) - Assigned To : [Owner]\n- **[Title of Item 2]** (Status: [Status]) - Assigned To : [Owner]\n- ...\n\n### \ud83d\udccb Currently Pending Items (Status: Anything EXCULUDING DONE)\n*List all items with 'To Do' or 'Blocked' status (excluding those already listed above).Sort by 'Priority' (High first) and then 'Status'.*\n\n- **[Title of Item 1]** (Priority: [Priority]) - Assigned To : [Owner]\n- **[Title of Item 2]** (Priority: [Priority]) - Assigned To : [Owner]\n- ...\n\n### \ud83e\udded Suggested Areas to Cover Today\n*Based on the listed high-priority items and pending tasks, suggest 2-3 broad strategic areas or themes the team should concentrate their efforts on today. E.g., \"Address critical user-reported bugs,\" \"Finalize Q4 planning documents.\"*\n1. [Area Suggestion 1]\n2. [Area Suggestion 2]\n\n### \u2728 Daily Motivation Note\n*Write a short (2-3 sentence), encouraging, and positive note for the team to start the day. Focus on teamwork, impact, and momentum.*\n*[Short Motivational Message]*\n\n## 3. Processing Instructions\n1. **Filter and Sort:** Categorize the input items based on `Status` and `Priority`.\n2. **Date:** Use the current date for the report title.\n3. **Conciseness:** Ensure the lists are concise, adhering to the specified item limits.\n4. **Clarity:** Use clear and professional language throughout the report.\n```",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "bd3a7458-5e53-4052-808c-81d22e0bd980",
"name": "Gemini \u2014 Daily Digest",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
15600,
784
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "b415601a-f512-411f-8e55-62f2732863bd",
"name": "Daily at 9am \u2014 Digest",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
15312,
560
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d1a6a27c-9723-4001-8dd2-c9762f9fd2d6",
"name": "Read Notion DB \u2014 Digest",
"type": "n8n-nodes-base.notionTool",
"position": [
15792,
768
],
"parameters": {
"simple": false,
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "YOUR_NOTION_DATABASE_ID",
"cachedResultUrl": "",
"cachedResultName": "Workstreams"
}
},
"typeVersion": 2.2
},
{
"id": "d86f56ab-1d06-417a-b1be-4b6633357d1d",
"name": "Weekly Digest Section",
"type": "n8n-nodes-base.stickyNote",
"position": [
15040,
416
],
"parameters": {
"color": 7,
"width": 1312,
"height": 560,
"content": "## Weekly Digest\n\n**Purpose:** Daily at 9 am \u2014 second daily report agent, same structure as Daily Report\n\n"
},
"typeVersion": 1
},
{
"id": "5a9067c9-2fd3-4c20-b138-40c03b1cc6a3",
"name": "Daily Report Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
14352,
560
],
"parameters": {
"text": "\nYou are MiniBox a **Daily Reporting Agent**. Your task is to analyze the provided data from a Notion database and generate a structured, professional, and motivating daily status report.\n\n## 1. Input Data Structure\nThe input will be a JSON array of objects, where each object represents a Notion database item (a row/page). Key fields you must analyze include:\n- `Title` (the name of the task/item)\n- `Status` (e.g., 'In Progress', 'Done', 'Backlog','Waiting Approval')\n- `Priority` (e.g., 'High', 'Medium', 'Low', 'Urgent')\n- `Owner` (owner of the task)\n- *Include other relevant fields if available, such as `Due Date`, `Tags'.\n\n## 2. Output Report Format\nThe final output must be a **single Markdown-formatted text string** following this exact structure:\n\n### \u2600\ufe0f Daily Status Report - [Current Date/Day - e.g., Thursday, October 16]\n\n### \ud83d\udd34 High Priority Items to Focus On (Priority: High )\n*List all items with 'High' or 'P0' priority that have a 'To Do' or 'In Progress' status. Limit to a maximum of 5 items. If more than 5, prioritize those edited most recently.*\n- **[Title of Item 1]** (Status: [Status]) - Assigned To : [Owner]\n- **[Title of Item 2]** (Status: [Status]) - Assigned To : [Owner]\n- ...\n\n### \ud83d\udccb Currently Pending Items (Status: Anything EXCULUDING DONE)\n*List all items with 'To Do' or 'Blocked' status (excluding those already listed above).Sort by 'Priority' (High first) and then 'Status'.*\n\n- **[Title of Item 1]** (Priority: [Priority]) - Assigned To : [Owner]\n- **[Title of Item 2]** (Priority: [Priority]) - Assigned To : [Owner]\n- ...\n\n### \ud83e\udded Suggested Areas to Cover Today\n*Based on the listed high-priority items and pending tasks, suggest 2-3 broad strategic areas or themes the team should concentrate their efforts on today. E.g., \"Address critical user-reported bugs,\" \"Finalize Q4 planning documents.\"*\n1. [Area Suggestion 1]\n2. [Area Suggestion 2]\n\n### \u2728 Daily Motivation Note\n*Write a short (2-3 sentence), encouraging, and positive note for the team to start the day. Focus on teamwork, impact, and momentum.*\n*[Short Motivational Message]*\n\n## 3. Processing Instructions\n1. **Filter and Sort:** Categorize the input items based on `Status` and `Priority`.\n2. **Date:** Use the current date for the report title.\n3. **Conciseness:** Ensure the lists are concise, adhering to the specified item limits.\n4. **Clarity:** Use clear and professional language throughout the report.\n```",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "a42b7e61-6d7c-4cf1-878b-2a2158d0abb0",
"name": "Gemini \u2014 Daily Report",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
14304,
784
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "fb5f1c76-2139-4f48-863b-15e9a8411fc7",
"name": "Daily at 9am \u2014 Report",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
14016,
560
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "3cd0a641-ea39-40f2-b8d9-1f648f79f083",
"name": "Read Notion DB \u2014 Daily",
"type": "n8n-nodes-base.notionTool",
"position": [
14496,
768
],
"parameters": {
"simple": false,
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "YOUR_NOTION_DATABASE_ID",
"cachedResultUrl": "",
"cachedResultName": "Workstreams"
}
},
"typeVersion": 2.2
},
{
"id": "945c8c8b-d609-4fbc-8569-b933d7105092",
"name": "Daily Report Section",
"type": "n8n-nodes-base.stickyNote",
"position": [
13888,
416
],
"parameters": {
"color": 7,
"width": 1024,
"height": 560,
"content": "## Daily Report\n\n**Purpose:** Every day at 9 am \u2014 fetch all Notion tasks and generate a structured daily status report\n\n"
},
"typeVersion": 1
},
{
"id": "248a0943-b7d8-43d7-98a4-e04f50059c0c",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
7712,
304
],
"parameters": {
"width": 820,
"height": 592,
"content": "# Manage Notion tasks and generate reports from chat using Gemini\n\n## HOW IT WORKS\nMiniBox is a chat-based operations assistant powered by Gemini. Send it a plain-English message to create or update tasks in your Notion Workstreams database, draft and send emails via Gmail, or pull an on-demand project summary \u2014 Gemini classifies the intent and routes it to the right agent automatically. Daily and weekly reports also fire on a schedule without any input.\n\n## HOW TO SETUP\n1 - Add your Google Gemini API credential in n8n\n2 - Add your Notion credential in n8n and link it to your Workstreams database\n3 - Add your Gmail OAuth2 credential in n8n\n4 - Replace YOUR_NOTION_DATABASE_ID in every Notion node with your actual database ID\n5 - Activate the workflow and open the n8n chat interface to test\n6 - Import this workflow, then note its workflow ID from the URL\n7 - In Call Sub-Create Workflow and Call Sub-Update Workflow nodes, update the workflow ID to match your imported workflow's ID\n\n## CUSTOMIZATION\nAdd new intent labels to the Route by Intent node and wire them to your own agents. Swap the Notion field names in the Sub-Create and Sub-Update sections to match your own database schema."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "fae2c623-97ea-436d-8722-fd7e961a7e88",
"connections": {
"Format Due Date": {
"main": [
[
{
"node": "Build Notion Payload",
"type": "main",
"index": 0
}
]
]
},
"Has Valid Date?": {
"main": [
[
{
"node": "Clear Date Field",
"type": "main",
"index": 0
}
],
[
{
"node": "Build Full Notion Payload",
"type": "main",
"index": 0
}
]
]
},
"Route by Intent": {
"main": [
[
{
"node": "Task Creator Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Email Composer Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Report Generator Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Notion Updater Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Fetch All Notion Tasks",
"type": "main",
"index": 0
}
]
]
},
"Clear Date Field": {
"main": [
[
{
"node": "Create Notion Page",
"type": "main",
"index": 0
}
]
]
},
"Get Current Date": {
"ai_tool": [
[
{
"node": "Task Creator Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Send Gmail Message": {
"ai_tool": [
[
{
"node": "Email Composer Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Build Notion Payload": {
"main": [
[
{
"node": "Has Valid Date?",
"type": "main",
"index": 0
}
]
]
},
"Fetch All Notion Tasks": {
"main": [
[
{
"node": "Extract Latest TID",
"type": "main",
"index": 0
}
]
]
},
"Daily at 9am \u2014 Digest": {
"main": [
[
{
"node": "Daily Digest Agent",
"type": "main",
"index": 0
}
]
]
},
"Daily at 9am \u2014 Report": {
"main": [
[
{
"node": "Daily Report Agent",
"type": "main",
"index": 0
}
]
]
},
"Gemini \u2014 Daily Digest": {
"ai_languageModel": [
[
{
"node": "Daily Digest Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Gemini \u2014 Daily Report": {
"ai_languageModel": [
[
{
"node": "Daily Report Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Gemini \u2014 Task Creator": {
"ai_languageModel": [
[
{
"node": "Task Creator Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Call Sub-Create Workflow": {
"ai_tool": [
[
{
"node": "Task Creator Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Call Sub-Update Workflow": {
"ai_tool": [
[
{
"node": "Notion Updater Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Read Notion DB \u2014 Daily": {
"ai_tool": [
[
{
"node": "Daily Report Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Build Full Notion Payload": {
"main": [
[
{
"node": "Create Notion Page",
"type": "main",
"index": 0
}
]
]
},
"Gemini \u2014 Email Composer": {
"ai_languageModel": [
[
{
"node": "Email Composer Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Gemini \u2014 Notion Updater": {
"ai_languageModel": [
[
{
"node": "Notion Updater Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Read Notion DB \u2014 Digest": {
"ai_tool": [
[
{
"node": "Daily Digest Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Read Notion DB \u2014 Report": {
"ai_tool": [
[
{
"node": "Report Generator Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Read Notion DB \u2014 Weekly": {
"ai_tool": [
[
{
"node": "Weekly Report Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Gemini \u2014 Classify Intent": {
"main": [
[
{
"node": "Parse Intent from Response",
"type": "main",
"index": 0
}
]
]
},
"Parse Intent from Response": {
"main": [
[
{
"node": "Route by Intent",
"type": "main",
"index": 0
}
]
]
},
"Read Notion DB \u2014 Updater": {
"ai_tool": [
[
{
"node": "Notion Updater Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Gemini \u2014 Classify Intent",
"type": "main",
"index": 0
}
]
]
},
"Gemini \u2014 Report Generator": {
"ai_languageModel": [
[
{
"node": "Report Generator Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Format Due Date",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Chat with a Gemini-powered operations assistant to create and update Notion tasks, send emails via Gmail, and pull live project summaries — all from a single chat interface. Daily and weekly status reports also fire automatically on a schedule.
Source: https://n8n.io/workflows/15343/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Are you drowning in daily operational chaos, desperately trying to juggle sales, projects, content, and client communication? Imagine an AI brain that handles it all, freeing you to lead your business
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This Chatbot automates the process of discovering job openings and generating tailored job application emails.
Build your own AI Prompt Hub inside n8n. This template lets ChatGPT automatically search your saved prompts in Notion using semantic embeddings from HuggingFace. Each time a user sends a message, the
[](https://youtu.be/D11S0s3PDNc)