🟡 The citation machine

You get: architecture decision records with receipts. Pairs with: the colleague who asks “source?” in every review.

tabstack research "CRDTs vs operational transforms for a collaborative editor in 2026" 
  > /tmp/r.ndjson

jq -r 'select(.event=="complete") | .data.report' /tmp/r.ndjson > docs/adr/007-crdts.md

jq -r 'select(.event=="complete") | .data.metadata.citedPages[] | "- [(.title)]((.url))"' 
  /tmp/r.ndjson >> docs/adr/007-crdts.md

What it does

research runs a multi-source investigation and returns a synthesized report with full citation metadata. The NDJSON stream carries everything — pipe to a file, then extract the report and citations separately with jq.

The result is an ADR that cites its sources, automatically.

Why save to a file first

Piping to a file lets you query the NDJSON multiple times without re-running the API call (~250 credits for research). Extract the report once, the citations once, anything else you need — all from the same stream.

The cost note

research costs roughly 25× more than extract. If you can name the sources in advance, extract each page directly and synthesize in-context — you’ll often get better specificity at a fraction of the price.

Use research when the hard part is finding the right sources, not reading them.

Extend the output

# Add a "further reading" section with abstracts
jq -r 'select(.event=="complete") | .data.metadata.citedPages[] |
  "### (.title)\n(.url)\n"' /tmp/r.ndjson >> docs/adr/007-crdts.md

One-liner version

When you don’t need to save the stream:

tabstack research "WebSockets vs SSE for real-time collaboration" 
  | tee /tmp/r.ndjson 
  | jq -r 'select(.event=="complete") | .data.report'

tee saves to file and passes through to jq simultaneously.

Good questions for this recipe

  • “What are the tradeoffs between X and Y for [specific use case] in [year]?”
  • “What does current research say about [technical topic]?”
  • “What have teams learned from adopting [technology] in production?”

Broad discovery questions where you don’t know which sources to read first. Once research surfaces them, extract the cited pages directly for the detail you need.