01
One backend, every chat surface
The core architectural decision was a strict separation between the brain and the faces. A Python FastAPI backend (apps/retriever) exposes three endpoints: a health check, a retrieve-only endpoint for vector search, and a chat endpoint that runs the full RAG pipeline.
Every chat interface, the Next.js web app today, and the WhatsApp bot and mobile app planned next, talks to that single API with a standard messages payload. Adding a new surface means building a thin client, not a new brain.
The web frontend is a clean Next.js and TypeScript chat interface with conversation history, streaming-style typing states, and source metadata returned alongside each answer.