Customer service was running on a shared inbox.
Seven agents, hundreds of tickets a day, all funneling through Gmail. SLA tracking happened in a spreadsheet. Refunds, cancellations, reships and gift cards each required a separate form, a different sheet, and at least one approval message. Repetitive single-action flows ate hours every week.
An earlier Apps Script-based CRM had moved things forward, but it was hitting walls: poor concurrency, no real database, painful to iterate on.
One modal, four actions, zero context-switching.
The biggest win wasn't the database or the UI — it was a single workflow change. When a customer reports a spillage, the agent typically needs to cancel the bad order, reship the products, issue a partial refund, and credit a gift card. Four separate flows, four separate forms, four chances to forget a step.
SupportDesk has one Combined Action modal that does all four in a single multi-step flow. Shopify payment mode auto-fetched. Reason codes preserved for reporting. CSV export for finance reconciliation built in.
Everything CS does, in one tool.
- Ticket management — queue views, agent assignment, status flows, live polling. Gmail worker auto-ingests customer emails as tickets.
- Combined Action — cancellation + reship + refund + gift card in one multi-step flow.
- Gift Card module — unique alphanumeric code generator (ccgc prefix), full issuance log, analytics.
- CSAT engine — agents trigger surveys per ticket; short/long-lived Meta token exchange; rep details auto-captured in Google Sheets via JWT.
- Supervisor views — WFM scheduling, agent login/logout, break monitoring.
- Quick actions analytics — week-on-week trends, reason-code breakdowns, CSV export.
FastAPI + React, DuckDB for analytics.
Python/FastAPI backend — 82 endpoints over 19 Postgres tables — with a React (Vite) frontend. PostgreSQL holds transactional data, DuckDB handles analytics-heavy queries. Google OAuth via Workspace SSO. Shopify Admin API for live order data. Deployed on AWS Tokyo behind Caddy.
Customers feel it. Agents live in it. Leadership sees it.
For the customer, a spillage complaint that used to bounce between four forms and an approval thread now resolves in one sitting — cancel, reship, refund, gift card, done. For the team, 2,816 tickets and counting have moved through the system, with 394 cancellations, 57 reships and 43 refunds executed through combined-action flows instead of separate forms. For leadership, SLA compliance, CSAT scores, reason-code trends and agent workload are dashboards, not month-end spreadsheet requests.
Iterated from a Gmail workflow → Apps Script CRM → custom FastAPI app over about a year. Each iteration kept the team running while the next one was being built.