Example project · RAG · Customer support
A support copilot for a B2B SaaS: drafts agents actually use.
“Fieldbook” (a fictional company) sells scheduling software to field-service businesses. Its 35 support agents spend much of each ticket searching the help centre and old tickets for the right answer. Here is how we would take a support copilot from idea to daily use — including the parts that usually go wrong.
By Nythrex EngineeringUpdated 2 min read
Illustrative scenario. This is an illustrative scenario that shows how Nythrex approaches this type of project. It is not a specific client case study: names, figures and timelines are examples.
Starting point
35
support agents in two time zones
~1,800
help-centre articles, some outdated
3 years
of resolved tickets in Zendesk
4
product lines with different terminology
Example figures for an illustrative scenario.
Previous attempt: a generic chatbot plugin trained on the help centre. It answered confidently, cited nothing, and agents stopped using it within weeks because they couldn’t tell good answers from bad ones. That history shaped the brief: drafts with sources, for agents, not for customers.
Discovery: two weeks
- 1
Shadowing agents
Watching real tickets showed that the answer often existed in a resolved ticket, not in the help centre — especially for edge cases and integrations.
- 2
Test set
Senior agents picked 150 recent tickets across product lines and wrote what a good reply must contain. Ten were deliberately unanswerable from existing content.
- 3
Data review
Resolved tickets contained customer names, phone numbers and occasionally credentials pasted by customers — a PII-scrubbing step was needed before indexing.
- 4
Success criteria
Agreed up front: most drafts usable with light edits, correct citation, answer in under 10 seconds, and an honest “no confident answer” on unanswerable tickets.
Proof of concept: four weeks
The first version searched only help articles and did poorly on integration questions. Adding cleaned resolved tickets as a second source — ranked below official articles — changed the picture more than any prompt change. Hybrid search mattered because customers quote exact error codes and plan names that pure vector search misses.
Help articles only, vector search
+ hybrid keyword search
+ resolved tickets as a source
+ reranker & prompt revisions
Illustrative example: share of test-set drafts rated “usable with light edits” by senior agents at each PoC iteration.
Architecture
Agent interface
- Zendesk sidebar app
- Insert draft
- Open sources
- 👍 / 👎 + reason
Copilot service
- Ticket summarisation
- Query rewriting
- Hybrid retrieval
- Reranking
- Draft with citations
Guardrails
- No auto-send
- PII redaction
- Confidence threshold
- Tone & policy checks
Ingestion
- Help centre sync
- Resolved tickets (scrubbed)
- Release notes
- Nightly re-index
Client’s Azure tenant (EU)
- Azure OpenAI
- Azure AI Search
- App Service
- Key Vault
- Log Analytics
Rollout
Discovery
Test set · data review
Proof of concept
Go decision
Production build
Zendesk app · guardrails
Pilot: 6 agents
Daily feedback
All agents
Training · dashboards
What a good outcome looks like
Most
drafts used with light edits
Every
draft links to its sources
Faster
onboarding for new agents
↓
outdated articles, fixed by content owners
Qualitative outcomes of an illustrative scenario — not measured results.
Lessons that transfer to other projects
- Agents adopt drafts they can verify. Citations did more for trust than any accuracy number.
- Resolved tickets are a goldmine — and a privacy risk. Scrub before you index.
- The copilot is also a content audit. Articles it cited but agents rejected were usually outdated.
- A future fine-tuning candidate emerged: ticket categorisation, where agents’ corrections are building a labelled dataset for free. See RAG vs fine-tuning.
Frequently asked questions
Keep reading
Want a second opinion on your project?
Tell us what you’re building and where you’re stuck. We’ll reply within one business day with the most practical next step — even if that step isn’t us.
