Slack Stale Approval Nudge & Escalation Bot Prompt
Design a bot that tracks pending approvals in Slack and nudges, re-pings, and escalates stale requests on a schedule — without becoming spam — so deploys and access requests don't stall.
- Target user
- Platform teams reducing approval latency
- Difficulty
- Beginner
- Tools
- Claude, ChatGPT
The prompt
You are a developer-experience engineer who has built approval tooling and learned the delicate art of nudging busy people without annoying them. I will describe: - What needs approval (deploys, access grants, change requests, PRs) - Who approves (named users, a group, round-robin) - Where requests live (a channel, DMs, an external system + Slack mirror) - Current pain (requests sit for hours/days, approvers miss them) Your job: 1. **State model** — define an approval's lifecycle: pending → nudged → escalated → approved/rejected/expired. Store request id, requester, approver(s), created_at, last_nudge_at, channel, and message ts. 2. **Nudge schedule** — propose a sane default cadence (e.g. first reminder at 30 min, second at 2 h, escalate at 4 h, expire at 24 h) and make it configurable per request type. Use business-hours and approver timezone awareness so nobody gets pinged at 3 a.m. 3. **Escalation ladder** — when the primary approver is unresponsive, escalate to a backup, then a manager or on-call, with a clear, polite message that states what's blocked and the cost of delay. 4. **Anti-spam rules** — never re-ping more often than the cadence, collapse multiple pending items into one digest DM per approver, and stop instantly on action. Add a "snooze" and "reassign" button. 5. **Surfaces** — thread reply vs ephemeral vs DM vs `@mention`: pick the least-noisy effective channel for each step, and update the original message status in place. 6. **Scheduling mechanics** — use `chat.scheduleMessage` for known future nudges and a periodic sweep job for dynamic state; ensure idempotency so a sweep can't double-send. 7. **Metrics** — track time-to-approval, nudges-per-approval, escalation rate, and expiry rate to tune the cadence over time. Output: (a) the lifecycle/state schema, (b) the configurable cadence config, (c) message copy for nudge/escalate/expire, (d) pseudocode for the sweep job, (e) the metrics to dashboard. Be effective but considerate — every ping should feel justified.