Los errores reales que cometí para que tú no tengas que cometerlos
Lo primero de todo, ¡Feliz año 2026!
Este año lo empiezo de la mejor forma que sé: Dando guerra desde el frente de batalla.
Lo prometido es deuda.
Hace unas semanas te conté cómo me cargué a Elio, mi agente de voz con IA para el departamento de ventas de netelip.
Lloré más que Gaviota en Café con Aroma de Mujer. Bebí Jägermeister. Me fui a la playa con UX a resetear la cabeza.
Y luego me puse a trabajar de verdad, 3 días muy intensos
Lo reconstruí desde cero.
Pero esta vez no cometí los mismos errores.
Esto no es otro tutorial bonito de YouTube.
Es la autopsia técnica real de un agente de voz que murió en producción.
Los 5 errores críticos que lo mataron. Cómo los arreglé uno por uno. Y por qué la mayoría de agentes de voz fracasan antes de las 100 llamadas.
Vamos al lío.
Miércoles por la tarde. Elio estaba en producción en la centralita de netelip, atendiendo llamadas entrantes en el +34 951 XXX XXX.
De repente:
Tuve que quitarlo de urgencia de la cola de ventas.
Y sí, me llamaron inútil.
No encontraba el fallo. No entendía el porqué.
Porque el problema real no era UNO.
Eran 27 errores encadenados que lo rompieron todo.
La causa raíz:
Llamadas largas (más de 10 minutos) + Límite de tokens de GPT-4.1 = Alucinaciones al 45%.
Lo hice demasiado empático, intenté duplicarme con mi personalidad, mi forma de vender, mi forma de hablar.
Error brutal: Un agente de voz para tu empresa tiene que ser consistente, persistente, y no darle posibilidad de errores.
Aquí van los 5 errores que MÁS me costaron. He docuentado 27 errores en total que compartiré completos en mi blog, pero estos 5 casi me matan.
Empecé con Google Calendar pensando que sería más fácil porque es más conocido.
Monté toda la automatización en Make porque "es lo que usa todo el mundo".
Cuando algo fallaba, no podía ver DÓNDE ni POR QUÉ.
Cada herramienta tiene su propia lógica y documentación. Estaba perdiendo tiempo intentando entender cómo Make procesaba las respuestas de Google Calendar. Era un stack imposible de debuguear cuando todo explotó.
Lo tiré TODO a la basura.
Migré a Cal.com:
Migré a N8N:
Empecé desde cero con un stack más limpio.
Ahora tengo 2 escenarios en N8N:
FLUJO 1: Llamadas entrantes + Variables dinámicas.
FLUJO 2: Post Call Analysis + Email
Hacía cambios en el prompt de Retell AI. Probaba llamadas. Los cambios NO se aplicaban.
Me volvía loca pensando: "¿POR QUÉ CARAJO NO FUNCIONA?"
En Retell AI, los cambios NO se publican automáticamente. Hay versiones "Draft" vs "Published". Estaba probando la versión vieja sin darme cuenta.
Perdí 3 días probando cambios que nunca se aplicaron.
Tenía la versión 155 en Draft, pero en producción seguía corriendo la versión 148.
Lee la maldita documentación "Que no existe en ninguna parte". En serio.
Ese botón me costó 3 días de locura y lágrimas.
No asumas que las cosas funcionan como en otras plataformas.
No fui específica en las instrucciones para consultar disponibilidad y reservar citas.
Descripciones genéricas: "Book appointment" sin detalles sobre formato de fecha, zona horaria, o parámetros exactos.
Configuré la búsqueda de disponibilidad desde Retell AI en vez de N8N.
Resultado: Reservas que fallaban por formato de fecha incorrecto y horarios que no se actualizaban.
Instrucciones SÚPER específicas en la función reservar_cal:
Cuando el usuario acuerde un horario disponible, resérvalo en el calendario.
El parámetro de tiempo debe ser una fecha absoluta completa, como:
"Jueves, 2025 Mayo 15/05/2025 10 AM"
Incluso si el usuario pide una fecha relativa como "el próximo martes",
conviértela a fecha absoluta.
- El tiempo siempre debe estar EN EL FUTURO.
- Tiempo actual: {{current_time_Europe/Madrid}} (Hora de Madrid).
- Parámetro de zona horaria: "Europe/Madrid".
- Parámetro de notas: resumen de una oración de la conversación.
- Parámetro de nombre: {{user_name}}.
Moví la consulta de disponibilidad a N8N:
Las variables se actualizan dinámicamente en cada llamada con formato JSON:
{
"call_inbound": {
"override_agent_id": "agent_XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"dynamic_variables": {
"disponibilidad_mas_temprana": "martes dieciocho a las diez de la mañana o por la tarde a las cuatro de la tarde",
"consultar_disponibilidad": "Disponibilidad completa de 6 días en lenguaje natural"
}
}
}
No estructuré el flujo para ser conciso. El agente se enrollaba demasiado o entraba en bucles. GPT-4.1 tiene límites de contexto que yo no respeté.
Lo hice demasiado empático, intenté duplicarme con mi personalidad, mi forma de vender, mi forma de hablar. Elio era como yo, hablaba por los codos, era divertido, neurodivergente, pero sin sentido común: Alucinaba demasiado y de vez en cuando te cantaba un fandango.
Error: Un agente de voz para tu empresa tiene que ser consistente, persistente, y no darle posibilidad de errores.
Configuré límite máximo de 10 minutos por llamada (max_call_duration_ms: 601000).
Optimicé el prompt para ser más directo:
Estructuré etapas claras:
Dividí el conocimiento en 2 Knowledge Bases separadas en Retell AI:
Cuando Google Calendar rechazaba una reserva (horario ocupado o conflicto), Elio se quedaba en silencio.
Solo tenía programado el "happy path": cuando todo sale bien.
Error en logs: "User either already has booking at this time or is not available"
Y yo sin saber qué hacer.
Agregué una sección completa en el prompt con manejo de errores en 3 escenarios:
**PASO 5: Manejo de respuesta de reservar_cal**
**A) Si retorna ÉXITO:**
- Di: "Listo, {{user_name}}. Tu cita está confirmada para el [fecha y hora exacta], hora de Madrid. Recibirás un correo de confirmación"
**B) Si retorna ERROR de horario ocupado:**
- Di: "Disculpa, {{user_name}}, ese horario acaba de ser reservado.
Déjame consultar otros horarios disponibles..."
- Consulta {{consultar_disponibilidad}} nuevamente
- Ofrece 2 nuevas opciones
**C) Si retorna ERROR TÉCNICO:**
- Di: "Disculpa, {{user_name}}, tenemos un problema técnico.
Por favor envía un correo a citas@netelip.com"
Después de tirarlo todo a la basura, monté un stack que pudiera debuguear, controlar y escalar.
Agente 1 - Sistema completo de cualificación y reserva de citas
Agente 2 - Asistente personal del asesor con gestión de calendario
| ANTES (Roto) | DESPUÉS (Funcionando) |
|---|---|
| Google Calendar | Cal.com |
| Make (logs confusos) | n8n (debugging claro) |
| Variables estáticas | Variables dinámicas vía webhook + OpenAI |
| Cold Transfer (sin contexto) | Warm Transfer (con nombre + motivo) |
| Sin límite de duración | Máximo 10 minutos |
| Sin manejo de errores | Manejo completo (éxito, ocupado, error) |
| Botón "Publish" ignorado | Siempre publicar después de cambios |
| Stack imposible de debuguear | Stack claro y trazable |
| 1 Knowledge Base sobrecargada | 2 Knowledge Bases separadas |
| Prompt de 4.000 tokens | Prompt optimizado y modular |
Límite de 10 minutos por llamada → Evita saturación de tokens.
Variables dinámicas reales conectadas a Webhooks + OpenAI → Consulta disponibilidad en tiempo real.
Manejo de errores explícito en el prompt → Plan B, C y D para cada fallo posible.
Prompt extremadamente específico con etapas claras → Cero ambigüedad, instrucciones quirúrgicas.
En YouTube todo funciona perfecto.
En producción, TODO falla:
La realidad:
Montar un agente de voz NO es una tarde.
Son semanas de iterar, debuguear, llorar, y volver a empezar.
Por qué:
Lo que necesitas:
Google Calendar ≠ Cal.com
Make ≠ N8N
Retell AI ≠ VAPI
GPT-4.1 ≠ Gemini 3.0 Flash
No asumas que lo que funciona en una funcionará en otra.
Si el prompt no es EXTREMADAMENTE específico, el LLM hará lo que le dé la gana.
Malo: "Consulta la disponibilidad"
Bueno:
**IMPORTANTE**: NO ejecutes Knowledge Base Retrieval para consultar disponibilidad.
Usa la variable dinámica {{disponibilidad_mas_temprana}} que contiene los 2 primeros
horarios disponibles. NUNCA ofrezcas horarios que no estén en esta variable.
La diferencia entre un agente que funciona y uno que falla es cuán específico seas en cada instrucción.
No me importan las visitas a la web.
Me importa:
El teléfono es donde se cierran ventas en sectores B2B.
Si no mides tu canal telefónico, estás perdiendo dinero aunque tu web tenga 10.000 visitas al mes.
Por eso configuré post-call analysis en N8N:
Cal.com > Google Calendar (para agentes de voz)
N8N > Make (para debugging claro).
Retell AI + OpenAI + Telefonía IP sólida.
Después de cambios en Retell AI.
Verifica la versión publicada.
Espera unos segundos antes de probar.
No valores hardcodeados.
Conecta a N8n + Cal.com + OpenAI.
Valida que se actualicen en cada llamada.
Máximo 10 minutos por llamada.
Instrucciones específicas y breves.
Etapas claras sin divagaciones.
Plan B para cada función.
Escenarios de éxito, ocupado, y error técnico.
No dejes silencios incómodos.
Cada semana comparto más casos reales, errores documentados y soluciones pragmáticas desde las trincheras de la IA en producción.
CONTACTO
Estoy en las trincheras todos los días. Si tienes dudas específicas
o quieres contrastar tu approach, hablemos.
Escríbeme directo. Sin formularios. Sin intermediarios.
Si tienes proyecto, dame contexto. Si no encajamos, te lo digo.
Sigo aprendiendo a surfear la ola.
Nos vemos en las trincheras.
PD: Si esto te sirvió, compártelo. Alguien más está a punto de cometer los mismos errores que yo cometí. Ayúdales a no llorar tanto como yo lloré.