Saltar al contenido
giron.ai
← Proyectos

Andre

Un agente puede vender solo cuando el sistema le impide prometer lo que no existe.

Con
en producción, WhatsApp Cloud API, LangGraph, pgvector, PostgreSQL con RLS, 77 migraciones, cerca de mil pruebas

Plataforma de atención y ventas por WhatsApp con agentes de IA, en producción en andre.giron.ai, sobre la API oficial de WhatsApp de Meta.

Es la continuación de mi trabajo con agentes RAG. Lo que empezó como un chatbot con retrieval para un estudio de fotografía es hoy un sistema multi-tenant donde un número de WhatsApp, un equipo comercial y un agente de IA trabajan sobre la misma bandeja. El equipo comercial de El Empleado Juan opera su embudo sobre Andre.

Qué hace

  • Atiende a cualquier hora con el conocimiento del negocio —RAG sobre pgvector— y en la variante de español del cliente.
  • Califica cada conversación mientras ocurre: el Radar la clasifica, extrae los datos que ese negocio necesita para vender —cuántos empleados, qué sede, qué producto— y los vuelca a la ficha del contacto sin retrasar la respuesta.
  • Agenda en la agenda real del equipo, persona por persona, espejada en Google Calendar.
  • Sigue al cliente: embudo con dueño de cada oportunidad, llamadas y tareas asignadas, cadencias de WhatsApp y de correo, cotizaciones en PDF y campañas a segmentos.
  • Captura sin copiar y pegar: los formularios de Facebook e Instagram y los anuncios que abren WhatsApp entran solos al embudo, con su origen.

El agente propone; el sistema dispone

El error típico con un agente que vende es darle permisos y confiar en el prompt. Aquí el modelo nunca escribe directamente: propone, y lo que propone pasa por las mismas puertas que la petición de una persona.

Del mensaje al efecto: el agente propone una acción y sólo llega a la base de datos si supera el esquema, los permisos y las restricciones. MensajeWhatsApp Agenteflujo LangGraph Propuestaacción tipada ¿Válida?esquema, RLS APIpermisos del dueño Efectocita, oportunidad lo imposible muere aquí
La validación va antes del efecto: una promesa que no se puede cumplir no debe llegar a escribirse.

La garantía contra la doble reserva, por ejemplo, no vive en el prompt ni en el código de la aplicación. Vive en la base de datos, donde ni el modelo ni una carrera entre dos peticiones pueden saltársela:

-- Dos personas del equipo pueden tener cita a la misma hora; la misma
-- persona, no. Con ocho reservas simultáneas del mismo hueco, exactamente
-- una gana: las otras siete reciben un error, no una cita duplicada.
ALTER TABLE appointments ADD CONSTRAINT no_overlap EXCLUDE USING gist (
  tenant_id                      WITH =,
  staff_id                       WITH =,
  tstzrange(starts_at, ends_at)  WITH &&
) WHERE (status IN ('scheduled','confirmed'));

El mismo principio sostiene el copiloto del dueño. El negocio configura Andre hablándole —«crea un segmento con los leads de más de 25 empleados y prepárales una campaña»—: la IA arma un plan, el dueño lo ve antes de que pase nada, y el API lo ejecuta bajo la sesión del dueño, con sus permisos y ninguno más. El aislamiento entre negocios lo da Row-Level Security de PostgreSQL, no un WHERE que alguien puede olvidar.

Hasta dónde llega hoy

  • Flujos visuales. El negocio dibuja el guion del agente en un editor de arrastrar y soltar, o lo describe en una frase y la IA lo dibuja. LangGraph lo ejecuta con checkpoint en Postgres: una conversación puede pausar en una pregunta y reanudarse días después donde quedó.
  • Varios agentes con nombre, cada uno con su persona, su guion, su conocimiento y su nivel de autonomía —apagado, sombra, sugerir o automático—, asignados por canal.
  • Seis servicios —web, API, worker, tiempo real, IA y migraciones— sobre PostgreSQL, pgvector y Redis, con eventos por outbox para que nada se pierda entre la base de datos y la cola.
  • 77 migraciones de esquema versionadas y cerca de mil pruebas automatizadas entre TypeScript y Python.

Lo que no está en ningún tutorial

  • Un fallo de la IA no puede parecer una respuesta. Si el servicio de embeddings cae, el agente sigue contestando —sin el conocimiento del negocio, vago y perfectamente seguro de sí mismo—. Es el modo de fallo que ya conocía de los agentes RAG, ahora con clientes delante, y por eso se vigila como una caída y no como un matiz de calidad.
  • WhatsApp cobra el spam con el número. Una sola cadencia viva por contacto, horario de silencio por negocio y la baja respetada en el mismo envío en que se pide.
  • Una conversación termina con el guion con que empezó. Activar un flujo nuevo no le cambia el guion a quien está a mitad de charla: cada conversación queda fijada a una copia del flujo hasta que termina.

Escríbeme

Si estás pensando en hacer algo con IA y quieres hablarlo con alguien que ya lo puso en producción, escríbeme. Contesto yo.

hola@giron.ai