Banking made simple,
with Aria by your side.

SecureBank India is a full-service retail bank — savings & current accounts, fixed and recurring deposits, home / personal / car / education loans, cards, UPI, NEFT & RTGS. Aria is our AI customer-service assistant: she answers policy questions instantly and, once you verify your identity, helps with your own accounts, loans and complaints.

📚

Instant answers, grounded

FD & savings rates, KYC documents, NEFT/RTGS/UPI timings, fees and charges — answered straight from our knowledge base. If it isn't documented, Aria says so instead of guessing.

🔐

Secure authentication

Personal data is served only after you verify with name + user ID + password. One session binds to one customer — identity can never be switched mid-conversation.

🏦

Your accounts & loans

Balance, profile and a loan overview on request. Full loan details by exact loan ID — Aria never speculates over your financial data.

📝

Complaints, with consent

Describe an issue and Aria proposes a complaint — it is filed only after you explicitly confirm, and you can list or look up your tickets any time.

🧠

Remembers the conversation

Hybrid memory keeps recent turns verbatim and summarises older ones, so long chats stay sharp without losing the thread. Conversations persist — resume any time.

📊

Transparent & resilient

Every reply shows which model APIs were called, tokens used and cost. If the LLM is ever unreachable, a safe offline fallback still answers.

TRY A GENERAL QUESTION

“What interest do you pay on a savings account?”
“What documents are needed for KYC?”
“What are the RTGS timings?”

DEMO LOGIN (TEST DATA)

Name: Rahul Verma
User ID: U001
Password: Rahul@2024

THEN ASK

“What’s my balance?”
“Show my loans.”
“Details of loan LN-1001.”
SecureBank India (demo) · Helpline 1800-123-4567 · Aria V1 — LangChain + DeepSeek · All data is mock data
Aria
SecureBank customer service
🪷

Namaste! I’m Aria.

Ask me about SecureBank’s products and policies, or verify your identity to access your own accounts, loans and complaints.

FD rates
KYC documents
NEFT / RTGS timings
Demo login
Conversations are saved in session_ui.db · expand “API calls & cost” under a reply to see the chain & summary model callbacks

📊 Performance & Reliability

Live snapshot of the evaluation suite (evaluation/) and the resilience design. Numbers and charts are read from the latest eval run in static/ — re-run intrinsic_eval.py / extrinsic_eval.py to refresh them.

Retrieval quality — intrinsic (53 gold questions)

Intrinsic retrieval metrics Recall by category

Answer quality — extrinsic (LLM-as-a-Judge + lexical)

LLM-as-a-Judge averages Lexical metrics

Lexical scores read low by design — the chain paraphrases beyond terse references; the judge is the truer signal.

How retrieval works — hybrid ensemble + similarity filter

BM25 (keyword) + MiniLM dense vectors fused by an EnsembleRetriever (0.4 / 0.6), then an EmbeddingsFilter drops chunks below 0.30 similarity.

Reliability — what happens when things fail

LLM down

Offline fallback ("mock model")

If the answer model is unreachable (bad key, timeout, outage), a deterministic rule-based responder still replies — greeting, auth guidance, or "temporary issue, call 1800-123-4567". It never fabricates account data, and the failed turn never corrupts memory. Look for the offline_fallback badge on replies.

Summary model fails

Two-level memory degradation

Memory = last 5 turns verbatim + a running summary. If only the summary model fails, the window still advances and the last good summary is kept — no crash, no lost answer. If the answer model fails, memory is left untouched entirely.

Retriever fails

RAG fallback ladder

Hybrid ensemble → dense-only → full knowledge base. If retrieval can't be built or returns nothing, the whole KB is injected instead — the assistant is always grounded, never answering from thin air.

Bad input

Guardrails before the model

Prompt-injection phrases, sensitive PII (card/CVV/OTP/Aadhaar) and off-topic queries are blocked by deterministic checks before any LLM call — a blocked turn costs zero tokens.

Runaway agent

Tool-loop cap

At most 4 tool→re-think rounds per turn, with a drain step so no tool call is left dangling. Cost and latency stay bounded even if the model gets loop-happy.

Identity safety

Session-scoped data access

The verified customer_id is injected by the orchestrator into every data tool — the model never chooses whose data is read. One session binds to one customer, write-once, forever.

⚙️ Engine settings

Live knobs over the agent’s config.py values. Every control is bounded to a safe range — you can’t set a value that would crash or starve the agent. Model changes rebuild the LLM clients; retrieval changes rebuild the KB retriever on the next question.

Two model roles, independently configurable. The chain (answer) model drives the conversation, tools and structured output; the summary model only compresses old turns. You may point them at different providers (e.g. chain → Anthropic, summary → DeepSeek) — each role calls its own API and the per-reply “API calls & cost” panel in chat shows both calls working. In this demo only a DeepSeek key is configured, so both roles run deepseek-chat — the panel shows one model serving both roles, each call verified separately. Note: the summary model is first invoked only once the window overflows (turn 6 onward with the current window size).
✓ Applied