🎯 Phase 0 — Define the scope
The pipeline has four numbered phases from 0 to 4 that run in a fixed order. Phase 0 is preparation: before spending a single agent, Claude interprets what you asked for, decides who the report is for, and prepares the file name. It's quick and inexpensive—but it determines the focus of everything that follows.
Each level starts only when the previous one is complete. Phase 4 (at the top, glowing) is what sets STORM apart from an ordinary report: nothing reaches briefing v2 without going through it.
🟡 New here? — two Phase 0 terms
- target reader: the role the report is written for (e.g., "SaaS founder," "teacher"). It’s what makes the actionable insight be specific, not generic.
topic-slug: the topic converted into a filename (kebab-case): "Are voice agents worth it?" becomesagentes-de-voz. Becomes the name of the saved HTML file.
The 4 Phase 0 decisions
- Interpret the topic in one line and move on — it only asks if something is ambiguous enough to change the research.
- Identify the target reader based on the topic/context; focus on its practical section.
- Derive the
topic-slugin kebab-case for the file name. - Notify you, in one line, that the pipeline will run: 5 lenses, then verification.
🔭 Phase 1 — Five lenses in parallel
Phase 1 creates five agents general-purpose in a single message, so they run in parallel. Each gets the SAME framing of the topic (defined in Phase 0) plus its own lens — Practical, Academic, Skeptic, Economist, Historian (you met them in Module 1.2).
⚡ Why in a single message
Launching all five in the same turn makes them run at the same time, not in a queue. It’s faster, and it’s what keeps the lenses independent — none sees the others’ answers before writing its own.
The 3 things each lens MUST return
In 2 sentences.
3–5 bullets, each with a data point + named source + URL.
What only that lens would say.
Golden rule: real web research, less than 400 words each. Without this, it becomes opinion — and STORM doesn’t work with opinions.
💡 The convergence/divergence note
When all five return, Claude publishes 2 to 3 lines in chat saying which direction the lenses converge in and what the strongest divergence is. It does NOT dump the raw briefs into the chat — they are raw material for the next stages.
🗺️ Phase 2 — Contradiction map
Phase 2 is internally: no new agents. Working only from the five briefings, Claude cross-checks the lenses and builds a five-item map. That map isn't a separate deliverable—it's the raw material for the findings, the “supports/challenges” chips, the hidden connection, and the boundary question (you saw the concept in Module 1.3; here it's applied).
Direct conflicts
Where two or more lenses claim the opposite—naming the specific claims, not just the topic.
Strong × weak evidence
Which lens is better supported by the source hierarchy, and which is weaker and why.
The question that resolves it
The only empirical question that would resolve the set’s biggest contradiction.
Universal agreement
What all the lenses confirm—including the skeptic. This is probably the central finding.
Blind spot
What NO lens addressed. It becomes the “missing sixth lens” and informs the boundary question.
🟡 Reminder from 1.3 — convergence ≠ consensus
The “universal agreement” is a strong hypothesis, not independent proof: all five lenses have the same author. The report always makes that clear. Agreement isn't the same as the field having reached consensus.
🧱 Phase 3 — Synthesize the HTML
In Phase 3, Claude reads the report-template.html and clones it — never recreates the CSS. Each section of the template is filled from the previous phases, and the file is saved to a predictable path within your project.
storm-reports/ └── {topic-slug}-briefing.html # cria a pasta se não existir
Decision-maker level: established fact first, then the contested interpretation.
By reliability, with a 1–10 rating and “supports/challenges” chips.
The link that appears only when you cross-check all five lenses.
The blind spot as the lens that could change everything.
3–6 specific moves for the target reader.
What to assert, qualify, or avoid; the boundary question; references with status tags.
✓ How to handle the template
- ✓Clone the structure and fill in the fields
- ✓Keep the CSS, fonts, and blue highlight
- ✓Leave notes/scores blank for Phase 4 to fill in
✗ What NOT to do
- ✗Recreate the CSS from scratch or change the look
- ✗Invent confidence notes before verification
- ✗Skip sections "because there wasn’t enough time"
✅ Phase 4 — Adversarial review + verification
This is the top phase of the ladder — and the one that CANNOT be skipped. A report delivered without Phase 4 is not Storm Research. It has three parts: self-assessment, citation verification, and applying corrections.
🪞 4a · Self-assessment (internal)
- Rate each of the 5 findings from 1 to 10 for reliability, with justification.
- Identify the weakest link and what would verify it.
- Check for bias: which lens dominated the synthesis and what was underestimated.
- Name the missing sixth perspective and give an honest overall score.
🔬 4b · Verify Each Citation
~4 to 6 agents general-purpose in parallel, one per cluster of related citations. Each checks the claim against the actual primary source (not blog summaries) and returns a verdict:
🩹 4c · Apply Corrections
- Correct incorrect numbers, titles, and dates; lower the rating when the evidence is weak.
- Send preprints and contested claims to the “contested signal” sidebar.
- Fill in the banner:
X fabricadas, Y corrigidas, Z rebaixadasand citation tags.
✓ What Phase 4 guarantees
- ✓Each citation points to the actual primary source
- ✓The verification banner is truthful
- ✓Weak numbers are downgraded, not hidden
✗ Skipping Phase 4 means
- ✗Citations that may not even exist are presented as truth
- ✗Confidence scores without supporting evidence
- ✗Stops being a STORM report
📤 The final output
The deliverable is the post-verification v2 version for the brief. Claude tries to open the file in your browser with the platform's opener and summarizes the essentials in the chat.
# Linux xdg-open storm-reports/{slug}-briefing.html # macOS open storm-reports/{slug}-briefing.html # Windows start "" storm-reports\{slug}-briefing.html
💬 What goes in the chat (briefly)
- •The file path.
- •The score:
N/N checadas, X fabricadas, Y corrigidas, Z rebaixadas. - •The universal finding and the boundary question.
- •The claim safety summary: what’s safe to say × what to avoid.
🧭 The full pipeline, in 6 steps
Scope
Interpret the topic, identify the target reader, derive the slug, and say that you’ll run it.
Five lenses in parallel
5 agents in a single message; each returns a position, evidence with URLs, and "the one thing".
Contradiction map
Conflicts, strong×weak evidence, the question that resolves them, universal agreement, blind spot.
Synthesize the HTML
Clone the template and fill in all sections; save to storm-reports/.
Review + verification
Self-evaluation, ~4–6 verifiers per cluster, corrections, and an accurate banner.
Output v2
Open the verified briefing and summarize in chat: path, score, universal finding, and boundary.
Self-recovery (optional): what makes Phase 4 non-negotiable in STORM?
📌 Module summary
topic-slug.storm-reports/.Next module:
2.4 — Your First Report (Hands-on)