Research Agents: Multi-Source Investigation and Synthesis
Research agents earn their keep when a single search box is not enough.
They expand questions, fan out across sources, read selectively, and synthesize a cited report under a budget.
Use this cheatsheet to design or review that pipeline without rebuilding coding-agent habits by mistake.
How to Use This List
- Skim A for the stage model, then map your product to each stage.
- Use B when choosing tools and stop rules.
- Use C as a pre-ship quality gate for any research agent PR.
- Keep the tables in design docs; fill the blanks with your domains and SLAs.
A - Stage Map (Fan-Out to Brief)
| Stage | Agent job | Typical tools | Exit signal |
|---|---|---|---|
| Frame | Restate question, audience, time window, exclusions | None or clarify-with-user | Gradable goal + stop budget |
| Expand | Produce diverse queries and entity lists | LLM only (cheap tier OK) | 3-8 queries, not 1 |
| Retrieve | Search indexes and catalogs | Web/enterprise search, catalog APIs | Candidate hit list with scores |
| Read | Fetch and extract from top hits | Fetch, PDF/HTML extract, browser if needed | Evidence records, not raw HTML dumps |
| Filter | Drop duplicates, spam, off-scope, stale | Ranker, dedupe, date filters | Ranked shortlist |
| Synthesize | Build claims + narrative | Stronger model, structured output | Schema-valid brief |
| Verify | Spot-check claims vs evidence | Faithfulness checks, human, optional second pass | Pass/fail on sample claims |
| Deliver | Package for audience | Docs/wiki/email draft (usually no auto-send) | Review packet ready |
Skip stages only when the corpus is tiny and fixed (then you may be in RAG Q&A, not open research).
B - Design Cheatsheet
| Decision | Prefer | Avoid |
|---|---|---|
| Query strategy | Multiple angles (official, news, critic, data) | One paraphrased query on loop |
| Context packing | Snippets + ids first; full text only for top N | Dumping every page into the window |
| Citations | Claim → source_id with URL/doc pointer | Footnotes invented after the fact |
| Conflicts | Explicit "A says X, B says Y" | Averaged fake consensus |
| Freshness | Require dates; prefer primary when recent | Undated secondary blogs for numbers |
| Autonomy | Auto research + human publish | Auto email/post to customers |
| Stop rules | Max turns, max sources, max $ , coverage checklist | "Until it feels done" |
| Model routing | Cheap expand/filter; strong synthesize | Frontier model on every micro-step |
| Trace | Store queries, hits, chosen sources, stop reason | Final memo only |
| Failure | Partial brief + open questions | Hallucinated completeness |
C - Quality Gate Checklist
- Goal is gradable (entities, time window, minimum sources).
- At least two independent sources for material external claims (policy may set higher).
- Every claim has resolvable source_ids.
- Open questions listed when coverage failed.
- Source ranking policy documented (primary/secondary/tertiary).
- Deduping by canonical URL or doc id.
- Recency rules applied for time-sensitive topics.
- Max turns / cost budget enforced in code.
- No side-effect tools enabled on pure research runs (or gated).
- Sample faithfulness review defined (human or automated).
- PII/confidential filters on outbound briefs.
- Eval set of 10+ questions with expected must-include facts.
D - Common Research Task Shapes
| Shape | Example ask | Special requirement |
|---|---|---|
| Landscape | "Who competes in X and how?" | Entity coverage checklist |
| Deep dive | "Explain vendor Y's pricing change" | Primary sources first |
| Compare | "A vs B vs C on features" | Shared criteria matrix |
| Monitor | "What changed this week?" | Diff vs last run state |
| Due diligence | "Risks before partnership" | Explicit risk register + unknowns |
| Literature-style | "What do papers say about Z?" | Citation style + contradicting findings |
Match architecture weight to shape: monitors need schedules and state; landscapes need breadth; deep dives need long-read extraction.
E - Minimal Tool Allowlist
| Tool | Purpose | Notes |
|---|---|---|
search | Discovery | Return title, url, date, snippet, score |
fetch | Full text | Truncate; strip chrome; record content hash |
extract_structured | Tables, prices, dates | Prefer schema-constrained extract |
rag_query | Internal corpus | Separate from open web when trust differs |
save_brief | Persist draft | Write to draft store, not production wiki by default |
notify_reviewer | Human queue | Prefer over auto-publish |
Add browser or code tools only when HTML/PDF extraction or light calculation is required - and sandbox them.
F - Synthesis Output Skeleton
Use a fixed skeleton so evals and humans share a format:
- Executive summary (5 bullets max).
- Key claims (text + source_ids + confidence).
- Comparison table if multi-entity.
- Timeline if events matter.
- Risks / counterpoints.
- Open questions & next queries.
- Appendix: evidence catalog.
If a section is empty, say so. Silence that pretends to be completeness is a defect.
FAQs
Is multi-source research always multi-agent?
No. A single loop can own all stages. Split agents when roles, models, or permissions differ enough to justify handoff cost.
How is this different from "chat with browsing"?
Research agents enforce budgets, structured evidence, citation schemas, and delivery packets. Browsing chat optimizes for conversational convenience.
When should I use plan-and-execute instead of pure ReAct?
Use a plan when the brief has multiple required sections or entities. Replan if early retrieval proves the plan wrong.
How many sources should the agent read fully?
Search widely, read deeply only on the top shortlist. Full-text every hit blows cost and context without raising accuracy much.
What if sources conflict?
Report the conflict with dates and source classes. Do not silently pick the friendliest number.
Can I skip citations for internal drafts?
You can hide them in the UI, but keep them in the trace. Drafts become decks; traces are how you recover.
How do I evaluate synthesis quality?
Score must-include facts, citation validity, forbidden fabrications, and section completeness on a fixed question set each release.
Should the agent keep long-term memory of past briefs?
Useful for monitors and recurring landscapes. Store structured state (entities, last prices) rather than raw memo prose only.
What stop reason should we log?
coverage_met, max_turns, max_cost, no_new_sources, user_cancel, policy_block - mutually exclusive when possible.
When is open-web research the wrong tool?
When the answer must come only from approved internal policy corpora, or when legal forbids external processing of the query content.
Do I need a specialized "citation model"?
Not necessarily. Structured output plus post-validation ("every source_id exists") catches most citation theater.
How do research agents fail in production most often?
Confident prose over thin evidence, stale secondary sources, and missing stop budgets that burn money on low-value pages.
Related
- Business & Research Use Cases Basics - hands-on cited brief path
- How Knowledge-Work Agents Differ from Coding Agents - success criteria contrast
- Market & Competitive Intelligence Agents - scheduled research pattern
- Internal Knowledge-Base Agents with RAG Grounding - closed-corpus research
- Business & Research Use Cases Best Practices - accuracy habits
Stack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.