Research is the job where one-shot prompting fails most theatrically: fluent paragraphs, fake citations, prices from 2023.
Use a loop. Treat the model as a reader and tabulator, not as a library.
Pack
GOAL.md— the question in one ticketsources.txt— URLs and files it may useMUST-NOT.md— “do not invent sources; write NOT FOUND”- Example table (columns you want)
Optional: a second model as critic that only checks citations.
Spec (minimum)
- Deliverable: markdown table or annotated outline
- Process: read sources first; quote or paraphrase with URL
- If a claim is not in the pack, it does not ship
- Stop after N fetches
- No “in conclusion, AI will transform…” filler
Loop
- Plan: which source answers which column
- Act: extract, don’t essay
- Critique: every cell has a pointer; spot-check two URLs yourself
- Retry only the failing rows
Eval
If you need depth on shopping research, that is pattern: buying. If you need creative references, pattern: making.
Anti-patterns
- “Search the web and write a report” with no pack
- Allowing the model to pick sources and also grade them
- Copying competitor blog structure including their mistakes