Skip to content
Sadra Raadfar
All work
AI AutomationPortfolio project2026

Customer Support Classification Automation

Classify, prioritise and route inbound tickets with drafted replies and clean escalation.

  • Workflow orchestration
  • OpenAI API
  • Helpdesk API
  • PostgreSQL
01

Overview

An assistive triage layer: the system sorts and drafts, a human still owns the send. Confidence is treated as a first-class routing input.

02

The problem

Support requests arrive unsorted. Urgent issues sit behind routine questions, routing depends on who reads first, and repeated questions get rewritten from scratch every time.

03

Existing process

  1. 01All tickets land in one queue, ordered by arrival time.
  2. 02An agent reads each one to work out topic and urgency.
  3. 03Routing is manual and inconsistent across shifts.
  4. 04Common answers are rewritten instead of reused.
04

Proposed system

  • Normalise tickets from email and helpdesk into one schema.
  • Classify topic, urgency and sentiment in a single structured call.
  • Priority is computed from urgency, customer tier and SLA remaining — not from the model alone.
  • Retrieve related past resolutions to ground a suggested reply.
  • Route to a queue; low-confidence or high-risk tickets go to a senior review lane.
05 — Workflow

The system, node by node

  1. 01

    Ticket intake

    Email + helpdesk normalised into one record

  2. 02

    Preprocess

    Strip signatures and quoted history, detect language

  3. 03

    Classification

    Topic, urgency, sentiment as structured output

  4. 04

    Prioritisation

    Urgency × tier × SLA remaining → priority band

  5. 05

    Routing

    Queue assignment with a senior review lane

  6. 06

    Suggested reply

    Grounded draft attached, never auto-sent

  7. 07

    Escalation

    Churn-risk language or repeat contact flags a lead

  1. Ticket intake
  2. Preprocess
  3. Classification
  4. Prioritisation
  5. Routing
  6. Suggested reply
  7. Escalation
06

Business logic

Never auto-send
Drafts are attached to the ticket; an agent approves every outbound reply.
Priority formula
Model urgency is one input; contract tier and SLA remaining can override it.
Repeat contact
Third message on one issue escalates regardless of classified topic.
Confidence < 0.7
Sent to the senior lane with the classification shown as a suggestion only.
Billing and security topics
Always human-reviewed, no draft reuse.
07

Failure handling

Unknown or mixed topic
Labelled 'needs review' instead of forced into the nearest class.
Model or API outage
Falls back to keyword rules; tickets still route, flagged as degraded.
Duplicate thread
Merged on message-id and thread reference before classification runs.
PII in ticket body
Redaction pass before anything leaves the system boundary.
08

Demonstration

Simulation notice

This project is a portfolio simulation using a synthetic ticket set written to include edge cases — mixed-topic messages, angry repeat contacts, and malformed forwards. Accuracy figures are from that synthetic set and are not client results.

09

Design decisions

  • Confidence is a routing signal

    The most useful output was not the label, it was how sure the model was. That number decides whether a human sees it first.

  • Keep the human on the send

    Drafting saves most of the time; auto-sending adds most of the risk. The split was easy once framed that way.

  • Business rules outrank the model

    Contract tier and SLA are facts. The model contributes an opinion, and facts win when they disagree.

Next

Want a process mapped like this?

Contact Me