Web Research

Researches a topic across the internet, gathering information from multiple sources and synthesizing it into a report with citations.

The workflow:

  1. Clarifies what you’re asking (if ambiguous)
  2. Checks existing knowledge we’ve already gathered
  3. Searches the web iteratively, going deeper based on what it finds
  4. 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

InputDescriptionExample
Topic or questionWhat you want to research”How are companies using AI for customer service in 2025?”
ThoroughnessHow deep to go (see below)“Standard” for most cases
Language (optional)Research and write in this language”es” for Spanish, “zh” for Chinese

Outputs

OutputDescription
ReportWritten report with inline citations
SourcesWeb sources consulted, saved for reference
StatusSuccess, partial, or failed

Thoroughness Settings

SettingDepthIntended Use
QuickFewer sources, fasterQuick overview of a topic
StandardBalancedGeneral research
ComprehensiveBroader coverageTopics requiring more depth
High QualityExtensive sourcingPublication-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 — main DeepResearchState
  • supervisor_state.py / researcher_state.py — agent-specific state
  • input_types.py — input validation schemas

Core nodes: workflows/research/web_research/nodes/

  • clarify_intent.py — disambiguation logic
  • create_brief.py — research brief generation
  • search_memory.py — queries existing knowledge stores
  • iterate_plan.py — builds research plan from brief + memory
  • supervisor/ — coordinator logic (action selection, gap identification)
  • refine_draft.py — iterative draft improvement
  • final_report.py — final synthesis
  • process_citations/ — citation formatting and Zotero integration
  • save_findings.py — persists results to stores

Subgraphs: workflows/research/web_research/subgraphs/

  • web_researcher.py — web search agent (uses researcher_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