Reemplazo del bot de n8n —164 nodos, un prompt de 39.660 caracteres— por un agente en código con base de datos real. El bot actual sigue trabajando sin tocarse durante toda la migración. Esta página se actualiza a medida que avanza.
Ocho de cada diez clientes llegan tocando un anuncio. Si el bot no entiende de dónde viene la persona, no sirve nada de lo demás.
Revisé 2.500 ejecuciones reales del n8n para ver qué manda Meta cuando alguien toca un aviso de Facebook o Instagram. Manda mucho más de lo que el bot está usando hoy.
| Lo que llega de Meta | Qué se hace hoy | Qué se hace ahora |
|---|---|---|
| Id del aviso | Se tira | Queda guardado: se sabe cuál aviso |
| Titular del aviso | Se tira | Se guarda |
| Texto completo del aviso | Se tira | Se le pasa al bot: sabe qué le prometieron |
| Imagen del aviso | Se tira | Se guarda |
| Id del click | Se tira | Permite saber qué aviso trae ventas y cuál solo curiosos |
| Que vino de un anuncio | Sí/no en Redis, se vence a las 24 h | No se vence nunca |
Ese vencimiento de 24 h es la razón por la que el bot “olvida” a mitad de una charla larga que la persona venía de publicidad.
El aviso decía “¡SEMANA DE CAMIONETAS EN EE. UU.! Cuatro hermosas camionetas entran a remate…”. Con eso, lo que le llega al bot antes de contestar es:
ESTA PERSONA LLEGÓ TOCANDO UN ANUNCIO. Ya sabés de dónde viene: no se lo preguntes. El anuncio decía: "¡SEMANA DE CAMIONETAS EN EE. UU.! Cuatro hermosas camionetas entran a remate la próxima en Copart..." Arrancá por lo que ese anuncio ofrecía. Si el anuncio hablaba de un tipo de vehículo, mostrá esos.
Si el aviso hablaba de camionetas, el bot no arranca ofreciendo sedanes ni preguntando “¿qué buscás?”. Ya lo sabe.
Antes de decidir cómo mandar fotos fui a ver qué guarda Jhon hoy. Medido sobre el catálogo real, las 252 filas:
| Lo que hay hoy | Medido |
|---|---|
| Columna IMAGEN REF. | 4 filas de 252 tienen algo — y son links a la página de la subasta, no fotos |
| Columna VIDEO REF. | 0 filas de 252 |
| Nodos del bot que mandan una foto | 0 de 164 |
El cliente hoy no puede recibir una sola imagen. Copiar esas dos columnas al sistema nuevo habría sido copiar el vacío.
Cada anuncio viene con su propia imagen: la que el cliente acaba de ver en Facebook o Instagram. Esa foto ahora se guarda sola, sin que Jhon haga nada.
Y se baja en el momento, porque el link de Meta vence: el del aviso de camionetas caducaba a los 3 días. Guardar el link habría sido guardar un link muerto.
Se guarda una vez por aviso, no una por cliente: se compara la huella del archivo. Aunque mil personas toquen el mismo anuncio, en el disco hay una sola foto.
Lo que sigue: que Jhon cargue las fotos de cada auto sin pelearse con nada, y que el aviso quede atado a los vehículos que muestra.
En n8n todo vivía adentro de los nodos: un prompt de 39.660 caracteres que cargaba las 85 respuestas de Jhon, las reglas y los ejemplos, más 7 nodos-candado repartidos por el lienzo.
Acá cada cosa tiene un solo lugar, y está separado lo que toca Jhon de lo que toco yo.
| Qué | Dónde vive | Quién lo cambia |
|---|---|---|
| Cómo habla | Las reglas de conducta, 4.633 caracteres en total | El programador |
| Las 85 respuestas de Jhon | Tabla temas, en la base | Jhon, desde el panel |
| Los 5 números del precio | Tabla parametros | Jhon, desde el panel |
| El catálogo de autos | Tabla autos | Jhon, desde el panel |
| Qué puede hacer el bot | Las herramientas: buscar auto, cotizar, agendar, consultar tema, anotar duda | El programador |
| Los candados | Una cadena que revisa cada respuesta antes de mandarla | El programador |
| La cuenta del precio | Un solo archivo. Ningún otro lugar suma plata | El programador |
El prompt ya no lleva las respuestas adentro. Lleva un índice: 85 títulos en 3.394 caracteres. Cuando el cliente pregunta algo, el bot pide el texto de ese tema y no de los otros 84.
Jhon corrige una respuesta en el panel y cambia al instante, sin tocar el prompt ni reiniciar nada.
índice de temas 3.394 caracteres para 85 temas
prompt completo 4.633 caracteres
el de n8n 39.660 caracteres
−88%
Los candados también cambiaron de forma. En n8n eran nodos sueltos, y el orden dependía de dónde estaban puestos en la pantalla. Acá son una sola cadena, siempre en el mismo orden, con 24 pruebas que se corren solas y fallan si alguien rompe una.
La hoja PRECIOS tiene once columnas de plata que Jhon mantiene fila por fila. Medidas contra las 252 filas reales, cinco de ellas no aportan información: son una fórmula, tres constantes y un tipo de cambio.
| Columna | Qué resultó ser | Evidencia | Veredicto |
|---|---|---|---|
| 4% | El 4% de PRECIO, exacto | 252/252 | fórmula |
| DOC | Siempre 700 | 1 valor | constante |
| GRÚA | Siempre 1.200 | 1 valor | constante |
| COM. | Siempre 500 | 1 valor | constante |
| GARANTIA BS | GARANTIA DLS × 12,15 | 252/252 | tipo de cambio |
| PRECIO | $ EEUU + FEE | 251/252 | suma |
| TOTAL | Suma de los 7 componentes | 252/252 | suma |
| $ EEUU | Lo que salió en la subasta | 252 filas | dato |
| FEE | Lo que cobra la subasta | 91 valores | dato |
| FLETE | Según puerto y destino | 5 valores | dato |
| POLIZA | Según el auto | 154 valores | dato |
Las cinco pasaron a una sola fila de parámetros y el total se calcula. Recalculadas las 252 cotizaciones desde los cuatro datos que quedan, 251 dan idénticas al centavo — y la que no, es un error real de la hoja.
Son 1.260 celdas que Jhon deja de mantener a mano. Y cambiar el tipo de cambio, que hoy son 252 ediciones con riesgo de saltear una en silencio, pasa a ser un campo.
Nada de esto se arregló solo. Son cosas que hoy entran a la planilla sin que nadie se entere; acá chocan contra el esquema y quedan a la vista.
N52, Mercedes Benz CLA 250 4MATIC 2026. Su celda PRECIO dice 20.000 cuando $ EEUU + FEE dan 22.600: es la única fila de 252 donde no cierra. Hoy el bot lo cotiza en $41.000; siguiendo la regla de las otras 251 serían $43.704. Quedó cargado pero desactivado: el bot no lo ofrece hasta que Jhon confirme cuál precio vale.
Dicen CLIENTE JHON, y ninguno de los 164 nodos del bot actual conoce ese estado. La base los rechazó en vez de tragarlos.
PREG. NEGOCIO de la 30 a la 47: los bloques completos de CONTRATO y de CITAS. La 39 resuelve una contradicción viva —la hoja dice 08:30 a 19:00 y el bot agenda de 9:00 a 18:00— y la 44 hoy está decidida por omisión: el bot cierra citas solo, sin que nadie lo haya autorizado.
El bot lee el rango A5:Z500. Son 26 columnas y hay 23 usadas. La columna 27 no se lee: el catálogo simplemente sale incompleto, sin ningún error.
Copiar la planilla tal cual sería mudar el problema de lugar. Cada columna existe como existe porque una celda no puede hacer otra cosa — no porque el negocio funcione así.
| En la hoja | Se convierte en | Por qué |
|---|---|---|
| IMAGEN REF. VIDEO REF. |
→ archivos que el bot manda | Están vacías en las 252 filas. Una celda solo guarda un link, y un link no se le manda al cliente como foto. Jhon arrastra el archivo al panel y el bot lo envía. |
| Cotización en la fila 3 | → una fila por cotización | Todas las cotizaciones se escriben en la misma fila y se pisan. De ahí salieron cinco nodos de turno y una ventana de hasta 146 s donde dos clientes se cruzan los datos. Deja de existir, y queda historial. |
| MARCA · MODELO · PRECIO en la hoja CLIENTES |
→ sus cotizaciones | La planilla guarda un solo interés por cliente: si vuelve y pregunta por otro auto, borra el anterior. Lo que había se conserva; de acá en más cada consulta queda con su fecha. |
| Tipo de vehículo (no existe como columna) |
→ una columna | Hoy vive en un mapa de código duplicado en dos lugares, más seis nodos que lo adivinan con IA. Con la columna, Jhon lo corrige él mismo y los seis nodos sobran. |
| Estados en texto libre | → lista cerrada | Hoy hay que comparar por pedazos de palabra para sobrevivir al masculino y al femenino. Ahora la base rechaza lo que no está en la lista — así aparecieron los 21. |
| Fechas 31/7/2026 horas 3:00:00 p.m. |
→ fecha y hora reales | Sheets devuelve lo que se ve, no lo que se escribió. Con tipos reales, ordenar y comparar deja de ser adivinanza. |
| Recordatorios: barrido cada 5 minutos |
→ un aviso por cita | 288 barridos por día de la hoja entera, hoy apagado. Cada cita agenda su propio recordatorio, a la hora exacta. |
El bot de hoy corrige lo que dice el modelo con siete nodos encadenados al final. Portarlos tal cual sería mudar el problema: cuatro de ellos existen para tapar algo que en el diseño nuevo ya no puede pasar.
| Candado | Qué pasa con él | Por qué |
|---|---|---|
| Precio | → desaparece | El modelo ya no escribe números de plata. Escribe {{precio:17}} y el código pone el valor de la base. No queda nada que corregir después. |
| Cita y Saludo | → desaparece | Si es el primer mensaje lo dice la base, no el modelo. Y el horario lo rechaza la herramienta, no una regla del prompt. |
| Anuncio | → desaparece | "Vino por anuncio" es una columna. Deja de ser una llave que vence a las 24 horas en medio de una conversación. |
| Reparación | → pasa a ser un tema | Es información del negocio, no una corrección de estilo. Vive con los otros 84 temas y la trae una herramienta. |
| Estilo | → queda | Sigue siendo sobre cómo habla, que es lo único que todavía decide el modelo. |
| Promesas | → queda | Bloquea plazos, garantías y ofrecimientos que Jhon no confirmó. Las cuatro preguntas que este candado tapa siguen sin respuesta. |
| Tercera persona | → queda | El bot es Jhon. Nunca "le consulto a Jhon". |
Los tres que quedan son funciones con 24 tests en verde, con casos reales: un precio escrito a mano se bloquea, un año no se confunde con un precio, y una frase que ya está bien no se toca.
Un 88% menos, y con todo el negocio adentro: los 85 temas viajan solo por su nombre —3.394 caracteres— y el texto lo trae una herramienta cuando hace falta. Lo que queda en el prompt es únicamente conducta: cómo habla y qué no puede prometer.
Cincuenta corridas de cada consulta contra la base ya cargada, con los 252 autos y los 3.035 clientes adentro.
| Consulta | Mediana | p90 | Máximo |
|---|---|---|---|
| Buscar auto por tipo y presupuesto | 1,64 ms | 2,66 ms | 18,29 ms |
| Buscar auto por modelo | 1,13 ms | 1,68 ms | 4,31 ms |
| Traer los números para cotizar | 0,60 ms | 1,34 ms | 2,43 ms |
| Consultar un tema del negocio | 0,33 ms | 0,75 ms | 2,34 ms |
| Buscar un cliente por teléfono | 0,60 ms | 1,32 ms | 4,43 ms |
Para ser justos con la comparación: traer los números de una cotización tarda 0,60 ms, pero hoy eso además implica escribir en la hoja, esperar y exportar —11,7 s de mediana, 140 s el peor caso—. Lo que desaparece es el viaje a Google. El dibujo de la imagen todavía no está escrito ni medido.
El otro número que importa: todo el conocimiento del negocio ocupa 3.325 caracteres en el prompt. Son los 85 temas listados por nombre; el texto lo trae una herramienta cuando hace falta. Hoy ese conocimiento viaja entero, en un prompt de 39.660 caracteres, en cada una de las cuatro llamadas al modelo por mensaje.