Claude Academy
Sign in

The STORM Method · lesson 2 of 4

The STORM Pipeline, Stage by Stage

STORM is implemented as four modules run in sequence:

KnowledgeCuration → OutlineGeneration → ArticleGeneration → ArticlePolishing

Knowledge curation covers persona discovery and simulated conversations (stages A–B below); the remaining modules map to stages C–E.

Stage A — Persona discovery

  1. FindRelatedTopic — the LM proposes topics related to the input topic.
  2. Structural exemplars — STORM scrapes the tables of contents of related Wikipedia articles. TOCs are cheap, high-signal summaries of how humans organize similar subjects.
  3. GenPersona — given topic + exemplar TOCs, the LM is prompted to "select a group of Wikipedia editors… each represents a different perspective" on the topic.

Two hard-coded behaviors:

  • A default "Basic fact writer" persona is always prepended, guaranteeing baseline factual coverage even if generated personas are all exotic.
  • max_perspective=3 by default — three generated personas plus the basic fact writer.

Stage B — Simulated conversations

Each persona runs its own conversation in parallel (compare subagents fan-out), capped at max_conv_turn=3 question/answer rounds. Each conversation pairs two roles:

RoleLM tierJob
WikiWritercheapAsks exactly one question per turn, in persona; conversation history is compressed to keep context small
TopicExpertgroundedAnswers only from retrieved sources

The TopicExpert is itself a three-step chain:

  1. QuestionToQuery — decompose the question into search-engine queries.
  2. Retrieve — run the queries, keep search_top_k=3 results each (see rag-fundamentals).
  3. AnswerQuestion — synthesize an answer from those snippets under an explicit "do not hallucinate" grounding instruction; if retrieval comes back empty, the expert refuses to answer rather than improvising.

That refusal rule is the pipeline's core anti-hallucination valve: no source, no claim.

Stage C — Outline generation

Two passes:

  1. Draft outline from the LM's parametric knowledge alone — a skeleton of what the model already "knows" the topic should cover.
  2. Refine the draft using the Stage B conversation transcripts, injecting the retrieved specifics the parametric draft could not know.

Draft-then-refine outperforms outlining directly from transcripts: the parametric draft supplies global structure, the transcripts supply grounded detail.

Stage D — Article generation

  • All sources collected during Stage B form a topic-local corpus.
  • For each outline section, STORM runs semantic retrieval over that corpus (section heading as query) to gather the most relevant snippets.
  • Sections are written in parallel, each grounded in its own retrieved snippets, with inline numeric citations ([1], [2]) pointing back to sources.

Stage E — Article polishing

  • Generate the lead section (the summary paragraph Wikipedia puts above the fold) — written last, once the full body exists.
  • Deduplicate repeated content across sections, a natural artifact of sections being drafted independently.

Multi-LM cost strategy

STORM deliberately splits work across model tiers — the same economics that motivate prompt-caching and model routing elsewhere:

TaskTierWhy
Question asking (WikiWriter)cheap/fast LMHigh call volume, low difficulty per call
Outline, article, polishstrong LMLow call volume, quality-critical

Key terms

  • KnowledgeCuration — STORM's first module: persona discovery plus retrieval-grounded simulated conversations that gather sources and Q&A transcripts.
  • GenPersona — the step that generates editor personas from related-article tables of contents; prompt framing: "select a group of Wikipedia editors, each representing a different perspective."
  • Basic fact writer — the default persona always prepended to the generated persona list to guarantee baseline factual coverage.
  • WikiWriter — the cheap-LM conversational role that asks one persona-flavored question per turn over compressed history.
  • TopicExpert — the grounded conversational role: QuestionToQuery → retrieve → AnswerQuestion, refusing to answer when retrieval returns nothing.
  • QuestionToQuery — decomposition of a natural-language question into one or more search-engine queries before retrieval.
  • max_conv_turn / max_perspective / search_top_k — the three headline knobs: turns per conversation (default 3), generated personas (default 3), and retrieved results per query (default 3).
  • Draft-then-refine outlining — producing an outline from parametric knowledge first, then revising it against conversation transcripts.
  • ArticlePolishing — the final module: write the lead section and deduplicate content repeated across independently-drafted sections.

See also