Issue Triage Agent
Auto-classify, prioritize, and suggest owners for every new GitHub issue — within seconds of it being opened.
What it does
When a new issue is opened (or reopened) on any of your connected repos, SiftPulse's issue triage agent springs into action:
- Classifies the issue — reads the title and body, then assigns a type label (
bug,enhancement,documentation,question,security,performance) plus area labels likearea:authorarea:api. - Prioritizes — assigns a priority level (critical / high / medium / low) with a one-sentence rationale that references something specific in the issue.
- Suggests owners — extracts file paths and stack traces mentioned in the issue body, then scores contributors by recent commit activity in those files. Top contributors are @mentioned in the triage comment.
- Applies labels — auto-applies the type + priority labels to the issue on GitHub, creating them with sane colors if they don't exist yet.
- Posts a triage comment — a single structured comment with the priority, labels, suggested owners, a duplicate-issue signal, and a draft response the maintainer can copy and edit.
Sample comment
Here's what a typical triage comment looks like:
## 🤖 SiftPulse Issue Triage
**Priority:** 🟠 `high` — The error trace references the auth middleware on every request, suggesting broad user impact.
**Suggested labels:** `bug` `area:auth` `priority:high`
**Ideal assignee profile:** backend engineer familiar with Express middleware and session handling
**Suggested owners** *(based on recent commit history in mentioned files)*:
- @alice — touched 3 of 4 changed files in the last 90 days
- @bob — listed as CODEOWNER for src/auth/
**Duplicate check:** ✅ not duplicate — Issue appears unique based on the specific JWT expiry handling described.
---
**Draft response** *(copy & edit as needed)*:
> Thanks for the detailed report! The stack trace confirms this hits the auth middleware.
> We'll investigate the JWT expiry path. Can you confirm which Node.js version you're running?
---
*Triaged by SiftPulse — autonomous AI issue triage · View your dashboard*
Priority levels
- critical — data loss, security vulnerability, or production outage
- high — significant user impact with no workaround
- medium — notable issue, workaround available or partial impact
- low — minor issue, cosmetic, or nice-to-have improvement
Owner scoring
The agent extracts file paths from the issue title and body using a pattern matcher (handles src/auth.js style paths, error traces, and code blocks). It then queries the GitHub Commits API for each mentioned file over the last 90 days and scores contributors by:
- Recency weight — commits from today score 1.0; the score decays linearly to 0.1 at 90 days
- File breadth — contributing to more of the mentioned files boosts the score
Up to 3 top contributors are surfaced in the triage comment. The issue author is always excluded.
Configuration
Opt out a specific repo
Add a .siftpulse.yml file to any repo root to disable triage for that repo:
# .siftpulse.yml
issue_triage: false
You can also disable the entire SiftPulse integration for a repo with:
# .siftpulse.yml
enabled: false
Per-installation settings (dashboard)
From your dashboard, you can toggle two behaviors for all repos in your installation:
- Auto-apply labels — when disabled, labels are suggested in the comment but not applied via the GitHub API
- @mention suggested owners — when disabled, owner names appear in the comment without GitHub @-mentions (avoids unwanted notifications)
These settings are in the Issue triage settings card on your dashboard.
Environment kill-switch
If you need to disable triage across all installations at the infra level, set:
ISSUE_TRIAGE_DISABLED=true
This env var takes precedence over all per-repo and per-installation settings.
Dashboard integration
Every triaged issue appears in your dashboard activity feed under the Issue triage filter. The weekly stat card shows how many issues were triaged in the last 7 days, and the weekly digest email includes the top triaged issues ranked by priority.
💡 Tip: The triage agent fires within ~30 seconds of an issue being opened. If you don't see a comment, check that the repo is in your connected list and that .siftpulse.yml doesn't have issue_triage: false.
Ready to see it in action?
Start a 14-day free trial — all 5 agents included. No card required to start.