Corriendo en producción · Railway + Claude

Toma pedidos por WhatsApp.
Cierra la venta solo.

Un agente de IA que entiende, sugiere, calcula el total exacto y manda el ticket a cocina — 24/7, en español de México. Cambia una línea de config y el mismo motor atiende una inmobiliaria.

24/7 siempre activo ES-MX Totales deterministas Postgres
Total exacto, del lado herramienta
Platillos en catálogo (Postgres)
Propiedades — mismo motor
Herramientas · loop multi-paso
¿Es real?

Sí — está corriendo en vivo ahora mismo.

No es una maqueta ni un video. Es un agente de verdad: lee el mensaje, decide qué hacer, usa herramientas para consultar precios reales y guardar el pedido, y responde — solo, paso a paso. Compruébalo tú mismo con los enlaces de abajo.

En vivo ahora

Corriendo en producción en Railway. Cada respuesta es una llamada real — nada está grabado.

El cerebro

Claude (sonnet-4-6) decide en tiempo real qué herramienta usar y cómo responder.

Los datos

Postgres en vivo. El menú, el inventario y cada pedido se leen y se guardan en la base de datos — no archivos estáticos.

Conectado a

Claude API · Postgres (Railway) · WhatsApp (Twilio + Meta). El tablero y el chat corren sobre lo mismo.

Compruébalo: Escríbele en el tablero y míralo trabajar Ve los datos reales en Postgres (JSON)
Arquitectura

De un "hola" a un ticket en cocina

Cada mensaje de WhatsApp recorre el mismo camino. El runtime, los adaptadores de canal y el bus de eventos son idénticos para cualquier negocio — un negocio es solo un archivo de config.

WhatsAppTwilio · Meta Webhook + Sesiónfirma · rollback Agente Claudeloop tool-use Herramientasprecio · total Tablero + BDSSE · Postgres
01 · Entiende

Lenguaje natural

"3 de pastor con todo y un agua" → interpreta intención, cantidad y modificadores.

02 · Calcula

Total determinista

Las herramientas resuelven precios, promos y extras. El modelo nunca suma.

03 · Cierra

Ticket estructurado

Confirma, asigna folio y emite un ticket JSON listo para cocina/POS.

04 · Persiste

Datos reales

Cada pedido y lead se guarda en Postgres y aparece en el tablero por SSE.

En vivo

Míralo pensar

Una conversación real: el agente llama herramientas, aterriza el total exacto y suelta el ticket. Prueba el flip — el mismo motor cambia de taquería a inmobiliaria.

Una config. Un número. Dos negocios.

Cambiar de negocio no toca el motor: es un config.json distinto (persona + reglas + qué herramientas + qué catálogo). Ese es el modelo white-label — un backend que mantienes una vez.

Ve este mismo motor a fondo, del lado inmobiliario (Casa Nova Inmobiliaria), en nuestro demo CDMX Agent
Tablero de cocina · en vivo
Esperando el pedido…
El núcleo agéntico

No es un chatbot. Es un loop de herramientas.

El modelo decide, turno por turno, qué herramientas llamar y con qué argumentos, ve los resultados y decide el siguiente paso — hasta dar la respuesta final. El código nunca guioniza la conversación.

src/agent.ts — runAgent()
// El modelo ve las herramientas y decide. Loop hasta la respuesta final.
for (let step = 0; step < MAX_STEPS; step++) {
const resp = await claude.messages.create({
model, system, messages, tools, // ← catálogo de tools
});
messages.push({ role:"assistant", content: resp.content });

const calls = resp.content.filter(b => b.type==="tool_use");
if (resp.stop_reason !== "tool_use") break; // ← listo → responde

for (const c of calls) {
const result = runTool(c.name, c.input); // ← precios, totales, 86, folio
results.push({ type:"tool_result", tool_use_id:c.id, content:result });
}
messages.push({ role:"user", content: results }); // ← devuelve y repite
}
El modelo: lenguaje + criterio

Entiende el antojo, sugiere el upsell correcto, sabe cuándo confirmar. Maneja la ambigüedad humana.

Las herramientas: la verdad

Precios, totales, disponibilidad (86), folios. Deterministas y probados — por eso el total siempre cuadra.

Capacidades

Las herramientas del agente

Funciones puras con firma JSON-Schema. El pack se elige por config — restaurante o bienes raíces.

Stack

Producción, no maqueta

TypeScript nativo en Node 22, un solo runtime, desplegado en Railway con auto-deploy y Postgres administrado.

Claude sonnet-4-6 Node 22 type-stripping Railway auto-deploy Postgres SSE tablero en vivo Twilio + Meta JSON-Schema tickets
Todo esto está corriendo ahora mismo

Pruébalo en vivo

Enlaces directos al backend real en Railway. Datos reales, generados por el agente.