Skip to content

Bhanzu Customer Lifecycle Management Tool

An enterprise internal platform for support ticketing, IVR routing and SLA tracking


Role
Design Lead
Timeline
Mar - Dec 2022
Product
Web, internal tool
Scope
IVR-based routing, CLM ticket workspace, root and child tickets, status flows, batch and session tools, role-based dashboards, access states
Team
3 designers, 20 to 25 engineers, 2 product managers

Overview

I led the design of CLM (Customer Lifecycle Management), the in-house support platform that replaced Zendesk at Bhanzu. CLM gives every paying student one Customer Lifecycle Manager, recognises callers through the IVR, and routes each ticket to the right person before anyone answers. The platform handled around 500 to 600 tickets a day. Every paying student got one point of contact, and every ticket got a category, an owner and an SLA. The scope covered IVR-based routing, the ticket workspace, root and child tickets, status flows, batch and session tools, role-based dashboards and access states.

My contribution

  • Joined the early planning with the CTO and two product managers as the user research lead.
  • Ran discovery with every operations executive and the operations team lead: their processes, query types, communication channels and resolution times.
  • Led the project's sprints with a cross-functional team of designers, engineers, product managers, support operations and operations staff.
  • Led a team of three designers: assigned the work, set the direction and reviewed the output.
  • After group brainstorming, designed the wireframes, the structure and the core flows myself.
  • Designed the CLM ticket workspace end to end: the student and batch details, and the communication log on the right.
  • Decided what would be prototyped and how.

Context

Before CLM, Bhanzu handled support on Zendesk, where any agent could pick up any call. A student or parent who called back about the same issue usually reached a different person and had to explain it again. Until the issue was resolved, every call started from zero.

The business wanted to put its existing, paying students first, give them better service and bring refund requests down. The CTO and two product managers raised the change, and I joined those conversations as the user research lead. The decision was to give every paying student one Customer Lifecycle Manager (CLM) as their single point of contact, and to build a platform around that role.

Support handled around 500 to 600 tickets a day (approximate). A separate floor of around 20 to 25 operations agents handled them, and all of them were to move onto CLM.

Problems with the existing setup

  • No single owner. Repeat calls from the same student reached different agents.
  • Lost context. Customers explained their problem again on every call until it was resolved.
  • No structure. Tickets had no category, so nothing showed whether a query came from a new or an existing student.
  • No time limits. There was no SLA, and the team lead was not alerted when tickets stayed open.
  • Scattered tracking. Agents worked across Zendesk, personal notes and several Excel sheets.
  • No visibility for the team lead. He could not see which tickets were breaching or who was responsible.

Research

Research was the largest part of this project. Before designing anything, I spoke to every operations executive and to the operations team lead. I wanted to understand how each workflow ran in Zendesk, how the teams communicated with students and parents, and what moving all of it to a new platform would mean for them.

Calls with the operations executives

I ran one-to-one calls with each operations executive, then a separate session with the operations team lead. Each executive owned a different part of the student's journey, so together the calls covered every part of how a student was supported.

Who I spoke toTheir responsibility
Operations executiveBatch allocation
Operations executiveCreating new batches
Operations executiveOnboarding students onto the platform
Operations executiveRefunds
Operations team leadLeading the whole operations team

With each executive, I walked through their work step by step:

  1. How does a query reach you?
  2. How do you solve it in Zendesk, from start to finish?
  3. How do you keep the student or parent informed, and on which channels?
  4. How do you keep track of open queries?

Across all four functions, the picture was the same. Queries were handled in Zendesk alongside personal notes and several Excel sheets. Tickets had no category, there was no time limit for resolving a query, and nothing alerted the team lead when tickets stayed unresolved.

Video call with the operations executive who handled batch allocation, walking through their Zendesk process
Understanding batch allocation with the operations executive, step by step through their Zendesk process

Communication channels

I also mapped every channel a conversation ran through: email, WhatsApp and the direct call line. No single place showed a student's conversation across all three.

