Skip to content

Repository files navigation

🤝 DecisionOps — The Ambient AI Decision Tracker for Slack

Stop searching for "why did we build it this way?" DecisionOps captures your team's micro-decisions automatically, as they happen.

Slack Agent Builder Challenge


The Problem

Engineering and product teams make dozens of micro-decisions every week in Slack—choosing an architecture, dropping a feature, selecting a vendor. These decisions are buried in endless threads. Six months later, when the team asks "Why did we choose PostgreSQL over MongoDB?", the context is completely lost.

DecisionOps solves this by turning Slack into an ambient system of record.


How It Works

DecisionOps runs in the background (ambiently) and monitors channels for the 🤝 (handshake) emoji.

  1. Trigger: A team member reacts with 🤝 on a message that represents a finalized decision.
  2. Analysis: The agent reads the context of the thread and uses Claude/Gemini to extract the core decision, the rationale, and the participants.
  3. Broadcast: The structured decision is instantly broadcasted to a dedicated #decisions channel (or multiple channels) as an immutable record.

Features

  • Ambient Polling (RTS): Uses Slack's Real-Time Search API via assistant.search.context to find decision-language messages without ingesting every message in the workspace.
  • Dynamic AI Router: Supports Bring Your Own Key (BYOK) for Anthropic, Google Gemini, OpenAI, and OpenRouter. If an API rate-limits, it gracefully falls back.
  • Multi-Channel Broadcast: App Home configuration allows admins to route decisions to specific channels.

Tech Stack

Layer Technology
Framework @slack/bolt v4
Language TypeScript
Runtime Node.js
AI Gemini 2.0 / Claude 3.5 Sonnet / OpenAI
Search Slack Real-Time Search API (assistant.search.context)
State Vercel KV / Redis

Quick Start

Prerequisites

  • Node.js 20+
  • A Slack workspace
  • A Vercel KV / Redis instance (for user BYOK state)

Installation

# Clone the repository
cd decisionops
npm install

# Configure environment
cp .env.example .env
# Edit .env with your SLACK_BOT_TOKEN and REDIS_URL

# Create or update your Slack app
# Use slack.json as your app manifest in api.slack.com

# Start the agent
npm run dev

Configuration

  1. Open the App Home tab in Slack.
  2. Configure your API Keys (BYOK).
  3. Select which channels should receive the Decision broadcasts.
  4. Drop a 🤝 on a message to test it!

Privacy First

DecisionOps is an ambient monitor, not a listener. It does not store a copy of workspace history. It uses Slack's permissioned Real-Time Search API for narrow decision-language queries, then stores only confirmed decision records and workspace configuration.

Free Vercel Deployment

DecisionOps supports Vercel Hobby with an authenticated external ambient-monitor schedule. See docs/VERCEL_FREE_DEPLOYMENT.md.


Built for the Slack Agent Builder Challenge

About

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages