AI Customer Support Dashboard
Aria Support — a full-stack dashboard concept for an AI-assisted customer support product: live KPIs, an inbox with AI-drafted replies and confidence scoring, agent performance, and automation rules.
The problem
Support teams leaning on AI agents need one place to see whether the AI is actually pulling its weight — how much volume it's resolving on its own, where it's escalating, and what individual conversations look like. I wanted to design and build that dashboard end to end: a real Angular front end talking to a real Scala/PostgreSQL API, not a static mockup.
What I built
- Overview — live KPI tiles (conversations today, average resolution time, CSAT, AI autonomy rate), a 7-day conversation-volume chart split by channel, and a resolution-split donut (resolved by AI / AI + human / human only / escalated).
- Conversations — an inbox with per-conversation message threads, sentiment and status tags, and an AI-suggested-reply panel with a confidence score you can use or edit.
- Analytics — tickets by category, a response-time distribution, a 6-week CSAT trend, and channel mix.
- Agents, automation rules and settings — agent performance (AI and human), toggleable automation rules, and account settings, each backed by a real API endpoint.
Technology
Frontend
Backend
Database
Key technical decisions
- Two independently deployed services. The Angular app is static-hosted on GitHub Pages; the Play/Scala API and its PostgreSQL database run on Render. They talk over a plain REST/JSON API — closer to how a real product would ship than one bundled app.
- A written API contract, first. Every endpoint and its exact response shape is documented up front, so the frontend and backend could be built against a fixed contract instead of guessing at each other's data.
- Anorm over a heavier ORM. Backend queries are plain SQL via Anorm, kept close to the schema defined in Play's evolutions rather than abstracted behind an ORM.
Architecture
About the "AI" in this dashboard
The AI-suggested replies, confidence scores, and resolution/CSAT metrics shown are realistic seeded demo data, not a live model integration — that's documented in the project's own API contract. The point of this build was the full-stack architecture: a real Angular app talking to a real Scala/PostgreSQL API, deployed as two independent services, built around what an AI-assisted support product's data would actually look like.