Answers are grounded in the institution's own approved set. The model's general knowledge is not a permitted source.
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.
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.
Two answers, both correct
One drawn from an approved document and citing it. One admitting the documents do not cover the question.
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 it does
The document behind an answer is named, so it can be checked rather than trusted.
When the documents do not contain the answer, saying so is the correct output — not the failure case.
A chain of checks around the model rather than a prompt asking it to behave.
A private model and a local vector store. No document and no question is sent to a third party.
Staff ask the way they would ask a colleague.
In production
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.
Tech stack
- Next.js
- React
- TypeScript
- pgvector
- Prisma
- PostgreSQL
- Tailwind CSS
Delivered under AI Agent Development.
Other things we have built.
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 itLaw-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 itCTR 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 itRegulatory 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 itAutonomous 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 itMulti-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 itWhatsApp 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 itHave 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.