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 ticket
  • sources.txt — URLs and files it may use
  • MUST-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

  1. Plan: which source answers which column
  2. Act: extract, don’t essay
  3. Critique: every cell has a pointer; spot-check two URLs yourself
  4. 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