Session with the operations team lead

I then spoke with the operations team lead about the team as a whole. I asked:

  1. What challenges does the team face most often?
  2. Which queries come in most?
  3. Who usually resolves each type, and how?
  4. How long does each type take to resolve?

He told me he had little to no visibility. He needed to see how many tickets were breaching, have tickets escalate when they stayed open past a set time, and know which CLM was responsible so he could follow up with them.

The CLMs and agents needed two things urgently. First, to see the tickets assigned to them as soon as they logged in. Second, to see what was urgent: the SLA time left, and how many tickets were breached, pending, on track and due to close that day.

Market scan

To understand how similar platforms handle support, I reviewed Zendesk alternatives: Freshdesk from Freshworks, Intercom and Zoho Desk. I looked at how each one routes and assigns tickets, shows SLAs, and keeps conversations from different channels on the ticket.

PlatformWhat it is built aroundWhat I took from it
Freshdesk (Freshworks)Ticketing with SLA policies and automatic assignmentSLA timers belong on the ticket itself, not in a separate report
IntercomA messaging inbox that brings conversations into one threadThe conversation should sit beside the ticket, not in another tool
Zoho DeskTicketing with SLAs and escalation for support teamsTeam leads need breaches surfaced for them, not hunted for

All three are built for general support teams. None of them came with Bhanzu's own student data, such as course, batch and refund eligibility. CLM needed that data on every ticket, so it had to be built around Bhanzu's own systems.

From Zendesk to CLM

For every workflow, I mapped how it ran in Zendesk and what it would need to become on the new platform. This mapping became the brief for the design.

Today, in ZendeskWhat CLM needed to do
Any agent picked up any callRoute each existing student to their own CLM
Tickets had no category; new and existing students were mixedRecognise the caller and categorise the ticket when it is created
No time limits and no escalationPut an SLA on every ticket and make breaches visible
Work tracked across Zendesk, notes and Excel sheetsHold the student record and the conversation on one ticket page
Conversations spread across email, WhatsApp and callsBring the conversation into the ticket
CLMs could not see their own work or what was urgentShow assigned tickets and SLA status first on the dashboard
The team lead had little visibilityGive the team lead a view of the team's tickets and load
Many queries needed another team to resolveLet the CLM pass work to other teams without losing ownership

The problem

The work split into two problems: getting each call to the right owner, and giving that owner what they needed to resolve it.

The routing problem

The system had to identify the caller and decide where the ticket goes before an agent picked up. An existing, paying student should reach their own CLM. A new or unrecognised caller should go to the support or inquiry team. Zendesk could not make that decision because it did not hold Bhanzu's customer data.

This meant designing the routing decision itself, not only the screens before and after it. The ticket had to carry its source, category and SLA from the moment it was created.

The design problem

Once a ticket reached a CLM, they needed the whole customer, not a support form. That meant the student's personal details, parents, siblings, course, batch, sessions, refund eligibility, support history, parent-teacher meetings and assessments. All of it had to be workable on one screen, within a two-hour SLA.

Shown all at once, that data is unusable. The challenge was deciding what an agent sees first, what they open on demand, and what stays in the background.

A CLM also could not resolve everything alone. Refunds, batch changes and onboarding sat with other teams. The CLM needed a way to hand that work over without losing ownership of the student.

Problem statement

Design a support platform that gives every paying student one point of contact. It had to identify the caller, route each ticket to the right owner, and give that owner enough context to resolve it within the SLA, pulling in other teams when needed. It also had to give team leaders and leadership visibility over load and performance.

The business goals behind it were better service for existing students and fewer refund requests.

How I led the project

I ran the project in sprints and led a cross-functional team of designers, engineers, product managers, support operations and operations staff.

Sprint 1, with designers, engineers, product managers and operations staff in the room
Sprint 1, with designers, engineers, product managers and operations staff in the room

