Case Study · Customer Support

Sathi

A multi-tenant helpdesk platform built for a fast-growing SaaS company whose support team had outgrown a shared inbox and a spreadsheet.

Sathi landing page with an embedded ticket example showing an SLA breach badge, priority and status controls, and an internal note

The problem

Support requests were arriving over email, live chat, and phone, and landing in three different places that nobody had a combined view of. Agents worked from memory to figure out who was handling what, urgent issues sat next to routine ones with no way to tell them apart, and nothing enforced a response time: a customer on a paid plan could wait as long as one on a free trial, purely by chance of who happened to open their ticket first.

There was no record of internal back-and-forth on a ticket that didn't leak into the customer-facing thread, no way for customers to check status without emailing to ask, and no knowledge base to deflect the questions that came up every week. As the customer base grew, the team was scaling headcount to keep up with volume instead of scaling the process.

What was built

One shared workspace for the support team, with the routing and accountability built into the platform instead of left to whoever happened to be paying attention.

Shared inbox & load-balanced routing

Every ticket lands in one queue, filterable by status, priority, assignee, and tag. New tickets are assigned automatically to whichever agent currently has the fewest open items, so work stays spread evenly without a manager dispatching it by hand.

SLA engine & escalation

Response and resolution targets are set per priority level. Each ticket carries a live on-track / at-risk / breached badge, and a breach automatically escalates the ticket to admins, instead of surfacing only when a customer complains.

Internal notes vs public replies

Agents can leave amber-highlighted internal notes to loop in a colleague or leave context for the next shift, fully separated from the thread the customer actually sees.

Customer self-serve portal

Customers get their own portal to open tickets, follow status, and reply, without an inbox full of email chains and without calling in to ask "any update?"

Knowledge base

Searchable articles with helpfulness voting, published straight from the admin side. Every article links to "Open a ticket" for the cases self-service can't fully resolve.

Analytics dashboard

Volume trends, priority breakdown, per-agent performance, and SLA compliance in one view, so the team can see where load is building up before it becomes a backlog.

Getting SLAs right

The routing and the SLA engine had to work together, not sit side by side. A ticket's priority decides its response and resolution clock the moment it's created, and that clock has to keep running accurately through reassignment, internal discussion, and reopens. A breach can't quietly reset just because a ticket changed hands. Once a target is missed, escalation has to happen automatically and immediately, because by the time a customer chases a support team about slow response, the SLA has already failed at its one job.

The same load-balanced assignment that keeps agents' queues even also has to respect that logic: a new high-priority ticket still needs to reach a human who has room to act on it before its clock runs out, not just whoever is next in a round-robin.

Product tour

A calm workspace for agents, and a self-serve front door for customers.

Sathi shared inbox with ticket filters and SLA badges
Shared inbox with filters and live SLA badges
Sathi analytics dashboard showing ticket volume and SLA compliance
Analytics: volume, priority mix, and SLA compliance
Sathi public knowledge base with search and getting-started articles
Public knowledge base for customer self-serve

Under the hood

A modern, boring-on-purpose stack, chosen so the business logic gets the attention, not the tooling.

Next.js (App Router) TypeScript PostgreSQL Prisma Tailwind CSS JWT Auth

Need a support workflow that scales with your team, not against it?

If your team is growing faster than your inbox can keep up with, let's talk.