AI CUSTOMER WORKFLOW

AI Support Triage Agent

A serverless agent that turns a new support ticket into a Slack-ready handoff: related Linear issues, likely owning engineer, draft customer reply, and next steps.

← Back to Projects
Sample Project

This anonymized portfolio version is based on a production support workflow: CSMs receive customer tickets and need to know whether a related engineering issue already exists, who owns it, and what they can safely tell the customer.

The agent receives a Pylon ticket-created webhook, uses Claude with tool use to search Linear, forces a structured triage result, and posts the final handoff to Slack.

Portfolio focus: Customer workflow discovery, LLM tool use, structured outputs, operational guardrails, and integration design across support, engineering, and Slack.

Trigger

Pylon Ticket

A customer issue arrives with title, body, priority, tags, and account context.

Ingress

API Gateway + Lambda

The webhook is validated, normalized, and sent into the triage loop.

Reasoning

Claude Tool Use

The model searches Linear with ticket-specific queries and gathers related work.

Guardrail

Structured Submit

The loop ends only when a typed triage result is submitted through a tool.

Handoff

Slack Brief

Support gets the summary, likely owner, draft reply, and follow-up actions.

AI

New ticket — Northwind Logistics

Triage Bot · high priority

Users hitting a redirect loop after Okta login
Symptoms align with a known in-progress SAML callback bug where RelayState can redirect users back to the login page.

Suggested engineer

Priya Raman

Related issue ENG-1421 · In Progress
Draft reply

Thanks for reporting this. We found a known issue that matches the behavior you described and our engineering team is actively working on it.

What This Shows

Customer-Backed Automation

The problem is not “add AI.” It is the repeated first-pass investigation a CSM does before they can confidently route a customer issue.

The agent compresses that lookup into a reviewable handoff instead of hiding the decision.

Production-Oriented Shape

The repo includes the Lambda handler, Linear GraphQL client, Slack formatter, local fixture runner, FastAPI Linear mock, tests, and an AWS SAM template.

The demo path keeps the code reviewable without requiring real Pylon, Linear, or Slack accounts.

Implementation Notes

01

Tool use for Linear search. Claude can run multiple searches with different terms when the first query misses the real issue.

02

Forced structured output. The final result comes through a submit_triage tool, avoiding fragile parsing of free-form model text.

03

No invented tickets. Related issue IDs are joined back to the tool-call history before they appear in the final result.

04

Bounded cost and latency. The loop caps turns, caches the system prompt, and falls back to stdout when Slack is not configured locally.