The work ran in sprints over nine months. Discovery came first: I planned and ran the calls with every operations executive and the operations team lead, and mapped their processes, channels and pain points. In Sprint 1, I designed the wireframes, the structure and the core flows myself, including routing and the ticket workspace.

The next phase covered the role-based dashboards, the SLA cards and the status flows, where I designed the SLA cards and the filtering. The last phase was the engineering build. I agreed the version 1 scope with the product managers and engineers, and moved the ticket journey to its own page.

Sprint 1
Sprint 1
Sprint 3
Sprint 3

How the work was split

The team brainstormed together, then I designed the wireframes, the structure and the core flows myself. That includes the CLM ticket workspace, where the ticket lands after routing. I assigned work across the three designers and decided what would be prototyped and how. The designers built the prototypes.

Operations in the sprints

I brought the operations executives and the team lead into the sprints. The people who would use CLM every day reviewed the work and gave feedback as it was built, rather than seeing it for the first time at launch.

Aligning product and engineering

With 20 to 25 engineers and two product managers on the project, scope had to be agreed, not handed over. The clearest example was the ticket journey. I proposed showing it in expandable rows on the dashboard. The product managers and engineers pushed back on the complexity for version 1, and we agreed to give it its own ticket details page and plan the expandable rows for version 2 (decision 8).

Constraints

The design had to work within the support operation, the data that existed, and what engineering could build in the first release.

ConstraintTypeWhat it meant for the design
The version 1 front end had to stay simpleEngineeringThe ticket journey moved from expandable dashboard rows to its own ticket details page; expandable rows went to version 2
Two-hour SLA on every ticketBusinessTime left had to be visible on the ticket and the dashboard, and the next action had to be obvious
Caller recognition depended on the IVREngineeringThe routing decision is made when the ticket is created
Student data spanned personal details, course, batch, session, refund, PTM and assessmentDataCollapsible sections on the ticket page
Different roles could see different dataEngineeringAccess rules per role, and a designed state for blocked access
No design system at the timeDesignThe screens were built on a purchased UI component library, so designers and engineers worked from one shared set of components

System view

CLM is not a set of screens for one user. It connects a caller, a routing system, a new role, several operations teams and their leads. I designed it as one ticket model that every role works from, with access rules deciding what each role can see and do. That kept every role looking at the same ticket, instead of separate tools drifting out of sync.

System view: every role works from the same tickets
System view: every role works from the same tickets

Core flows

The CLM's core user flow is the ticket journey. From the moment a ticket is assigned to the moment it closes, every step happens on the ticket page.

User flow: a CLM's ticket, from assignment to close
User flow: a CLM's ticket, from assignment to close

Entry points

The IVR call is the main entry point. Other teams receive work as child tickets created by a CLM.

Ticket lifecycle

StatusMeaning
OpenNew ticket, not yet worked on
PendingBeing worked on, waiting for the next step
Follow upThe CLM needs to get back to the customer
PausedPaused until a resume date the CLM sets
ClosedClosed through the Close Ticket tab, with a disposition and a closing comment

Explorations and design decisions

Eight decisions shaped the platform.

1. Build everything around the ticket

I first explored a standard dashboard layout with a fixed left navigation, where CLMs would switch between tabs for the CLM dashboard, student data and other sections. I rejected it after looking at what a CLM does day to day. Everything a CLM works on is a ticket: the call and its duration, who it is with, what the query is, the earlier conversation and the communication log. A CLM only needs student data when a ticket is about it, so a separate tab for it would rarely be opened.

So I made the ticket the centre of the platform. Each ticket ID opens a page that holds everything about it: the root and child tickets, the conversation before and after, the logs and the student's details. A CLM goes from picking up a live ticket to closing it without leaving that page.

Navigation explored and chosen: the CLM's work lives inside the ticket, not across tabs
Navigation explored and chosen: the CLM's work lives inside the ticket, not across tabs

2. Show the essentials first, keep the rest one click away

I split the customer record into three levels by how often an agent needed it on a call.

