Multi-Agent Research System
Published on: 16 September 2025
Tags: #multi-agent #research-system #ai
Multi-Agent Research System
graph LR
subgraph "Multi-agent research system"
direction LR
subgraph " "
direction LR
Citations["Citations
subagent"]
subgraph "Search subagents"
direction TB
Search1["Search subagent"]
Search2["Search subagent"]
Search3["Search subagent"]
end
end
subgraph " "
direction LR
LeadAgent["Lead agent
(orchestrator)
Tools: search tools + MCP tools
+ memory + run_subagent +
complete_task"]
Memory["Memory"]
end
end
subgraph "Claude.ai chat"
UserChat("What's on your mind tonight?
what are all the companies in the
united states working on AI agents in 2025?
make a list of at least 100. for each
company, include the name, website,
product, description of what they do,
type of agents they build, and their
vertical/industry.")
end
%% Connections
UserChat -- "User request" --> LeadAgent
LeadAgent -- "Final report" --> UserChat
LeadAgent --> Citations
LeadAgent --> Memory
LeadAgent --> Search1
LeadAgent --> Search2
LeadAgent --> Search3
Search1 --> Search1
Search2 --> Search2
Search3 --> Search3
%% Styling
style Citations fill:#333,stroke:#666,stroke-width:2px,color:#fff
style LeadAgent fill:#333,stroke:#666,stroke-width:2px,color:#fff
style Memory fill:#333,stroke:#666,stroke-width:2px,color:#fff
style Search1 fill:#333,stroke:#666,stroke-width:2px,color:#fff
style Search2 fill:#333,stroke:#666,stroke-width:2px,color:#fff
style Search3 fill:#333,stroke:#666,stroke-width:2px,color:#fff
style UserChat fill:#333,stroke:#666,stroke-width:2px,color:#fff
Multi-Agent System Process Diagram
%%{init: {'theme': 'dark'}}%%
sequenceDiagram
participant User
participant System
participant LeadResearcher
participant Subagent1
participant Subagent2
participant Memory
participant CitationAgent
User->>System: send user query
System->>LeadResearcher: Create Lead Researcher
loop Iterative Research Process
LeadResearcher->>LeadResearcher: think (plan approach)
LeadResearcher->>Memory: save plan
Memory-->>LeadResearcher: retrieve context
LeadResearcher->>Subagent1: create subagent for aspect A
LeadResearcher->>Subagent2: create subagent for aspect B
par
Subagent1->>Subagent1: web_search
Subagent1->>Subagent1: think (evaluate)
Subagent1-->>LeadResearcher: complete_task
and
Subagent2->>Subagent2: web_search
Subagent2->>Subagent2: think (evaluate)
Subagent2-->>LeadResearcher: complete_task
end
LeadResearcher->>LeadResearcher: think (synthesize results)
alt More research needed?
Note over LeadResearcher: Continue loop
else
Note over LeadResearcher: Exit loop
end
end
LeadResearcher-->>System: complete_task (research result)
Note over System, CitationAgent: Process documents + research report to identify locations for citations
System->>CitationAgent: Return report with citations inserted
System->>System: Persist results
System-->>User: Return research results with citations
The Power vs. Cost Trade-off
%%{init: {'theme': 'dark'}}%%
graph TB
subgraph "The Power vs. Cost Trade-off"
direction TB
subgraph "Performance on Complex Queries"
direction TB
subgraph " "
direction LR
SingleAgent["Single-Agent System"]
MultiAgent["Multi-Agent System"]
end
subgraph " "
direction LR
Result1((X))
Result2((✓))
end
SingleAgent -- "Fails to find answer" --> Result1;
MultiAgent -- "+90.2% performance" --> Result2;
end
subgraph "Relative Token Cost"
direction LR
A["Standard Chat
(Baseline: 1x)"]
B["Single-Agent System
(Approx. 4x)"]
C["Multi-Agent System
(Approx. 15x)"]
style A height:50px,fill:#87CEEB, color:#000
style B height:80px,fill:#FFA500, color:#000
style C height:120px,fill:#FF6347, color:#000
end
end
%% Styling for nodes and links
style SingleAgent fill:#f9f,stroke:#999,stroke-width:1px, color:#000
style MultiAgent fill:#9f9,stroke:#999,stroke-width:1px, color:#000
linkStyle 0 stroke:red,stroke-width:2px
linkStyle 1 stroke:green,stroke-width:2px
The AI Agent Evaluation Pyramid
%%{init: {'theme': 'dark'}}%%
graph TD
subgraph "Evaluation Strategy"
A["Level 1: Small-Sample Testing (Immediate)
Finds major issues quickly
- Use ~20 representative queries
- Catches large-impact failures
- Enables rapid iteration"];
B["Level 2: LLM-as-Judge (Scaled)
Grades outputs against a rubric
- Factual & citation accuracy
- Completeness of the answer
- Tool efficiency & source quality"];
C["Level 3: Human Evaluation
Catches nuance and edge cases
- Identifies source quality bias
- Finds subtle failures
- Uncovers unexpected behaviors"];
A --> B;
B --> C;
end
%% Styling for dark theme
style A fill:#90ee90,stroke:#aaa,stroke-width:1px,color:#000
style B fill:#66CDAA,stroke:#aaa,stroke-width:1px,color:#000
style C fill:#3CB371,stroke:#aaa,stroke-width:1px,color:#000
Orchestrator Agent's Prompting Heuristics
%%{init: {'theme': 'dark'}}%%
graph TD
A["1.Plan & Delegate"] --> B["2.Allocate Resources"];
B --> C["3.Select Tools"];
C --> D["4.Execute Search Strategy"];
D --> E{"5.Self-Correct
Evaluate results"};
E -- "No, task complete" --> F((Finish));
E -- "Yes, refine strategy" --> C;
%% Styling for the nodes
style A fill:#333,stroke:#888,stroke-width:2px,color:#fff
style B fill:#333,stroke:#888,stroke-width:2px,color:#fff
style C fill:#333,stroke:#888,stroke-width:2px,color:#fff
style D fill:#333,stroke:#888,stroke-width:2px,color:#fff
style E fill:#5c3c3c,stroke:#c88,stroke-width:2px,color:#fff
style F fill:#2a523a,stroke:#7c7,stroke-width:2px,color:#fff
Sources: