Support Platform
Full-stack customer support infrastructure, designed as a graduate and still in production nine years later. Now powers AI agent workflows and is replacing the company's commercial helpdesk.
Customer support at scale is a routing, assignment, and escalation problem. The system I designed as a graduate in 2016 is still the only one the company uses. Nine years, 148 database migrations, and it’s now running AI agent workflows and replacing the commercial helpdesk. I’ve built and maintained the full stack: backend services, API layer, consumer infrastructure, Angular webapp, and the admin tooling around it.
What it covers
The platform handles the complete support lifecycle across 28+ configurable support types:
- Agent management: creation, availability tracking, away status, session assignment limits, preferred agent routing
- Session handling: auto-assignment (round-robin, capacity-based), escalation, resolution tracking with configurable reasons per support type, session notes and tagging
- Real-time chat: customer-facing and admin interfaces, with session history and agent sidebar
- Queue infrastructure: 5 RabbitMQ consumers handling notification delivery, away status, automated chat, blast messaging, and project-specific tagging
- Feedback: CSAT collection and tracking
- AI integration (2024–25): suggested messages, auto-replies, initial message generation, escalation handling, all built on top of the original session APIs without modification
Scale
~13K lines of backend PHP across 89 files, 90+ Angular components, 148 database migrations tracking the schema’s evolution since 2016. The API layer exposes ~33 endpoints covering agent operations, session management, chat, configuration, and the newer AI features.
Enterprise integrations across Deloitte (project compliance reviews), Arrow Technologies (concierge queue), HP, and Loadshift (freight marketplace) each involved bespoke agent types, custom access controls, and enterprise-specific session handling, all consuming the same session API surface without modification.
The platform is also now replacing DeskPro, the company’s third-party commercial helpdesk. Tier-1 live chat migration from DeskPro to the in-house queue completed in January 2025.
What I find interesting about it
The Thrift API I formalised in 2018 is the one the AI team used in 2024. They registered their bots as agents, used the same session lifecycle, and triggered human handoffs via the same reassignment call that already existed for routing between human agents. The session API is unchanged.
The platform is also replacing DeskPro. Tier-1 chat migrated off the commercial helpdesk in January 2025. Neither use was planned for. The design modelled what a support session actually is, not what it was being used for at the time.
Related writing
- Abstractions Outlive Authors: the session API designed in 2018 that the AI team used unchanged in 2024
- Dead Code That Wasn’t: a cleanup diff in the legacy JavaScript queue stack left one reference behind; because the poller is shared across all queues, every support agent’s queue stalled simultaneously
- AI Agents and the Missing Index: AI agents registered through the support session infrastructure were creating 6× more messaging threads than human users, exposing a database index that had never seen that load profile