LevelWhat sits thereWhy
Visible on openTicket ID, lead ID, primary contact, SLA, source, short descriptionNeeded on every call
One click awayStudent Personal Info, Course, Sibling, Batch, Session, Refund, Support Ticket History, PTM, Assessment, as collapsible sectionsNeeded on some calls, depending on the issue
On demandCall recordings, full message threads, activity logNeeded to investigate, not to answer

3. Keep all communication beside the ticket

I placed a communication rail next to the ticket with three views: Ticket Comms, Activity Log and Ticket Timeline. Ticket Comms holds the WhatsApp thread, messages and call recordings with playback, so an agent never leaves the ticket to check what was said.

4. Link every ticket to its history

Ticket Timeline shows the root ticket and every child ticket under it, with the team each one went to. A CLM handling a repeat issue sees its full history in one place, instead of starting from zero.

5. Make status changes deliberate

A ticket moves through Open, Pending, Follow up and Paused, and is closed separately with a disposition and a closing comment. I designed each status change as its own flow rather than a label switch. Pausing, for example, asks for a resume date and a description.

6. One data model, a view per role

CLMs, team leaders, other teams and leadership work from the same data but need different screens. I designed role-based views over one shared model instead of separate tools, with access rules defining what each role sees. I also designed the blocked-access state (403) for when a user reaches for something outside their role.

7. SLA cards at the top of the dashboard

Discovery gave me two clear needs. CLMs had to see the tickets assigned to them as soon as they logged in, and they had to see what was urgent. That meant the SLA time left, and how many tickets were breached, pending, on track and due to close that day.

My first version used small filter icons in every column header of the ticket table. I replaced them with four SLA cards at the top of the dashboard: Breached, Due in 2 hrs, Due in 24 hrs and Delayed by 72 hrs. Each card shows a count, breached tickets show in red, and clicking a card filters the table to those tickets. Urgent work became visible at a glance and one click away, instead of sitting behind small icons.

8. The ticket journey on the home dashboard (moved to version 2)

I proposed expandable rows on the CLM home dashboard. Expanding a row would show the ticket's full journey: when it opened and closed, who it was assigned to along the way, its child tickets, and the teams they went to. A CLM could track every ticket without opening it.

The product managers felt it added complexity, and engineering pushed back because it made the version 1 front end harder to build. We agreed to move it to version 2. For version 1, the ticket journey moved to its own page. Clicking a ticket ID opens the ticket details page, with the ticket details, student details, ticket comms, ticket timeline and the assignee's details in one place.

Information architecture

The final structure gives each role its own home, and every CLM ticket opens into one ticket details page. It follows from decision 1: the CLM's work lives inside the ticket, not across tabs.

CLM information architecture, the full sitemap across roles
CLM information architecture, the full sitemap across roles

Final design

The shipped platform follows the CLM's day: the dashboard, the ticket details page, the status flows, and the batch and session tools that sit inside the ticket.

The CLM dashboard

The dashboard opens on the CLM's own tickets. Four SLA cards sit at the top: Breached, Due in 2 hrs, Due in 24 hrs and Delayed by 72 hrs. Breached shows in red, and clicking a card filters the table. Tabs split the work into My Tickets, Other Teams Tickets, Closed and Paused, and root and child tickets sit in the same list.

Annotated CLM dashboard with ticket tabs, SLA cards and root and child tickets in one table
The CLM dashboard, annotated

The ticket details page

Clicking a ticket ID opens the ticket details page. I designed this page myself, from wireframe to final layout. The header carries the essentials, the action tabs sit above the student record, and the conversation sits on the right.

Annotated ticket details page with header, action tabs, collapsible sections and the communication rail
Anatomy of the ticket details page

Behind the collapsed sections is the full record a CLM might need on a call: refunds, support history, parent-teacher meetings and assessments, each opened only when the query is about it.

Four expanded sections of the student record: refund details, support ticket history, PTM details and assessment details
Four of the nine sections, expanded

Status flows and ticket history

