Grounded multilingual customer-support AI for English, French and Wolof, with retrieval, citations, guardrails, evaluation and human escalation.
# Multilingual Support AI
A production-minded reference implementation of a grounded customer-support assistant for English, French, and Wolof. It demonstrates retrieval, citations, multilingual responses, PII redaction, prompt-injection handling, confidence-based human escalation, evaluation, monitoring, and deployment.
The repository uses entirely synthetic support information. It contains no customer data, employer code, private endpoints, or client materials.
## Why this project exists
Customer-support automation in emerging markets must work across languages, unreliable connectivity, limited training data, and high-risk financial workflows. This project focuses on a practical principle: the assistant should answer only when it has relevant support information and should escalate safely when it does not.
## Features
- English, French, and Wolof knowledge content and responses
- Lightweight BM25 retrieval with source citations
- Automatic language detection with an explicit language override
- Local extractive mode that runs without an API key
- Optional OpenAI-compatible LLM provider
- Confidence-based escalation to human support
- PII and credential redaction before retrieval or generation
- Basic prompt-injection detection
- Golden-set evaluation endpoint and command-line runner
- Prometheus-compatible operational metrics
- FastAPI interactive documentation
- Docker, health checks, tests, linting, and GitHub Actions CI
## Architecture
```mermaid
flowchart TD
A[Customer message] --> B[Language detection]
B --> C[Safety and PII filter]
C -->|Blocked| H[Human escalation]
C -->|Safe| D[BM25 retrieval]
D --> E{Enough context?}
E -->|No| H
E -->|Yes| F[Answer generator]
F --> G[Response safety check]
G -->|Pass| I[Answer with citations]
G -->|Fail| H
```
The default `extractive` provider is deterministic and uses no external service. Setting `LLM_PROVIDER=openai` enables an OpenAI-compatible chat-completions endpoint while keeping retrieval, redaction, …