Support tooling
Support Triage Assistant
Paste a support ticket and Claude will classify it — category, severity, a one-line summary, a suggested first response, and whether it needs engineering escalation.
Training Notes
What building this project taught me.
Split Server and Client Components at the data boundary
The page wrapper (page.tsx) stays a Server Component for metadata and layout. The form itself becomes a Client Component (TriageForm.tsx) because it needs useState and event handlers. Only the leaf that needs interactivity opts in to 'use client'.
API routes keep credentials server-side
The Next.js route at /api/triage proxies the request to FastAPI rather than calling the Claude API directly from the browser. This means the ANTHROPIC_API_KEY never reaches the client.
Streaming vs. single-shot responses are a product decision
For triage classification, a complete JSON object is easier to parse than a stream. Streaming makes more sense for long-form responses where showing partial output improves perceived speed.