Issue Orchestration Protocol

AI triage for your backlog.
Humans stay in charge.

Triage classifies GitHub issues and pull requests, detects duplicates using vector similarity, and drafts responses in Slack for maintainer review. Every AI-generated draft is approved, edited, or skipped by a human before it posts.

Production · triage-orcin.vercel.app
slack · #all-arushi-dev-workspace
Triage Slack card showing classified bug with drafted response and Approve/Edit/Skip buttons

What Triage Does

Triage is a Slack-native agent for open-source maintainers drowning in inbound issues and pull requests. It classifies incoming items via LLM, catches duplicates through vector similarity, drafts responses for maintainer review, and surfaces cross-issue patterns across the backlog. Delivered where maintainers already work — Slack — with a Model Context Protocol server exposing the same data to any AI client.

How It Works

Step 01

Ingest & Classify

GitHub webhook fires on issue open. Gemini classifies the item as bug, feature, question, docs, or spam.

Webhook  →  Classify (Gemini)  →  [ type ]
Step 02

Embed & Match

The issue text is embedded and stored in pgvector. Cosine similarity against the backlog surfaces duplicates automatically.

Embed  →  pgvector  →  Similarity ≥ 0.85  →  Flag
Step 03

Draft & Deliver

Decision engine routes by classification. Non-urgent bugs and features get a Gemini-drafted response, sent to Slack as a card.

Route  →  Draft (Gemini)  →  Slack card
Step 04

Human Decides

Maintainer reviews in Slack. Approve posts to GitHub with attribution. Edit refines first, then posts. Skip discards.

Approve → GitHub  |  Edit → GitHub  |  Skip → drop

What Sets Triage Apart

Feature 01

Human-in-the-loop drafts

Triage classifies incoming issues and generates a proposed response, then posts it to Slack as a card with Approve, Edit, and Skip buttons. Every draft is reviewed by a maintainer before it reaches GitHub.

Slack card with draft response and three action buttons

Feature 03

Cross-issue pattern detection

LLM-generated clustering surfaces themes across the backlog — recurring bug categories, documentation gaps, workflow friction. Drill into any pattern to see the contributing issues.

Patterns page showing table of detected themes
Pattern drawer showing full detail and contributing issues

Feature 05

MCP server integration

A remote MCP endpoint exposes list_patterns, search_similar_issues, and get_digest to any Model Context Protocol client — Claude Desktop, Cursor, MCP Inspector, or anything spec-compliant.

MCP Inspector showing three registered tools
MCP Inspector showing tool invocation result with real pattern data

Feature 02

Semantic duplicate detection

Every incoming issue is embedded and matched against the backlog via cosine similarity. When it clears threshold, Triage posts a Slack card flagging the potential duplicate with the source issue linked — maintainers close it or override in one click.

Slack card flagging a potential duplicate with linked source issue

Feature 04

On-demand digests

Run /triage-digest in Slack for a periodic backlog summary — counts by type, PR volume, patterns detected, duplicates caught. Backed by the same pipeline that drives the dashboard.

Slack rich digest message with metrics and patterns

Feature 06

Dashboard

A dedicated web surface at /dashboard mirrors what maintainers see in Slack — key metrics, latest digest, recent activity — plus history, filters, and drilldown across patterns and the full backlog.

Dashboard overview page with metrics, latest digest, and recent activity

Built With

Next.jsTypeScriptReactTailwind CSSNode.jsVercelSupabasePostgreSQLpgvectorGoogle GeminiSlack Bolt SDKGitHub WebhooksModel Context ProtocolJSON-RPC 2.0