Inspiration

Slack is where teams make promises, ask for help, make decisions, and escalate blockers. But those commitments often stay buried in threads instead of becoming tracked work. Ops Radar was built around a simple pain: managers, founders, and operators should not have to reread a whole channel just to answer, "What are we about to drop?"

What it does

Ops Radar turns a chaotic Slack channel into a rescue report. A teammate asks it to rescue a public channel, and Ops Radar scans recent messages for unanswered asks, stale promises, blockers, buried decisions, owners and dates when visible, confidence, source citations, and recommended next actions.

Each finding includes the original evidence, workflow status, and a draft follow-up. A teammate can mark a finding resolved, snooze it for later, reopen it, or open an approval modal where the drafted reply can be edited, approved, or canceled.

Why it is different

Ops Radar is not a generic channel summarizer. Summaries retell what happened. Ops Radar audits for operational risk: what needs a reply, what is blocked, what went stale, and what decision needs to be captured.

The output is a next-action queue with proof and workflow controls, not a recap.

How it uses Slack

Ops Radar is built around Slack-native surfaces: public channel mention triggers, Block Kit rescue reports, source-message citations, Draft reply, Mark resolved, Snooze, and Reopen buttons, editable approval modals, App Home command center, and assistant prompts.

Safety and trust

Ops Radar never sends automatically. The report can update its own triage state, but the only send path is a human approval modal. In the demo, the modal was opened and canceled; proof confirmed no follow-up was sent.

The first proof build deliberately stays public-channel only. Private-channel and DM support are deferred until scope, permissions, and trust controls are reviewed.

How we built it

Built with Slack Bolt for JavaScript, Slack Block Kit, Slack App Home, Slack interactive modals, the Slack CLI developer sandbox, the OpenAI Agents SDK, Node.js tests, TypeScript checkJs, and Biome.

The detection loop is deterministic for the demo and evaluation bank, so quality is repeatable instead of self-scored by a language model.

Challenges

The biggest product challenge was avoiding unsafe automation. A Slack agent that can identify follow-ups is useful, but a Slack agent that sends messages without control is risky. Ops Radar solves this by separating detection from sending: the agent can find risk and draft a reply, but a human must approve the final message.

The live demo also exposed a real false positive: "client is waiting on the follow-up" was initially treated as an internal blocker. We patched the scanner so client pressure stays in needs-reply unless the text actually describes our work as blocked, then added regression coverage.

Accomplishments

  • Live Slack sandbox scan passed in a real public channel.
  • Ops Radar posted a cited rescue report with five dropped balls.
  • Draft, resolve, snooze, and reopen controls work.
  • Approval modal flow works for human-reviewed replies.
  • No follow-up was sent without approval.
  • Latest checks passed: 34/34 tests, 100/100 eval across 7 scenarios, typecheck, and lint.
  • The demo video shows the whole workflow in 73 seconds.

What we learned

The valuable unit of Slack work is not "what happened?" It is "what needs to happen next?" Teams already have conversations in Slack; the missing layer is accountability with evidence. Ops Radar works because it treats Slack as a live operations surface, not a document to summarize.

What is next

  • Private-channel support after a dedicated permission review.
  • DM support only after opt-in trust controls.
  • Team-configurable stale thresholds.
  • Trend view in App Home: recurring blockers, owners with open loops, and channels accumulating risk.
  • Deeper integrations with task systems for teams that want to convert findings into tickets.

Built With

  • biome
  • javascript
  • node.js
  • openai-agents-sdk
  • slack-app-home
  • slack-block-kit
  • slack-bolt
  • slack-cli
  • typescript-checkjs
Share this project:

Updates