Research lab of agents
One agent researching a question returns whatever its first searches surfaced,
citations included, some of them invented. A lab splits the roles that keep
research honest: searchers cover the question in parallel, a verifier re-checks
every source, and a synthesizer writes the answer with each claim attributed.
The verifier is the point: an unchecked agent citation is a guess wearing a URL.
Team
- Lead (
research-synthesis): sharpens the question and splits it.
- Searchers: fan out on sub-questions in parallel.
- Verifier: re-fetches each source and confirms the claim.
- Synthesizer (
research-synthesis): writes the cited answer.
Shape: parallel fan-out, then a verification gate, then synthesis; see the
deep-research harness.
Method
- Sharpen and decompose the question. The lead turns "what about X" into a
precise question, then splits it into non-overlapping sub-questions, one per
searcher, so fan-out does not duplicate work.
- Fan searchers out in parallel. Each returns
sources.jsonl records:
claim, url, publication date, exact quote, and the source's incentive.
Primary sources (spec, paper, changelog) outrank commentary about them.
- Assign one agent to the negation. Someone searches for disconfirming
evidence explicitly, so the lab is not just a confirmation machine for the
first hypothesis.
- Verify every source independently. A separate agent re-fetches each url,
confirms the quote exists and supports the claim, and marks it confirmed,
refuted, or unsupported. Unsupported citations are cut, not softened.
- Reconcile conflicts on the record. Where sources disagree, adjudicate by
recency and method, or declare the point genuinely unsettled. A synthesis
that hides its conflicts is an advertisement.
- Synthesize in three layers.
report.md gives the answer in two or three
sentences, then the attributed evidence, then the edges: what is uncertain
and what would settle it. Mark every inference as inference.
Run it
In Claude Code, spawn searchers as parallel subagents in one turn, each with a
sub-question and web access, writing to a shared sources.jsonl; then run the
verifier as its own subagent over that file before the synthesizer reads only
verified rows. Port it to CrewAI as parallel search tasks feeding a synthesis
task, to AutoGen as a GroupChat with a dedicated fact-checker, or to LangGraph
as a fan-out then fan-in graph with a verification node between search and
synthesis.
Signals it works
- Every load-bearing claim in the report cites a source the verifier confirmed.
- At least one searched-for counter-source appears, or its absence is stated.
- The top two or three sentences survive a skeptic re-checking their citations.
Boundaries
This organizes agent research; it does not make agents trustworthy on paywalled,
very recent, or specialist sources they cannot actually fetch. Verification
catches fake citations, not deep methodological flaws in a real paper, which
needs human expertise. Treat the output as a sourced draft for a human to sign,
not a final authority.
1---2name: agent-research-lab3description: Run a lab of researcher agents that search in parallel, verify sources independently, and synthesize a cited answer. Use when a question needs breadth of sources and every load-bearing claim must trace to evidence.4---56# Research lab of agents78One agent researching a question returns whatever its first searches surfaced,9citations included, some of them invented. A lab splits the roles that keep10research honest: searchers cover the question in parallel, a verifier re-checks11every source, and a synthesizer writes the answer with each claim attributed.12The verifier is the point: an unchecked agent citation is a guess wearing a URL.1314## Team1516- **Lead** (`research-synthesis`): sharpens the question and splits it.17- **Searchers**: fan out on sub-questions in parallel.18- **Verifier**: re-fetches each source and confirms the claim.19- **Synthesizer** (`research-synthesis`): writes the cited answer.2021Shape: parallel fan-out, then a verification gate, then synthesis; see the22`deep-research` harness.2324## Method25261. **Sharpen and decompose the question.** The lead turns "what about X" into a27 precise question, then splits it into non-overlapping sub-questions, one per28 searcher, so fan-out does not duplicate work.292. **Fan searchers out in parallel.** Each returns `sources.jsonl` records:30 claim, url, publication date, exact quote, and the source's incentive.31 Primary sources (spec, paper, changelog) outrank commentary about them.323. **Assign one agent to the negation.** Someone searches for disconfirming33 evidence explicitly, so the lab is not just a confirmation machine for the34 first hypothesis.354. **Verify every source independently.** A separate agent re-fetches each url,36 confirms the quote exists and supports the claim, and marks it confirmed,37 refuted, or unsupported. Unsupported citations are cut, not softened.385. **Reconcile conflicts on the record.** Where sources disagree, adjudicate by39 recency and method, or declare the point genuinely unsettled. A synthesis40 that hides its conflicts is an advertisement.416. **Synthesize in three layers.** `report.md` gives the answer in two or three42 sentences, then the attributed evidence, then the edges: what is uncertain43 and what would settle it. Mark every inference as inference.4445## Run it4647In Claude Code, spawn searchers as parallel subagents in one turn, each with a48sub-question and web access, writing to a shared `sources.jsonl`; then run the49verifier as its own subagent over that file before the synthesizer reads only50verified rows. Port it to CrewAI as parallel search tasks feeding a synthesis51task, to AutoGen as a GroupChat with a dedicated fact-checker, or to LangGraph52as a fan-out then fan-in graph with a verification node between search and53synthesis.5455## Signals it works5657- Every load-bearing claim in the report cites a source the verifier confirmed.58- At least one searched-for counter-source appears, or its absence is stated.59- The top two or three sentences survive a skeptic re-checking their citations.6061## Boundaries6263This organizes agent research; it does not make agents trustworthy on paywalled,64very recent, or specialist sources they cannot actually fetch. Verification65catches fake citations, not deep methodological flaws in a real paper, which66needs human expertise. Treat the output as a sourced draft for a human to sign,67not a final authority.