← Back to Work

Agentic AI in production

Triage Bot

An autonomous agent that triages user feedback across the whole product portfolio, filing issues and dispatching fix PRs behind a human-approval gate.

Role
Sole engineer, designer, and operator
Year
2026
Status
Live
  • Python 3.13 (asyncio)
  • discord.py
  • Gemini 2.5 Flash-Lite
  • OpenAI Moderation
  • Microsoft Presidio (PII)
  • Neon Postgres
  • AWS EC2 / API Gateway / SQS
  • AWS CDK

1 YAML entry

Onboarding a new product

2026-06-06 · config/projects.yaml: one entry per product, no code change

Challenge

Across a portfolio of consumer products, a solo operator cannot read, classify (bug or feature request), file, and answer all user feedback in each product’s voice. Most teams use people for that judgment. The goal: one agent doing it safely, autonomous where mistakes are cheap and behind a hard human gate otherwise.

Process

Triage Bot is a persistent Python service (asyncio, discord.py) on one AWS EC2 instance. Feedback from Sentry widgets in each product fans out to per-project Discord channels and passes a moderation pre-filter, a mandatory PII scrub (Microsoft Presidio) before any model sees text, and a Gemini 2.5 Flash-Lite classifier returning a schema-validated label, confidence, and severity.

Then it acts on its own: structured GitHub issues for bugs, auto-fix PRs for high-confidence low-severity ones, feature requests cross-posted to the right forum, and replies drafted in each product’s brand voice, retried on banned-phrase hits. Sensitive topics (refunds, legal, security, pricing) go to a human, never auto-drafted. Adding a product is one YAML entry, no code change.

Safety is hardcoded: draft-only auto-fix PRs, no automation for high and critical bugs, prompt injection classified as spam, and public replies gated to my Discord ID. Gemini 2.5 Flash-Lite replaced Claude Haiku for roughly 10x lower per-message cost; I disabled thinking_budget after a measured token-starvation finding.

Result

Live in production. One service triages feedback for every product in the portfolio, each with its own enforced voice and escalation routing, at a target cost under $10 per month. It’s the portfolio’s clearest exhibit of an agent taking consequential action (real issues, real PRs) within hard, code-level safety boundaries. Unattended auto-reply waits on a sustained approval-rate threshold, not yet reached.