Loading.
Back to work
CASE 03 INTERNAL TOOLS FULL-STACK

SupportDesk —
CS ticketing system

A support operation three audiences can trust: customers get faster, cleaner resolutions, agents get one tool instead of five, and leadership gets the analytics — SLA, CSAT, reason-code trends — without asking anyone to fill a sheet.

Role Solo build
Stack FastAPI · React · DuckDB
Replaces Gmail + 2 Apps Script tools
Status Production

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.

SPILLAGE REPORT
Agent opens modal
STEP 1
Cancel order
STEP 2
Reship products
STEP 3
Partial refund
STEP 4
Gift card issued
RESOLVED
1 modal · logged
0 Tickets processed
0 Cancellations handled
4-in-1 Action workflow

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.
GMAIL WORKER
Auto-ingest as tickets
TICKET MANAGEMENT
Queue · assign · SLA
COMBINED ACTION
4-step single modal
GIFT CARD MODULE
ccgc · auto-generated codes
CSAT ENGINE
JWT · Google Sheets sync
SUPERVISOR VIEW
WFM · agent monitoring

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.

FastAPI React Vite PostgreSQL DuckDB Shopify Admin API Google OAuth AWS EC2 pm2 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.

Next case · 01 COD + NDR Pipeline