This workflow corresponds to n8n.io template #15514 — we link there as the canonical source.
This workflow follows the Agent → Documentdefaultdataloader 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": "JMqGFtkkOnwqm13H",
"name": "Multi-Agent Research Pipeline ( Supabase + Notion)",
"tags": [],
"nodes": [
{
"id": "870c9e7b-9204-4845-8259-7725cb0b6618",
"name": "Start Research",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1248,
352
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f810ba3b-edb0-4da8-becc-b83ae4a34ad5",
"name": "Groq Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"position": [
800,
512
],
"parameters": {
"model": "llama-3.3-70b-versatile",
"options": {}
},
"credentials": {
"groqApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "bb7414f3-1333-4fd9-bd5a-b1f70374f0e6",
"name": "Code in JavaScript",
"type": "n8n-nodes-base.code",
"position": [
1232,
144
],
"parameters": {
"jsCode": "const output = $input.first().json.output || '';\nconst chunks = [];\nfor (let i = 0; i < output.length; i += 1900) {\n chunks.push(output.slice(i, i + 1900));\n}\n// Return first 5 chunks max (Notion also limits children blocks)\nreturn chunks.slice(0, 5).map(chunk => ({ json: { ...$input.first().json, chunk } }));"
},
"typeVersion": 2
},
{
"id": "48bbb50e-2782-47e2-8135-8988ab057793",
"name": "Set Research Topic1",
"type": "n8n-nodes-base.set",
"position": [
-992,
352
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1",
"name": "topic",
"type": "string",
"value": "AI Automation Trends 2026"
},
{
"id": "2",
"name": "depth",
"type": "string",
"value": "comprehensive"
},
{
"id": "3",
"name": "session_id",
"type": "string",
"value": "={{ $now.toMillis() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5006f2b0-5b27-43b8-915c-d9ea43061b77",
"name": "Parse Orchestrator Tasks1",
"type": "n8n-nodes-base.code",
"position": [
-768,
352
],
"parameters": {
"jsCode": "const raw = $input.first().json.output || '';\nlet tasks = {};\ntry {\n const m = raw.match(/\\{[\\s\\S]*\\}/);\n if (m) tasks = JSON.parse(m[0]);\n} catch(e) {}\nif (!tasks.search_query_1) {\n tasks = {\n summary_task: 'Summarize key developments and recent facts',\n analysis_task: 'Analyze emerging trends, patterns and implications',\n synthesis_task: 'Synthesize into actionable strategic insights',\n search_query_1: 'AI automation 2025 enterprise adoption trends',\n search_query_2: 'workflow automation machine learning ROI case studies',\n search_query_3: 'AI agent orchestration frameworks tools comparison'\n };\n}\nconst topicData = $('Set Research Topic1').first().json;\nreturn [{ json: { ...tasks, topic: topicData.topic, session_id: String(topicData.session_id) } }];"
},
"typeVersion": 2
},
{
"id": "3ebc28bd-c73b-4ea7-9b9f-5ac3da0f0de5",
"name": "Web Search Query ",
"type": "n8n-nodes-base.httpRequest",
"position": [
-544,
160
],
"parameters": {
"url": "https://api.tavily.com/search",
"method": "POST",
"options": {},
"jsonBody": "={\"api_key\":\"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\",\"query\":\"{{ $json.search_query_1 }}\",\"search_depth\":\"advanced\",\"max_results\":5,\"include_raw_content\":false}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "267f02a5-51bc-4782-a204-2d20d6565e74",
"name": "Merge Search Results1",
"type": "n8n-nodes-base.merge",
"position": [
-320,
272
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "3d7ed53c-1969-443e-ae5f-752ef9778b38",
"name": "Web Search Query 4",
"type": "n8n-nodes-base.httpRequest",
"position": [
-544,
352
],
"parameters": {
"url": "https://api.tavily.com/search",
"method": "POST",
"options": {},
"jsonBody": "={\"api_key\":\"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\",\"query\":\"{{ $json.search_query_2 }}\",\"search_depth\":\"advanced\",\"max_results\":5,\"include_raw_content\":false}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8c152adf-b532-43a7-b90a-47f2dd73cd57",
"name": "Web Search Query 5",
"type": "n8n-nodes-base.httpRequest",
"position": [
-544,
544
],
"parameters": {
"url": "https://api.tavily.com/search",
"method": "POST",
"options": {},
"jsonBody": "={\"api_key\":\"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\",\"query\":\"{{ $json.search_query_3 }}\",\"search_depth\":\"advanced\",\"max_results\":5,\"include_raw_content\":false}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "070ed35c-8d60-4514-867c-132b1a2e16d3",
"name": "Aggregate Research Context1",
"type": "n8n-nodes-base.code",
"position": [
-96,
288
],
"parameters": {
"jsCode": "const allItems = $input.all();\nconst snippets = [];\nfor (const item of allItems) {\n const data = item.json;\n if (data.results && Array.isArray(data.results)) {\n for (const r of data.results) {\n snippets.push('SOURCE: ' + (r.title || 'Untitled') + '\\n' + (r.url || '') + '\\n' + ((r.content || r.snippet || '')).substring(0, 500));\n }\n }\n}\nconst tasks = $('Parse Orchestrator Tasks1').first().json;\nreturn [{ json: { topic: tasks.topic, session_id: tasks.session_id, summary_task: tasks.summary_task, analysis_task: tasks.analysis_task, synthesis_task: tasks.synthesis_task, research_context: snippets.slice(0, 12).join('\\n\\n---\\n\\n'), source_count: snippets.length } }];"
},
"typeVersion": 2
},
{
"id": "a4ab5e02-7d69-44f7-b7a6-0dc75677a72b",
"name": "Summarizer Sub-Agent1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
256,
64
],
"parameters": {
"text": "=RESEARCH TASK: {{ $json.summary_task }}\nTOPIC: {{ $json.topic }}\n\nSOURCE MATERIAL:\n{{ $json.research_context }}\n\nProvide a structured summary with:\n1. Key Facts & Statistics (with numbers)\n2. Major Players & Developments\n3. Current State of the Field\n4. Most Important Recent Events\n\nBe specific and cite sources.",
"options": {
"systemMessage": "You are a specialist research summarizer."
},
"promptType": "define"
},
"typeVersion": 3.1
},
{
"id": "c474ac40-d937-4081-a036-279f0d8ff5f4",
"name": "Summarizer LLM1",
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"position": [
336,
288
],
"parameters": {
"model": "llama-3.3-70b-versatile",
"options": {}
},
"credentials": {
"groqApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "39c87e44-6f0f-46c4-9403-e8772660f722",
"name": "Combine Agent Outputs1",
"type": "n8n-nodes-base.merge",
"position": [
640,
288
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "4f2df28b-d006-4961-b272-b2ed2d671c80",
"name": "Analyst Sub-Agent1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
304,
448
],
"parameters": {
"text": "=ANALYSIS TASK: {{ $json.analysis_task }}\nTOPIC: {{ $json.topic }}\n\nSOURCE MATERIAL:\n{{ $json.research_context }}\n\nProvide deep analysis covering:\n1. Emerging Trends & Patterns\n2. Market/Industry Implications\n3. Key Risks and Challenges\n4. Competitive Landscape\n5. 12-Month Future Projections\n\nBe analytical, specific, and strategic.",
"options": {
"systemMessage": "You are a specialist research analyst."
},
"promptType": "define"
},
"typeVersion": 3.1
},
{
"id": "34c15150-41b5-4e51-bd16-67d733b63ef9",
"name": "OpenAi Analyst LLM1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
352,
672
],
"parameters": {
"model": "openai/gpt-oss-20b",
"options": {}
},
"credentials": {
"openRouterApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "16c5e97b-dcfb-4b0a-973b-d39c155e3894",
"name": "Synthesis Agent1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
832,
288
],
"parameters": {
"text": "=You are the final synthesis agent. Create the definitive research report.\n\nTOPIC: {{ $(\"Set Research Topic1\").first().json.topic }}\n\nSUMMARY AGENT OUTPUT:\n{{ $json.output || \"\" }}\n\nCreate a final executive research report in markdown:\n\n# Executive Summary\n## Key Findings\n## Trend Analysis\n## Strategic Implications\n## Recommended Actions\n## Research Confidence",
"options": {
"systemMessage": "You are an expert intelligence analyst."
},
"promptType": "define"
},
"typeVersion": 3.1
},
{
"id": "ad432ae6-1cea-431c-808d-61ffe68e7b7a",
"name": "Save Report to Notion1",
"type": "n8n-nodes-base.notion",
"position": [
1424,
80
],
"parameters": {
"title": "={{ $(\"Set Research Topic1\").first().json.topic + \" \u2014 \" + $now.format(\"yyyy-MM-dd\") }}",
"blockUi": {
"blockValues": [
{
"textContent": "Executive Research Report"
},
{
"textContent": "={{ $json.chunk }}"
}
]
},
"options": {
"icon": "\ud83d\udd2c",
"iconType": "emoji"
},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "url",
"value": "https://www.notion.so/35802106fce7800e8126c00c71bdb530?v=35802106fce7804fb9fc000c5d131b48&source=copy_link"
},
"authentication": "oAuth2"
},
"credentials": {
"notionOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "8c0d13b1-b0d3-4646-b342-e385662035f2",
"name": "Final Report Output1",
"type": "n8n-nodes-base.set",
"position": [
1232,
304
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1",
"name": "status",
"type": "string",
"value": "completed"
},
{
"id": "2",
"name": "topic",
"type": "string",
"value": "={{ $(\"Set Research Topic1\").first().json.topic }}"
},
{
"id": "3",
"name": "session_id",
"type": "string",
"value": "={{ $(\"Set Research Topic1\").first().json.session_id }}"
},
{
"id": "4",
"name": "agents_used",
"type": "string",
"value": "Orchestrator, Summarizer, Analyst, Synthesizer"
},
{
"id": "5",
"name": "report",
"type": "string",
"value": "={{ $(\"Synthesis Agent1\").first().json.output || \"Completed\" }}"
},
{
"id": "6",
"name": "completed_at",
"type": "string",
"value": "={{ $now.toISO() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f06efcae-973e-4bb9-8acc-d1a66a89d001",
"name": "Supabase Vector Store1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
1456,
304
],
"parameters": {
"mode": "insert",
"options": {},
"tableName": {
"__rl": true,
"mode": "list",
"value": "documents",
"cachedResultName": "documents"
}
},
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "0334fb0a-2c1a-4957-8c26-a9509224f130",
"name": "Embeddings OpenAI1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
1472,
528
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "185d17ed-3e3e-4036-bc7f-4c616b61e148",
"name": "Default Data Loader1",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1600,
528
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "topic",
"value": "={{ $json.topic }}"
},
{
"name": "session_id",
"value": "={{ $json.session_id }}"
},
{
"name": "completed_at",
"value": "={{ $json.completed_at }}"
}
]
}
},
"jsonData": "={{ $json.report }}",
"jsonMode": "expressionData",
"textSplittingMode": "custom"
},
"typeVersion": 1.1
},
{
"id": "306311f7-de67-4356-a5be-029b95611ea2",
"name": "Recursive Character Text Splitter1",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1600,
736
],
"parameters": {
"options": {
"splitCode": "markdown"
},
"chunkOverlap": 200
},
"typeVersion": 1
},
{
"id": "355286cc-9888-4bed-b733-a7d88a473fa3",
"name": "Main Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2368,
-96
],
"parameters": {
"color": 7,
"width": 864,
"height": 1004,
"content": "## \ud83d\udd2c AI Research Agent \u2014 Multi-Source Intelligence Report\n\nThis workflow runs a fully automated multi-agent research pipeline that searches the web across three parallel queries, processes the results through specialized AI sub-agents, synthesizes a structured executive report, saves it to Notion, and indexes it in a Supabase vector store for semantic retrieval.\n\n**Perfect for:** Strategy teams, analysts, and knowledge managers who need on-demand, AI-generated intelligence reports on any topic.\n\n---\n\n## How it works\n\n1. **Start Research** \u2014 Manually triggers the research run.\n2. **Set Research Topic1** \u2014 Defines the research topic, depth level, and generates a unique session ID.\n3. **Parse Orchestrator Tasks1** \u2014 Extracts three tailored search queries and sub-agent task prompts from the topic config.\n4. **Web Search Query** \u2014 Executes the first Tavily advanced search (query 1).\n5. **Web Search Query 4** \u2014 Executes the second Tavily advanced search (query 2) in parallel.\n6. **Web Search Query 5** \u2014 Executes the third Tavily advanced search (query 3) in parallel.\n7. **Merge Search Results1** \u2014 Waits for all three searches and combines their outputs.\n8. **Aggregate Research Context1** \u2014 Flattens and deduplicates all search snippets into a single research context block.\n9. **Summarizer Sub-Agent1** \u2014 Groq Llama 3.3 70B agent that produces a structured factual summary with key statistics and developments.\n10. **Summarizer LLM1** \u2014 Provides the Groq Llama 3.3 70B language model to the Summarizer Sub-Agent.\n11. **Analyst Sub-Agent1** \u2014 OpenRouter GPT agent that performs deep trend analysis, risk assessment, and 12-month projections.\n12. **OpenAi Analyst LLM1** \u2014 Provides the OpenRouter GPT-OSS 20B model to the Analyst Sub-Agent.\n13. **Combine Agent Outputs1** \u2014 Merges the summarizer and analyst outputs side-by-side.\n14. **Groq Chat Model** \u2014 Provides the Groq Llama 3.3 70B model to the Synthesis Agent.\n15. **Synthesis Agent1** \u2014 Final Groq agent that writes the definitive executive research report in structured markdown.\n16. **Final Report Output1** \u2014 Packages the completed report with metadata (topic, session ID, agents used, timestamp).\n17. **Code in JavaScript** \u2014 Splits the report into 1,900-character chunks for Notion's block size limits.\n18. **Save Report to Notion1** \u2014 Creates a new database page in Notion and writes all report chunks as content blocks.\n19. **Supabase Vector Store1** \u2014 Inserts the report into a Supabase `documents` table as vector embeddings for semantic search.\n20. **Embeddings OpenAI1** \u2014 Generates OpenAI embeddings for the report text before insertion.\n21. **Default Data Loader1** \u2014 Loads the report JSON with metadata into the document pipeline.\n22. **Recursive Character Text Splitter1** \u2014 Splits the report text using markdown-aware chunking with 200-token overlap.\n\n---\n\n## Setup (~15 minutes)\n\n1. **Tavily API** \u2014 Replace the hardcoded `api_key` value in *Web Search Query*, *Web Search Query 4*, and *Web Search Query 5* with your own key from tavily.com.\n2. **Groq API** \u2014 Add your Groq credential in the *Summarizer LLM1* and *Groq Chat Model* nodes.\n3. **OpenRouter API** \u2014 Add your OpenRouter credential in the *OpenAi Analyst LLM1* node.\n4. **Notion OAuth2** \u2014 Connect your Notion account and set the correct `databaseId` in the *Save Report to Notion1* node.\n5. **Supabase** \u2014 Add your Supabase credential and confirm the `documents` table exists with a vector column in *Supabase Vector Store1*.\n6. **OpenAI Embeddings** \u2014 Add your OpenAI API key (or use AI Gateway) in the *Embeddings OpenAI1* node.\n> \u26a0\ufe0f The Tavily API key in this workflow is a dev/demo key \u2014 replace it before production use. Groq and OpenRouter usage may incur costs depending on your plan."
},
"typeVersion": 1
},
{
"id": "04d1aea2-de68-4c96-8e2e-1721aa6ee727",
"name": "Section 1: Trigger & Topic Setup",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1456,
160
],
"parameters": {
"color": 5,
"width": 792,
"height": 396,
"content": "## 1\ufe0f\u20e3 Trigger & Topic Setup\n\nThe **Start Research** node manually kicks off the workflow on demand. **Set Research Topic1** defines the target research subject (defaulting to \"AI Automation Trends 2026\"), the desired depth, and stamps the run with a unique millisecond session ID. **Parse Orchestrator Tasks1** then decodes those settings into three distinct Tavily search queries and individual task descriptions for the downstream summarizer, analyst, and synthesis agents."
},
"typeVersion": 1
},
{
"id": "3ccc0813-56c6-4a52-a570-759f7903035b",
"name": "Section 2: Parallel Web Research",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
0
],
"parameters": {
"color": 3,
"width": 792,
"height": 716,
"content": "## 2\ufe0f\u20e3 Parallel Web Research\n\n**Web Search Query**, **Web Search Query 4**, and **Web Search Query 5** fire simultaneously against the Tavily advanced search API, each targeting a different angle of the research topic and returning up to five high-quality results. **Merge Search Results1** collects all three streams and passes the combined data to **Aggregate Research Context1**, which flattens all snippets into a single, deduplicated research context block (capped at 12 sources) ready for AI processing."
},
"typeVersion": 1
},
{
"id": "f677e39e-5ba2-404a-adf7-d057ed77c1d7",
"name": "Section 3: Multi-Agent AI Analysis",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-112
],
"parameters": {
"color": 6,
"width": 952,
"height": 920,
"content": "## 3\ufe0f\u20e3 Multi-Agent AI Analysis\n\nThe aggregated research context is split into two parallel AI tracks. **Summarizer Sub-Agent1** (powered by **Summarizer LLM1**, Groq Llama 3.3 70B) extracts key facts, statistics, and major developments into a structured summary. Concurrently, **Analyst Sub-Agent1** (powered by **OpenAi Analyst LLM1**, OpenRouter GPT-OSS 20B) performs deep trend analysis, competitive landscape assessment, and 12-month projections. **Combine Agent Outputs1** merges both outputs, which are then passed to **Synthesis Agent1** \u2014 backed by **Groq Chat Model** (Llama 3.3 70B) \u2014 to produce the final structured executive research report in markdown format."
},
"typeVersion": 1
},
{
"id": "e93c2e18-9865-4586-a2ea-8120b09875b9",
"name": "Section 4: Output & Vector Storage",
"type": "n8n-nodes-base.stickyNote",
"position": [
1184,
-144
],
"parameters": {
"color": 4,
"width": 708,
"height": 1028,
"content": "## 4\ufe0f\u20e3 Output & Vector Storage\n\n**Final Report Output1** bundles the completed report with full metadata including topic, session ID, and a list of agents used. **Code in JavaScript** then chunks the report into 1,900-character segments to comply with Notion's block limits, and **Save Report to Notion1** writes each chunk as a content block under a new timestamped database page. In parallel, **Supabase Vector Store1** persists the full report as vector embeddings \u2014 using **Embeddings OpenAI1** for embedding generation, **Default Data Loader1** to attach metadata, and **Recursive Character Text Splitter1** to split the markdown text with 200-token overlap \u2014 enabling future semantic search and retrieval."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"executionOrder": "v1"
},
"versionId": "2abe98ab-4998-482f-88c3-b13c1e6bd30d",
"connections": {
"Start Research": {
"main": [
[
{
"node": "Set Research Topic1",
"type": "main",
"index": 0
}
]
]
},
"Groq Chat Model": {
"ai_languageModel": [
[
{
"node": "Synthesis Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Summarizer LLM1": {
"ai_languageModel": [
[
{
"node": "Summarizer Sub-Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Synthesis Agent1": {
"main": [
[
{
"node": "Final Report Output1",
"type": "main",
"index": 0
},
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Web Search Query ": {
"main": [
[
{
"node": "Merge Search Results1",
"type": "main",
"index": 0
}
]
]
},
"Analyst Sub-Agent1": {
"main": [
[
{
"node": "Combine Agent Outputs1",
"type": "main",
"index": 1
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Save Report to Notion1",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Web Search Query 4": {
"main": [
[
{
"node": "Merge Search Results1",
"type": "main",
"index": 1
}
]
]
},
"Web Search Query 5": {
"main": [
[
{
"node": "Merge Search Results1",
"type": "main",
"index": 2
}
]
]
},
"OpenAi Analyst LLM1": {
"ai_languageModel": [
[
{
"node": "Analyst Sub-Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set Research Topic1": {
"main": [
[
{
"node": "Parse Orchestrator Tasks1",
"type": "main",
"index": 0
}
]
]
},
"Default Data Loader1": {
"ai_document": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_document",
"index": 0
}
]
]
},
"Final Report Output1": {
"main": [
[
{
"node": "Supabase Vector Store1",
"type": "main",
"index": 0
}
]
]
},
"Merge Search Results1": {
"main": [
[
{
"node": "Aggregate Research Context1",
"type": "main",
"index": 0
}
]
]
},
"Summarizer Sub-Agent1": {
"main": [
[
{
"node": "Combine Agent Outputs1",
"type": "main",
"index": 0
}
]
]
},
"Combine Agent Outputs1": {
"main": [
[
{
"node": "Synthesis Agent1",
"type": "main",
"index": 0
}
]
]
},
"Parse Orchestrator Tasks1": {
"main": [
[
{
"node": "Web Search Query ",
"type": "main",
"index": 0
},
{
"node": "Web Search Query 4",
"type": "main",
"index": 0
},
{
"node": "Web Search Query 5",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Research Context1": {
"main": [
[
{
"node": "Summarizer Sub-Agent1",
"type": "main",
"index": 0
},
{
"node": "Analyst Sub-Agent1",
"type": "main",
"index": 0
}
]
]
},
"Recursive Character Text Splitter1": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader1",
"type": "ai_textSplitter",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
groqApinotionOAuth2ApiopenAiApiopenRouterApisupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
How it works A manual trigger sets the research topic and generates three parallel Tavily web search queries A Summarizer Agent (Groq Llama 3.3 70B) and an Analyst Agent (OpenRouter GPT) process the search results simultaneously, producing a factual summary and a deep trend…
Source: https://n8n.io/workflows/15514/ — 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.
Your AI workforce is ready. Are you?
This intelligent chatbot leverages cutting-edge financial APIs and AI-driven analysis to deliver comprehensive stock research reports. Get instant access to professional-grade investment analysis that
This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th
Chat with docs - 5minAI New version. Uses httpRequest, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter, embeddingsOpenAi. Event-driven trigger; 62 nodes.
I prepared a detailed guide that illustrates the entire process of building an AI agent using Supabase and Google Drive within N8N workflows.