Work I’ve done

Enquiries · Cloud services support team, at Accenture

Support tickets sorted, routed and answered faster

A support system that works out the likely cause of each ticket, routes it, and suggests a reply from the knowledge base.

  • Less manual triage for the support agents
  • Faster first replies
One ticket, from arrival to reply

The problem

Tickets arrived by email, chat and web form and were triaged by hand. An agent had to read each one, work out the likely cause, decide where it should go, and write a reply.

The process

An example ticket

The system sorts the ticket and drafts the reply. The agent decides what is sent.

1 · Ticket arrives

A customer writes in

Web form · Ticket 4127

Nightly backup is failing

Received 09:14

Customer message

Since last night our backup job stops with “access denied” when it writes to our storage bucket. We haven’t changed anything on our side. Can you help?

2 · Cause found, ticket routed

Worked out from the customer’s message

Likely cause

The access key the backup job uses has expired.

Routed to

  • Billing
  • Access and permissions
  • Networking

3 · Reply suggested

Drawn from the knowledge base, for the agent to check

Suggested reply

Thanks for the details. The access key your backup job uses has expired. Create a new key, update it in the job’s settings, and run the backup again.

From the knowledge base

Article: “Replacing an expired access key”

Agent reviews and sends

One ticket, from message to sent reply · Illustration, not a real ticket

What I built

I developed and extended an existing support system. I built the backend of the support team’s resolution tool: the APIs that work out the likely cause of a ticket, route it, and suggest a reply from the knowledge base. A frontend engineer built the app the agents use. I also built the customer-facing chatbot and the scheduled pipeline that loads the knowledge base.

How it works

The backend runs as APIs on Cloud Run, called from HubSpot Service Hub through a webhook and a workflow custom action. Reply suggestions come from a retrieval pipeline over the knowledge base, using pgvector on a private Cloud SQL for PostgreSQL instance. Cloud Run Jobs load the knowledge base on a schedule. Google Cloud DLP removes personal data twice: during loading, and before anything is sent to Gemini.

Built with

  • Python
  • Cloud Run
  • Cloud Run Jobs
  • Cloud SQL
  • pgvector
  • Gemini
  • Cloud DLP
  • HubSpot Service Hub

Outcome

Less manual triage and faster first replies for the support agents.

What this means for a small team

The same pattern fits a shared inbox. Each enquiry is sorted, a reply is drafted from your own past answers and FAQs, and a person checks it before it is sent. If client data can’t go to an AI as it is, personal details are stripped out first.

See what you could automate

Enter your website and get three workflows worth automating, with estimated hours saved.

Next case studyCatching faulty chips and cutting test time