{
  "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
          }
        ]
      ]
    }
  }
}