Example

Work / Support tooling

An assistant that cites its source

A retrieval assistant for a support desk, grounded strictly in the team's own documentation — and built to say when it does not know.

Role
Product engineering, retrieval and evaluation
Year
2026
Scope
Discovery, build, handover
Stack
TypeScript · Python · PostgreSQL · pgvector

An illustrative example. No client is named here until we have their written consent.

Case facts

At a glance

Client
Support desk
Sector
Support tooling
Team shape
A small joint team, one owner on each side
Engagement
Fixed scope, then a review period

Case study

What we built, and what we refused to build

The problem as the support team described it, the approach we took, and what changed in their week.

Challenge

The desk answered the same questions every week, and the answers lived in three places: a product manual, a folder of release notes, and the memory of two long-serving agents. Nothing was wrong with the documentation — it was thorough. It simply could not be searched the way a person under time pressure needs to search it, so new agents escalated work that the manual already covered.

The team had tried a general chatbot before. It answered fluently and occasionally invented a setting that did not exist, which cost more trust than the time it saved.

Approach

Only the documentation the team already maintains is indexed; an answer is assembled from retrieved passages and returned with a link to the paragraph behind it, so an agent can read the source before anything reaches a customer. Where the retrieved passages do not support an answer, the assistant says so and hands the conversation back rather than filling the gap.

Retrieval is the part we spent the time on: how the manual is split, how release notes are dated so an outdated passage loses to a current one, and how a question about a version resolves to that version's page.

How we judged it

Before launch the support leads wrote a set of real questions with the answers they expected, including the ones the assistant should decline. Every change to retrieval or prompting was run against that set and read by a person rather than scored by another model. It is a review habit, not a benchmark, and we publish no figures for it here — this is an illustrative example, and a number without its test set means nothing.

The assistant has no access to customer records and cannot act on an account. It reads documentation and returns text with citations. Questions outside the indexed material are declined, not guessed at, and every declined answer is logged so the team can see what the manual is missing.

Outcome

Agents keep it open beside the ticket queue and treat it as a fast way into the manual rather than a replacement for it. Because every answer is traceable, a disagreement now ends with the documentation being corrected — which was the loop the team actually wanted. The declined-question log turned out to be the more useful artefact: it is the first honest list of what the manual does not yet say.

Interface

The answer, and the paragraph behind it

The problem

The answers existed. Finding them did not.

Support knowledge had grown the way support knowledge does: correct, detailed, and impossible to reach in the seconds an agent has before a customer notices the pause.

We started by reading tickets rather than the manual. The questions that cost the team most were not the hard ones — they were the ordinary ones whose answer sat two clicks deeper than anyone had time to click.

  • One question, three sources, no single owner.
  • Release notes that quietly overruled the manual.
  • A previous chatbot that answered even when it should not have.
Where an answer lived, before.

The build

Retrieval first, generation second

Most of the engineering went into the boring half: splitting the manual into passages that stand on their own, dating release notes so a current page beats a stale one, and routing a version-specific question to that version's page.

The model's job is deliberately small — assemble a readable answer from passages it was handed, keep the citation attached, and stop when the passages run out. Prompting is the last thing we tune, not the first.

  • Indexed from the team's own documentation, nothing else.
  • Every answer carries a link to the paragraph behind it.
  • Out-of-scope questions are declined and logged, not guessed.
Retrieval, citation, refusal.

In their words

What convinced the team was the citation under every answer. Nobody had to take the assistant's word for anything.
Vladimir NikolićExampleSupport operations managerSupport desk

An illustrative quote. Nobody real is quoted or attributed here.

Details

Three screens the team lives in

This case study is an illustrative example. The client, the quote and every image are placeholders; no real engagement is described here and no figures are claimed.See the rest of our work

Next step

Sitting on a manual nobody can search?

Tell us what your team gets asked every week and where the answers currently live. We will say plainly whether retrieval is the right tool for it, and what we would test first.