A ticket moves between Open, Pending, Follow up and Paused. Each change is its own small flow: pausing a ticket asks for a resume date and a description, so a paused ticket always has a date to come back to. Closing is separate, through the Close Ticket tab, with a disposition and a closing comment. Every change is recorded in the activity log, and the ticket timeline shows the root ticket and its child tickets.

Change Status set to Paused, with a resume date and a follow-up interval in days, weeks or months
Pausing a ticket asks for a resume date
Activity log showing a status change from Pending to Open
Activity log
Ticket timeline showing a root ticket card
Ticket timeline

Batches and sessions inside the ticket

Batch allocation was one of the functions that sat with its own operations executive, worked across Zendesk and Excel. On CLM, a student's batch is allocated or reallocated from the Batch Details section, and catch-up sessions are created against the trainer's calendar from Session Details, without leaving the ticket.

Annotated Allocate Batch view with batches grouped by time slot, strength and capacity, and batch history
Allocating a batch from the ticket, annotated
Batch Allocated Successfully confirmation telling the CLM how many catch-up sessions to schedule
Allocation leads straight into catch-up sessions

Allocation does not end at the batch. When a student joins a batch that is already running, the confirmation tells the CLM how many catch-up sessions the student needs and leads straight into scheduling them.

Batch details with a Reallocate Batch action and current and previous batches
Batch details and reallocation
Create a Session form with the trainer's calendar for the chosen date
Creating a session against the trainer's calendar

Role-based dashboards

RoleWhat they seeWhat they can do
CLMTheir assigned tickets, SLA cards, and tickets assigned to other teamsWork tickets, change status, close tickets, create new tickets
Team leaderTheir team's tickets and loadAdd and edit the CLMs in their team
Other teamsChild tickets assigned to their teamWork and resolve those child tickets
LeadershipOverview across all teamsMonitor load and SLA status across teams

Each role sees only what it needs. When a user opens a page outside their role, they see a designed blocked-access state instead of a dead end.

Testing with operations

Testing ran inside the sprints. The operations executives and the team lead reviewed the designs and the prototypes as they were built, and their feedback went into the next round. I decided which flows to prototype and how, and the designers on my team built the prototypes.

What changed across the sprints

BeforeAfterWhy
A dashboard with a fixed left navigation and separate tabsEverything inside the ticket details pageA CLM's whole day is tickets, and they rarely needed to switch tabs
Small filter icons in every column headerClickable SLA cards at the top of the dashboardUrgent work had to be visible at a glance
The ticket journey in expandable dashboard rowsThe ticket journey on its own ticket details pageThe version 1 front end had to stay simple

Outcome

CLM changed how Bhanzu's support worked, from who answers a call to how a team lead sees what is breaching.

AreaBefore, on ZendeskAfter, on CLM
OwnershipAny agent picked up any callEvery paying student has one CLM
RoutingAgents identified callers by handThe IVR recognises the caller and routes the ticket
Ticket structureNo category on ticketsEvery ticket is categorised when it is created
Time limitsNo SLAA two-hour SLA, with breaching tickets in red
Customer recordZendesk, notes and Excel sheetsOne ticket page with the student record and the conversation
Work across teamsNo structure for handoffsChild tickets assigned to the team that can resolve them
Team lead visibilityLittle to noneA view of the team's tickets and load
Operations agentsAround 20 to 25Fewer agents needed

What success looked like

The goals behind CLM were one point of contact for every paying student, a two-hour SLA on every ticket, and fewer refund requests from existing students. The platform delivered the first two by design. I do not have refund figures from after launch, which is why measurement is the first point in my reflection.

Reflection

  • Measure from day one. I do not have measured results from after launch. If I ran this again, I would agree baseline measures with the product managers at the start, such as repeat calls, refund requests and SLA adherence, so the impact could be shown in numbers.
  • Bring engineering in before the detail. My expandable-rows proposal moved to version 2 because of front-end complexity. Today I would test feasibility with engineering at the concept stage, before a design is fully detailed.