Skip to content
SaaS · North America

Cut support load by 62% without adding a single agent

A support team of nine was drowning in 4,200 tickets a month, two thirds of which were answered somewhere in the documentation. We built a grounded assistant that resolves them and escalates cleanly when it should not.

Client
Series B B2B SaaS platform
Duration
6 weeks
Team
2 engineers, 1 architect
Delivered
2025

Measured impact

62%
Tickets deflected
fully resolved without an agent
90s
Median first response
down from 4 hours
4.6/5
CSAT on AI-handled
above the 4.4 human baseline
$310k
Annualised saving
against planned hiring
01 / Challenge

What was actually wrong

Support headcount was scaling linearly with revenue, and the board had asked why. An off-the-shelf chatbot had already been trialled and pulled after two weeks: it invented pricing tiers, contradicted the docs, and gave customers no way to reach a human without starting over.

  • 4,200 monthly tickets, 68% answerable from existing documentation
  • First response time averaging 4 hours, 11 hours at weekends
  • Previous vendor bot rolled back after inventing product capabilities
  • No structured data on what customers were actually asking
02 / Engineering

What we built and why

We treated it as a retrieval problem before an AI problem. The model was the last component we chose, not the first.

Stack
Next.jsTypeScriptpgvectorPostgreSQLLangGraphVercelOpenTelemetry
01

Built the answer key before the system

We sampled 400 historical tickets and had the support leads write the correct answer for each. That set became the pass/fail gate for every subsequent change, and it caught three regressions before release.

02

Hybrid retrieval over a unified corpus

Documentation, changelogs, resolved tickets, and internal runbooks were ingested into a single index with dense and keyword retrieval plus a reranking pass. Recall on the evaluation set moved from 71% to 96%.

03

Refusal as a first-class outcome

Below a confidence threshold the assistant stops, summarises what it understood, and opens a ticket with the full transcript attached. Agents receive context instead of a cold restart.

04

Actions, not just answers

Typed tools let the assistant check subscription status, resend invoices, and reset integrations directly — each behind an allowlist with argument validation and an audit record.

The difference was that they refused to ship until the evaluation numbers were good. We had been sold demos before. This was the first time anyone showed us a scoreboard.
VP of Customer Experience · Series B B2B SaaS platform

Let us look at your architecture.

Two ways to start, both of them short. Bring the problem, not a specification — the first useful thing we do is tell you what we would build and roughly what it costs.

Book an architecture call

Fifteen minutes, no deck. We map your problem to an approach and tell you what a realistic scope and budget look like.

  • A specific technical recommendation
  • A budget band you can plan against
  • An honest answer if we are the wrong fit

Send a written brief

Prefer to write it down? Email us the shape of the problem and we will reply with a first take, usually under 12 hours.

  • Goes straight to an engineer, not a sales inbox
  • We reply with an approach, not a brochure
  • Attach anything: repos, docs, screenshots