AI engineering

Retrieval-grounded support assistant

A support assistant answering from the organisation's own documentation, with citations on every answer and a clean handover when confidence was low.

Claude APIPythonFastAPIpgvectorPostgreSQLReact

The problem

Describe the support load before: ticket volume, repetitive questions, response times.

Approach

  • Structure-aware chunking so answers cited whole sections rather than sentences severed mid-thought.
  • Hybrid retrieval, keyword and vector combined, because pure vector search performed poorly on exact product codes.
  • An evaluation set built from real historical tickets, scored automatically, so every prompt change could be shown to help rather than assumed to.
  • Automatic escalation on low retrieval confidence, on repeat failure, and on any topic flagged as sensitive, with the transcript passed to the agent.
  • Per-user rate limits and a hard daily spend cap enforced in code.

More work

Backend & infrastructure

Multi-tenant Laravel platform

A Laravel application serving multiple client organisations from one codebase, with per-tenant data isolation and queued background processing.

LaravelMySQLRedisHorizon +2
Server engineering

cPanel hosting fleet migration

Moving a set of cPanel accounts onto new infrastructure, websites, databases, mailboxes and DNS, with the cutover planned so downtime stayed in minutes.

WHMcPanelIMAPSyncrsync +2
Performance engineering

E-commerce performance rescue

A WooCommerce store where the caching plugin had been maxed out and the site was still slow, diagnosed to the actual bottleneck rather than the assumed one.

WooCommerceMySQLRedis object cacheCloudflare +1

Something like this on your plate?

Describe the situation and I will tell you how I would approach it.

Start a conversation