About this project

A working reference implementation of AI customer support.

SupportLoop is a portfolio piece by Aidan Crosbie. I ran customer self-service at Zoom while it scaled from 10 million to 300 million users, sustaining 90%+ deflection across that curve, so I know what an operator needs from a support AI. This exists to prove the other half: that the entire lifecycle, from self-service through agent assist and knowledge generation to the analytics that prove it moved a metric, can be designed and built as one cohesive system.

Most engineers build the bot. Few also build the operator's analytics that prove the bot moved a business metric. This builds both.

What's real

The application is real and running: a Postgres + pgvector knowledge base, retrieval with a grounding guardrail, streaming Claude completions, multi-tenant data isolation, real auth, and a full case-management workspace. You can sign up and get your own private workspace.

What's fictional

The seeded demo is configured for an invented customer called Orbit (a nod to video-collaboration tools). The tickets, articles, metrics, and people are all fabricated. No real customers, no real data, no real revenue.

How I'd take it to production

The gap between a demo and an enterprise support-AI system is mostly the unglamorous parts. Here's where I'd invest — informed by running self-service at scale.

Real eval harness

The demo ships a starter one (grounded-rate over golden questions). In production: graded sets per intent, regression gates on every prompt/model change.

No hallucinated policy

Answers are grounded only in retrieved KB. Below the similarity threshold the system escalates rather than inventing a refund or security policy.

Measurement that matters

Deflection, automation rate, CSAT, and KB-from-tickets are first-class — the point is moving a business metric, not shipping a bot.

Feedback loops

Resolved tickets and community gaps become new knowledge, which improves future deflection. The flywheel, closed.

PII & safety

In production: redaction before the model sees a message, scoped retention, audit logging. Out of scope for this demo's fictional data.

Multi-tenant from the core

Every workspace's knowledge, tickets, metrics, and retrieval are isolated by org_id. A real sign-up gets its own private workspace.

Built with

Next.js 14 (App Router)TypeScriptSupabase Postgres + pgvectorAnthropic ClaudeVoyage embeddingsTailwind CSSVercel
Explore the live demo Create your own workspaceRead the sourceWriting

Built by Aidan Crosbie.