Volver al portfolio
BrookAI
IA2026

BrookAI

SaaS de chatbot con IA multi-tenant: bot de atención al cliente que aprende de documentos propios, se integra en cualquier web y WhatsApp, y escala a agente humano. En producción en bklnsoftware.tech.

PythonFastAPIClaude APILangChainpgvectorSupabaseJavaScriptReactViteDockerWhatsApp Business API

BrookAI nació de una necesidad concreta: empresas que querían atender a sus clientes fuera del horario laboral sin contratar más personal. El bot responde usando exclusivamente los documentos del negocio (RAG con pgvector y LangChain), no inventa ni alucina — si no sabe, lo dice y deriva a un humano.

La arquitectura es multi-tenant desde el diseño: cada cliente tiene su propio espacio aislado con sus documentos, su historial y su configuración. El mismo sistema en producción sirve a múltiples empresas sin que ninguna vea los datos de las demás.

La integración en la web del cliente es un único snippet de JavaScript — nada de instalar dependencias ni modificar el backend existente. El widget se inicializa con la API key del tenant y empieza a responder al instante. La integración con WhatsApp Business API lleva el mismo bot al canal de mensajería más usado en el mercado.

El panel de administración (React + Vite) permite gestionar documentos, ver el historial de conversaciones completo, revisar qué preguntas no supo responder (señal directa de qué documentación falta), y configurar el tono y nombre del bot — todo sin tocar código.

Stack: FastAPI · Python · Claude API (Anthropic) · LangChain · pgvector · Supabase · Vanilla JS widget · React + Vite · WhatsApp Business API. Dockerizado, con CI/CD y desplegado en Hostinger VPS (bklnsoftware.tech).

BrookAI screenshot 1

Retos técnicos

  • RAG fiable: el bot debe responder solo con información real del cliente, sin alucinar ni mezclar datos de otros tenants
  • Aislamiento total entre tenants — documentos, vectores y conversaciones deben ser invisibles entre clientes
  • Widget JS embebible sin romper los estilos ni el JS de la web huésped
  • Integración con WhatsApp Business API: validación de firma Meta, gestión de sesiones por número de teléfono

Soluciones aplicadas

  • Filtro por tenant_id en todas las búsquedas pgvector — cada query de RAG solo accede a los chunks del tenant correspondiente
  • Row Level Security en Supabase + API keys hasheadas por tenant — imposible acceder a datos ajenos aunque se manipule la request
  • Shadow DOM para el widget: estilos y scripts completamente encapsulados, cero conflictos con el host
  • Endpoint de webhook con validación X-Hub-Signature-256 y sesiones de conversación indexadas por número de teléfono