You already do this before standup. Open Linear. Skim Slack. Check the sheet someone updated last night. Then ask ChatGPT to summarize what is blocked.
Each morning the assistant invents a different path. Yesterday it forgot open PRs. Today it pads the list with a stale thread. The format drifts, so people still ask the same follow-ups.
What breaks
Freeform standup prompts fail in quiet ways:
- Missing fields — age, owner, or severity disappears.
- Source hopping — one day GitHub, next day only Linear.
- Invented blockers — the model fills gaps instead of saying empty.
OpenAI's guidance for operations teams stresses the same pain: status work stalls when key details are not explicit, and recurring outputs need a consistent format so people stop decoding every update. A longer prompt does not fix that. The path still freelances.
What to build
Encode the job as one named tool — something like standup_blockers — that returns a fixed pack every time:
- Issues tagged blocked (id, title, owner, age in days)
- PRs waiting on review
- Sev-1 / Sev-2 count (or an explicit empty)
Lock the sources and the field list in the tool. The chat only asks for today's pack. It does not get to choose where to look.
On Smia you design that small tool, host it on a server URL, and call it from ChatGPT, Claude, or Cursor. The coworker still talks in their own chat — they just get the same pack shape you designed.
How to verify it worked
- Call the tool twice in a row. Same sections, same order.
- Compare counts to Linear and GitHub. Numbers should match, not approximate.
- Force an empty section (no Sev-1s). The pack should say empty — not invent filler.
When the morning question is always "pull today's blockers," standup prep stops being a scavenger hunt.
