Multilingual AI chatbot for banking complaint management (FR/EN/AR/Darija) — built during an engineering internship at STB Bank.
# Multilingual Claims Bot — STB Bank
A multilingual, intelligent chatbot for handling card and payment
complaints (monetics claims), built during an engineering internship at
STB Bank (Société Tunisienne de Banque). It understands and replies in
French, English, Modern Standard Arabic, and Tunisian Arabic (Darija) —
by text or voice — and connects a full authentication system, a live
complaint-tracking backend, and a supervisor dashboard into a single
web app.
---
## Highlights
- **4-language understanding** (FR / EN / AR / Tunisian Darija), including
informal, mixed-script messages — not just keyword matching.
- **Multi-issue detection** — a single message such as "my card is blocked
and I also have a payment limit issue" is split into a primary and
secondary complaint, both acknowledged.
- **Smart clarification** — vague messages trigger a targeted follow-up
question instead of a guessed, possibly wrong classification.
- **Retrieval-Augmented Generation (RAG)** — replies are built
deterministically from a structured knowledge base of 54 procedure
sheets, never freely generated, to eliminate hallucinated deadlines or
procedures.
- **Voice mode** — microphone input transcribed via Whisper, spoken
replies via text-to-speech (FR/AR).
- **Secure file uploads** — photo/PDF evidence attached to a claim,
validated by real file-signature checks (not just MIME type), isolated
per user.
- **Real complaint tracking** — every conversation creates or updates a
ticket (status, category, linked messages), visible in "My Claims".
- **Supervisor dashboard** — live queue of human-escalation requests
(Server-Sent Events, no manual refresh), claims breakdown by status and
category, ticket status updates.
- **Security-first design** — httpOnly session cookies (never JWT in
localStorage), bcrypt password hashing, rate limiting, account lockout,
role-based access control, isolated file storage, audit log, a shared
internal key protecting the Python microservice even if its port is …