Portfolio · Case Study
A two-phase agentic system for automated engineering support ticket triage. When a Jira ticket is created, a webhook triggers Phase A — a fast LLM classifier (~6 seconds) that routes the ticket to the correct project and repository. Phase B launches a Claude Code investigation agent inside the target repo (~2.4 minutes), reading CLAUDE.md, tracing relevant files, checking git history, and producing a structured root cause analysis with a proposed fix. A human-in-the-loop approval gate sits between diagnosis and Phase C, where a dev agent implements the approved fix and opens a pull request. A Mem0 learning loop captures HITL corrections, PR outcomes, and CI failures to continuously improve future investigations.
Phase A is cheap — a 6-second classifier that routes the ticket to the right repo. Phase B is expensive — 2.4 minutes of full codebase investigation. Separating them means a misclassification costs 6 seconds to catch, not 2.4 minutes. The HITL gate sits between diagnosis and implementation: the most expensive mistake is a code change, not a classification.
Each signal type writes a different category of memory. At the start of Phase B, the agent searches Mem0 for the project and ticket keywords — returning relevant prior investigations, known repo quirks, and fix patterns that worked. At Phase C, the agent retrieves implementation-level memories: which approaches were rejected in PR review and why.
Each project has a dedicated devcontainer — its own filesystem, ports, and dependency stack. When the dev agent is dispatched, it enters that container's boundary. Changes stay isolated until a PR is opened and reviewed. There is no risk of one agent's work affecting another project or touching the production branch.
Phase B's structured investigation lands directly in the ticket as a TriageAgent comment — the same surface the team already uses.
Every Phase B finding fans out to Slack as a structured card — humans approve or override in two taps without opening Jira.
Every HITL correction, PR outcome, and CI failure writes back to Mem0 — the agent gets better at the next ticket without retraining.
Once approved, the dev agent implements the fix in an isolated worktree, opens a PR, and runs the test suite — the reviewer sees the result, not the process.
triage-agent bot account branches, commits, and opens the pull request.