El problema
Lina ya estaba en uso, pero el sistema era difícil de dirigir. La orquestación no-code permitía avanzar rápido al principio, aunque cada ajuste de comportamiento quedaba mezclado entre prompts, automatizaciones y supuestos implícitos.
Cuando un agente conversa con clientes reales por WhatsApp, la diferencia entre demo y producción aparece en los bordes: contexto incompleto, respuestas ambiguas, cambios de intención y estados que sobreviven más de un mensaje.
La decisión
La migración se planteó como un cambio de propiedad del sistema. El objetivo no era “usar más IA”, sino separar responsabilidades: recuperación de contexto, estado conversacional, reglas de negocio, generación de respuestas y observabilidad.
Python y LangChain dieron una base más explícita para construir el flujo. RAG permitió traer información relevante sin depender de un prompt gigante, y la persistencia de estado hizo posible entender por qué el agente tomaba una decisión.
Trade-offs
El costo fue aceptar más ingeniería propia: despliegue, logs, manejo de errores y contratos internos. La ganancia fue poder operar el agente como un producto, no como una automatización difícil de auditar.
La migración tuvo que cuidar la continuidad. No había margen para “apagar y reescribir”; el sistema nuevo debía convivir con usuarios reales y absorber tráfico de forma gradual.
Resultado
Lina quedó como un agente más controlable: cada etapa del flujo podía observarse, cada respuesta podía rastrearse y cada mejora podía aplicarse sobre una arquitectura propia.
La lección principal fue que un agente productivo no se define por el modelo que usa, sino por el sistema que lo contiene.