Case study — 03 · Banking

Internal Policy Assistant

Staff ask a policy question in plain language and get an answer taken strictly from approved documents, with the source named. Nothing leaves the building, and when the documents do not answer, it says so.

The problem

What it was like before

The answer to most internal policy questions exists, in a document, that somebody wrote. Finding it means knowing which document, which version, and which section — so in practice people ask a colleague, who asks another colleague.

A general-purpose assistant makes this worse rather than better. It will answer confidently from its own training about how banks usually work, which is not the same as how this bank is required to work.

How it looks

Two answers, both correct

One drawn from an approved document and citing it. One admitting the documents do not cover the question.

Policy assistantinternal · no data leaves

How many days of leave carry over at year end?

Up to ten days carry into the next calendar year. Anything above that lapses on 31 December unless the department head has approved an exception in writing.HR Policy Manual · section 7.4 · rev 2026-03

Can I encash the lapsed days instead?

The approved documents do not cover encashment of lapsed leave. I have not answered from general knowledge. HR will be able to confirm.

What we built

What it does

Retrieval over approved documents only

Answers are grounded in the institution's own approved set. The model's general knowledge is not a permitted source.

Every answer cites its source

The document behind an answer is named, so it can be checked rather than trusted.

A refusal path

When the documents do not contain the answer, saying so is the correct output — not the failure case.

Guardrails in front and behind

A chain of checks around the model rather than a prompt asking it to behave.

Nothing leaves the bank

A private model and a local vector store. No document and no question is sent to a third party.

Plain language in, plain language out

Staff ask the way they would ask a colleague.

Where it got to

In production

CitedEvery answer names its source
ZeroData egress beyond the bank
SecondsRather than three colleagues
Our view

What it does when it does not know

The question a risk officer asks about a system like this is never how good the answers are. It is what happens when the documents are silent.

A retrieval system that will not say 'this is not covered' is more dangerous than no system, because a confident wrong answer about policy gets acted on. Making refusal a first-class outcome, and citation mandatory, is what separates this from a chatbot with a document folder.

Built with

Tech stack

  • Next.js
  • React
  • TypeScript
  • pgvector
  • Prisma
  • PostgreSQL
  • Tailwind CSS
The work behind it

Delivered under AI Agent Development.

More work

Other things we have built.

Banking

Sanctions Screening Agent

Watchlist alerts arrive all day and most are false matches. The agent clears the obvious ones against a rule engine backed by an LLM and sends every disagreement to a person with the evidence already assembled.

Read it
Banking

Law-Enforcement Request Intake

Requests arrive as letters with scanned attachments. The agent reads the mailbox, OCRs the attachments, verifies identifiers against core banking, classifies the intent and routes it — with an audit trail behind every step.

Read it
Compliance

CTR to goAML Conversion

A compliance team spent hours a week turning Currency Transaction Reports into goAML XML by hand. Parser, XML builder, schema validator and audit trail, behind a interface officers actually use.

Read it
Compliance

Regulatory Reporting Engine

A registry of every periodic return a bank owes. The engine pulls the data, builds each report against the mandated template, then schedules and submits it behind a maker-checker step.

Read it
Product

Autonomous Social Media Agent

A ReAct loop that researches, reads its own history to avoid repeating itself, writes a strategy memo, critiques its own drafts, publishes, and learns from every rejection.

Read it
Product

Multi-Agent Marketing System

Two agents on one platform with a person approving everything before it ships. One researches and takes a position; the other plans a week of posts reviewed as a batch.

Read it
Healthcare

WhatsApp Booking Agent

Patients book on the number a clinic already advertises, at any hour, in the language they normally write. Only genuinely free slots are offered, and anything clinical goes to a person immediately.

Read it

Have something like this?

Describe the process and we will come back with whether it is worth automating, roughly what it would take, and what we would build first — or tell you plainly if it is not a job for us.