Web Research
Researches a topic across the internet, gathering information from multiple sources and synthesizing it into a report with citations.
The workflow:
- Clarifies what you’re asking (if ambiguous)
- Checks existing knowledge we’ve already gathered
- Searches the web iteratively, going deeper based on what it finds
- Writes a report with cited sources
When to Use This
This workflow is intended for general web-based research—understanding topics, gathering current information, or surveying perspectives on a question.
For academic papers, use Literature Review. For books, use Book Discovery. For processing a document you already have, use Document Processor.
How It Works
flowchart TD subgraph understand["1. Understanding Your Question"] A[Your Question] --> B{Need Clarification?} B -->|Yes| C[Ask Follow-up Questions] C --> D[Create Research Brief] B -->|No| D end subgraph prepare["2. Preparation"] D --> E[Check What We Already Know] E --> F[Make a Research Plan] end subgraph research["3. Research Loop"] F --> G[Coordinator Reviews Progress] G --> H{What's Needed?} H -->|More Info| I[Send Researchers to Find Answers] I --> J[Combine What They Found] J --> K[Update Draft Report] K --> G H -->|Enough Coverage| L[Move to Final Report] end subgraph finish["4. Finishing Up"] L --> M[Write Final Report] M --> N[Format Citations] N --> O[Save for Future Reference] end O --> P[Your Report] style understand fill:#e8f4f8 style prepare fill:#f0f8e8 style research fill:#fff8e8 style finish fill:#f8e8f4
The Steps Explained
1. Understanding Your Question If your question is ambiguous (e.g., “Tell me about Apple”—the company or the fruit?), the workflow asks clarifying questions before proceeding.
2. Preparation Checks our existing knowledge base for relevant prior research, then creates a structured plan of areas to explore.
3. Research Loop A coordinator manages parallel “researchers” who search the web. Each round:
- The coordinator identifies gaps in coverage
- Researchers search for information on specific questions
- Findings are combined and a draft report is updated
- The coordinator assesses coverage—if insufficient, another round begins
The number of rounds depends on thoroughness setting.
4. Finishing Up Writes the final report, formats citations, and saves findings for future reference.
Inputs
| Input | Description | Example |
|---|---|---|
| Topic or question | What you want to research | ”How are companies using AI for customer service in 2025?” |
| Thoroughness | How deep to go (see below) | “Standard” for most cases |
| Language (optional) | Research and write in this language | ”es” for Spanish, “zh” for Chinese |
Outputs
| Output | Description |
|---|---|
| Report | Written report with inline citations |
| Sources | Web sources consulted, saved for reference |
| Status | Success, partial, or failed |
Thoroughness Settings
| Setting | Depth | Intended Use |
|---|---|---|
| Quick | Fewer sources, faster | Quick overview of a topic |
| Standard | Balanced | General research |
| Comprehensive | Broader coverage | Topics requiring more depth |
| High Quality | Extensive sourcing | Publication-quality work |
Language Support
Supports 29 languages. When you specify a language:
- Search queries are conducted in that language
- Sources in that language are prioritized
- The final report is written in that language
Example
Input:
- Topic: “What are the main approaches to reducing plastic waste in oceans?”
- Thoroughness: Standard
Typical output: A ~3,000 word report covering areas like problem scale, cleanup initiatives, prevention strategies, policy approaches, and limitations. Cites 15-25 sources (news articles, reports, expert commentary).
Developer Reference
Entry point: workflows/research/web_research/graph/api.py — exposes deep_research() function
Graph construction: workflows/research/web_research/graph/construction.py — defines the LangGraph state machine, node wiring, and routing logic
State definitions: workflows/research/web_research/state/
workflow_state.py— mainDeepResearchStatesupervisor_state.py/researcher_state.py— agent-specific stateinput_types.py— input validation schemas
Core nodes: workflows/research/web_research/nodes/
clarify_intent.py— disambiguation logiccreate_brief.py— research brief generationsearch_memory.py— queries existing knowledge storesiterate_plan.py— builds research plan from brief + memorysupervisor/— coordinator logic (action selection, gap identification)refine_draft.py— iterative draft improvementfinal_report.py— final synthesisprocess_citations/— citation formatting and Zotero integrationsave_findings.py— persists results to stores
Subgraphs: workflows/research/web_research/subgraphs/
web_researcher.py— web search agent (usesresearcher_base/for scraping, query generation)
Prompts: workflows/research/web_research/prompts/ — all LLM prompts, organized by function
Config: workflows/research/web_research/config/ — quality tiers, language definitions