2025
Ticket System for charles
charles is a conversational AI platform that helps brands manage customer interactions through messaging apps.
The platform supports multiple types of interactions: structured flows set up by brands (for commerce and marketing), AI-automated conversations, and AI escalations when human intervention is needed. With AI now handling most conversations automatically, the support model changed. Agents went from handling every inquiry to only managing escalations.
The existing conversation list interface couldn't handle this complexity. Agents saw hundreds of conversations - flows, AI-handled, and escalations - all mixed together with no way to identify which actually needed their attention.
I redesigned the agent experience into a ticket management system that separates AI escalations from other conversation types.
Deliverables:
Information architecture redesign
High-fidelity designs for all screens and states
Updated UI components aligned with design system
Interactive prototypes for key workflows (resolve ticket, assign/unassign agent, filter by channels, resolve duplicates)
Ongoing design iterations based on CSM and engineering feedback
Roles:
Analyzed how AI escalation changed agent workflows and identified gaps in the existing interface
Conducted competitor research on ticket management systems
Designed the ticket system that separates AI escalations from automated conversations
Iterated on information hierarchy, status indicators, and assignment UI based on feedback from product manager and CSMs
Tested workflows with CSMs

When AI agent was introduced, the conversation model completely changed, but the interface didn't.
The old system used visual states based on response status:
Unanswered = yellow
Answered = white (moved to bottom)
Resolved = white (archived and hidden)
With AI handling most conversations and escalating edge cases, this model broke down. Agents needed to distinguish between escalations requiring urgent attention and automated conversations running in the background, but the interface can only differentiate response status.

I researched how other conversational AI platforms and ticket management systems structure their interfaces. The most effective products make both tickets and automated conversations visible simultaneously, with clear visual hierarchy that lets humans quickly scan what needs immediate action versus what requires casual monitoring.
I redesigned the conversation experience into an inbox that gives tickets prominence while keeping automated conversations accessible. The new structure splits what was previously "Conversations" into two views:
Tickets: AI escalations requiring action, with clear states (open, pending, resolved)
Conversations: All automated flows and AI interactions, monitorable but de-emphasized
A dedicated column structure makes it immediately clear what needs handling versus what's running in the background.

The interface is structured around a three-column layout: a filterable sidebar for ticket management, a scannable tile view for browsing, and a message feed where agents can reassign and resolve tickets.
Key information (assignment status, unread indicators, ticket state, and channel type) is visible at the tile level, allowing agents to quickly assess priority before opening each thread. The feed header allows quick actions and ticket ID for referencing.
Inline state markers and AI-generated summaries create anchor points throughout the message thread, giving agents full context at a glance.

The components would adapt based on context, showing different information depending on assignment status, channel type, urgency level, and ticket state.
This keeps the design flexible while maintaining visual consistency across all the variations.


The new inbox structure turns hundreds of mixed conversations into a manageable queue. Agents can now quickly identify escalations, understand context through AI summaries, and take action without digging through automated flows. The ticket system finally matches how agents actually work.
The design went through multiple iterations based on feedback from the customer support team and technical constraints around development capacity. Some features had to be delayed or adjusted to work for both AI-enabled and non-AI customers using the same interface.
We're still evolving and iterating as we slowly roll out the new design, and real usage is revealing things we'll need to adjust. But the core structural change, separating escalated tickets from the rest, was necessary. With AI handling most interactions now, agents needed a clear way to focus on what actually requires their attention. The old structure couldn't support that. The new one does.