The client
A commercial bank where every answer was looked up by hand
A national commercial bank with a busy customer support operation. Its policies, procedures and FAQs were well documented. Finding the right one, in the right version, for each inquiry was the slow part.
The bank wanted support that answered faster and cost less, without lowering the bar its customers were used to.
The challenge
Routine requests and banking judgement in one queue
Every inquiry was answered by a person searching the document store. A request for a standard document, a login problem and a question that needed a banker all waited in the same line.
The knowledge behind every answer
Cost rose with volume, and the routine requests set the pace for the complex ones.
Constraints
What we had to design around
- JudgementA bank cannot let a model improvise on an account or a regulation. The agent could finish routine requests, but anything that needed a banker had to reach one — with the conversation so far, not a blank ticket.
- Source of truthThe answers already existed, in normative documents, procedures and an FAQ library in the bank’s document store. The agent had to answer from those, and from the current version of them.
- Where people already areStaff and customers already worked in chat. The agent had to live in Teams and a web chat, not in a new portal nobody opens.
- Two languagesInquiries arrive in two languages. Both had to be first-class, not a translation layer bolted on.
- GrowthCustomer support was the first use case, not the last. The architecture had to take new agents without rebuilding the ones already running.
Our approach
Triage first, then specialists, on one graph
A single chatbot that tries to answer everything ends up guessing at the hard questions. In banking, a confident wrong answer costs more than a slow right one.
So we split the work. A triage agent decides what each inquiry is. Specialists own one kind of request each, and one of them exists only to hand over to a person. All of them answer from a knowledge graph of the bank’s own documents, because support questions are about connections — which procedure applies to which product, which version replaced which — and a graph answers those directly.
The solution
Five layers, from a question to a resolved inquiry
- Chat interface — A Teams bot and a web chat behind one secured API. Answers stream back with action buttons — email this document, raise a ticket — so the next step is one click.
- Triage agent — Recognises the intent of each inquiry, routes it to the specialist that owns it, and keeps the conversation state, so “send me that one” knows which document “that one” is. Built on Agno.
- Specialist agents — General banking, account support, technical support and escalation. Each runs a Claude model on AWS Bedrock, with shared tools for context understanding, data retrieval, GraphRAG search and reasoning. A response generator assembles the final answer.
- Knowledge graph — The bank’s normative data, procedures and FAQ library, broken into entities and relationships and searched by GraphRAG — a hybrid of graph traversal and vector similarity, with sub-second queries.
- Actions and ingestion — An MCP server creates, routes and tracks tickets in the existing helpdesk. ETL jobs and real-time functions keep the graph in sync with the document store. A cache, guardrails and a feedback log run underneath everything.


Responsible by design
Four rules for an agent that speaks for a bank
Escalate
Routine is finished; banking judgement is handed over.
A document request or a ticket completes on its own. A matter that needs a banker goes to a person, who opens it with the whole conversation in front of them.
Ground
Answers come from the bank’s documents, not the model’s memory.
Every specialist searches the same knowledge graph. An answer about a procedure traces back to the procedure, and to its current version.
Guard
Every reply passes guardrails before it is sent.
Guardrails sit between the agents and the customer, so an answer outside policy is stopped before anyone reads it.
Trace
Every automated action leaves a record.
Tickets, emails and handovers are written to an audit trail, and feedback on each answer is logged, so quality can be checked, not assumed.
The first rule shapes the rest. The aim is not an agent that replaces the support team. It is a team that spends its day on the inquiries that need a banker, because the agent answered the rest.
Results
What changed for customer support
- 60–70% faster support responses — the answer comes from the knowledge graph in seconds, instead of from a person searching the document store.
- 70% of routine inquiries resolved automatically, with complex banking matters escalated to a person, conversation attached.
- 85% correlation with human-agent satisfaction scores, so customers rate the agent’s answers in step with the team’s.
- 50% higher operational efficiency through consistent service quality — the same question gets the same, current answer every time.
- 25% lower customer-service cost, on a framework that takes new agents, so the next banking use case plugs into the same triage and the same graph.
The routine stopped setting the pace. The people who knew the bank best got their time back for the questions only they could answer.
Beyond the numbers
What else changes
The bank’s documentation stops being a library and becomes something you can ask. Which procedure changed, which version is current, what applies to this product — one sentence instead of a search.
And because triage, tools and the graph are shared, the next agent — for another department or another channel — is an addition, not a rebuild.
If your support team answers the same questions every day
The first question is how much of the queue is routine. That is answerable from a week of your inquiries, before anything gets built.