Workflow pattern / Research
Build a cited AI research assistant
Answer open questions from current public sources, with every claim linked to the passage that supports it.
Advanced / Answer + citations / On demand
The problem
Teams ask questions that depend on information published after a model's training cut-off, and an unsourced answer cannot be checked, corrected, or defended.
Who it is for
Product teams shipping research features, and internal teams replacing manual desk research.
Teams: Product / Research / Engineering
Inputs
- A research question, ideally narrow
- Allowed and disallowed source types
- A maximum acceptable source age
- An output schema with a place for unsupported claims
Conceptual process
01Decompose
Split the question into sub-questions that can each be answered by a single passage.
02Discover
Run a query set per sub-question and collect candidate URLs with their query provenance.
03Select
Filter candidates on source type, age, and whether the page plausibly contains the needed fact.
04Retrieve and normalize
Fetch each page and reduce it to clean content with the canonical URL retained.
05Extract
Pull the specific claim plus the excerpt supporting it, or record that it was not found.
06Synthesise
Compose the answer only from extracted claims, preserving conflicts instead of resolving them.
07Report coverage
State sources intended, reached, and rejected alongside the answer.
Flow diagram
- 01Question
- 02Sub-questions
- 03Discovery
- 04Selection
- 05Retrieval
- 06Claim extraction
- 07Synthesis
- 08Cited answer
Example output
{ "question": "What deployment regions does the service document?", "claims": [ { "text": "Three regions are documented: US, EU, and APAC.", "confidence": "supported", "source": { "url": "https://example.com/docs/regions", "retrieved_at": "2026-09-14T10:02:11Z", "excerpt": "Available regions: us-east, eu-west, ap-southeast." } } ], "unsupported": ["Latency figures per region were not found in available sources."], "coverage": { "intended": 8, "reached": 6, "rejected": 2 }}Data-quality considerations
- Prefer primary sources over summaries of primary sources.
- Record retrieval time per source; report the oldest, not the newest.
- Treat vendor pages as authoritative only about themselves.
Failure modes
- Synthesis introduces a claim no extracted passage supports.
- A single aggregator page is treated as several independent sources.
- Sub-questions overlap, so the same source is counted repeatedly as corroboration.
- Unreachable sources vanish from the output instead of reducing reported coverage.
Suggested architecture
- Planner producing an explicit, inspectable query set
- Discovery layer returning URLs with query provenance
- Retrieval and normalization service with per-source timestamps
- Claim extractor returning value plus excerpt or an explicit null
- Synthesis step constrained to extracted claims only
- Answer store retaining the full provenance chain
What to test first
- 01Ask a question whose answer you already know and check the citations, not the prose.
- 02Break one source deliberately and confirm coverage drops rather than the answer silently changing.
- 03Ask a question with no public answer and confirm the system says so.
Related reading
How to Build a Cited AI Research Agent
A source-first workflow for turning open-web information into accountable AI answers.
How AI Agents Browse the Web Reliably
A practical guide to discovery, retrieval, clean context, structured extraction, and source traceability.
How to Build Better AI Outputs With Source Metadata
What to carry alongside content, and what it lets your product say.