How we killed manual triage with an ops queue

by

We used to treat every prod failure like a scavenger hunt — check Cloud Build, check logs, copy stack trace, write ticket, ping Slack, hope someone sees it.

The failure wasn't expensive. The queue that didn't exist was.

What changed:

1. Every failure now files itself: `POST /api/admin/ops type: bug` with title, steps, actual vs expected, priority, tags. Same shape whether it's a build break, a flaky E2E, or a widget report.

2. One queue fans out: GitHub issue + Slack thread auto-created, deduped by delivery ID so at-least-once doesn't double-file.

3. Agent picks it up: Claude/Cursor connector marks investigating → opens PR. Human stays on review, nothing merges alone.

Lessons since:

- Source → already on a bus (Pub/Sub, webhook) = no new infra

- File a real ticket, not a log line - ticket has priority / repro / owner = agent can act

- Dedupe at edge saves more time than fancy triage logic

Setup was 2 commands: `npm i -g /cli` → `shipeasy setup`. The win isn't the PR — it's that 2am page never happened.

How are you turning failures into tickets today? We'd love comparisons on queue shapes.

→ shipeasy.ai / docs.shipeasy.ai

37 views

Add a comment

Replies

Be the first to comment