Retour aux projets
Service client2026

BrookAI

Un chatbot SaaS d’IA multi-tenant : un bot de service client qui apprend à partir des documents de l’entreprise, s’intègre à n’importe quel site et à WhatsApp, et passe la main à un agent humain.

BrookAI

Le projet

BrookAI est né d’un besoin concret : des entreprises qui voulaient répondre à leurs clients en dehors des heures de bureau sans embaucher davantage. Le bot répond uniquement à partir des documents de l’entreprise (RAG avec pgvector et LangChain) ; il n’invente rien et n’hallucine pas — s’il ne sait pas, il le dit et passe la main à un humain.

L’architecture est multi-tenant dès la conception : chaque client dispose de son propre espace isolé avec ses documents, son historique et sa configuration. Le même système en production sert plusieurs entreprises sans qu’aucune ne voie les données des autres.

L’intégration sur le site du client tient en un seul extrait de JavaScript — aucune dépendance à installer, aucune modification du backend existant. Le widget s’initialise avec la clé d’API du client et commence à répondre immédiatement. L’intégration avec l’API WhatsApp Business emmène le même bot sur le canal de messagerie le plus utilisé du marché.

Le tableau d’administration (React + Vite) permet de gérer les documents, de consulter tout l’historique des conversations, de voir à quelles questions le bot n’a pas su répondre (un signal direct de la documentation manquante) et de régler le ton et le nom du bot — le tout sans toucher au code.

Stack : FastAPI · Python · Claude API (Anthropic) · LangChain · pgvector · Supabase · Widget Vanilla JS · React + Vite · WhatsApp Business API. Dockerisé, avec CI/CD, et déployé sur notre propre serveur.

BrookAI — image 1

Besoin de quelque chose de similaire ?

Présentez-nous votre cas : nous partons de ce que nous avons déjà construit pour aller plus vite et dépenser moins.

Service associé : Assistants IA et automatisation
Détails techniques

Défis

  • →Un RAG fiable : le bot ne doit répondre qu’avec les informations réelles du client, sans halluciner ni mélanger les données d’autres clients
  • →Une isolation totale entre clients — documents, vecteurs et conversations doivent rester invisibles d’un client à l’autre
  • →Un widget JS intégrable sans casser les styles ni le JavaScript du site hôte
  • →L’intégration avec l’API WhatsApp Business : validation de la signature Meta et gestion des sessions par numéro de téléphone

Comment nous les avons résolus

  • Un filtre tenant_id sur toutes les recherches pgvector — chaque requête RAG n’accède qu’aux fragments du client concerné
  • Row Level Security dans Supabase + clés d’API hachées par client — impossible d’accéder aux données d’un autre même en manipulant la requête
  • Shadow DOM pour le widget : styles et scripts entièrement encapsulés, aucun conflit avec le site hôte
  • Un point de terminaison webhook avec validation X-Hub-Signature-256 et des sessions de conversation indexées par numéro de téléphone
PythonFastAPIClaude APILangChainpgvectorSupabaseJavaScriptReactViteDockerWhatsApp Business API