Clasificando mensajes de RR. HH. en WhatsApp con un router agent.
Nuestra mayor victoria en GoPeople no fue una respuesta más inteligente — fue un router más inteligente. Separamos la clasificación de intent de la respuesta para que cada agent siga siendo barato e inspeccionable.
Equipo GoPeople
RR. HH. en WhatsApp

Cuando lanzamos GoPeople construimos un único agent grande que leía el mensaje, descubría qué quería el empleado y lo respondía. Era ingenioso. También era caro, lento e imposible de auditar. Dividir ese único agent en un router barato y un pequeño zoológico de agents de workflow nos devolvió el presupuesto de latencia — y le dio a RR. HH. un log real de lo que hicimos.
Un cerebro es demasiados cerebros
El agent todo-en-uno usaba un modelo de gama alta en cada turno, incluso para mensajes como ‘sí’ o ‘bana izin günü kaldı mı?’. También fusionaba dos trabajos completamente distintos: decidir qué tipo de petición es y atender esa petición. Esos quieren prompts diferentes, herramientas diferentes y perfiles de costo muy diferentes.
El router agent
Nuestro router agent es un modelo pequeño y rápido que hace una sola cosa: clasificar el mensaje en uno de N intents. Devuelve una etiqueta y una confianza. Si la confianza está por debajo de un umbral, el orchestrator escala a un agent de aclaración — nunca a un agent de workflow. Los agents de workflow solo ven intents ya clasificados.
// Router output is a value, not a sentence.
type Intent =
| "leave.request"
| "leave.balance"
| "payroll.payslip"
| "doc.request"
| "policy.lookup"
| "smalltalk"
| "unknown";
const { intent, confidence } = await router.classify(message);
if (confidence < 0.6) return clarify(message);
return workflow[intent].run(message, ctx);Por qué este patrón de routing gana
- El router es barato. Podemos permitirnos llamarlo en cada mensaje, incluso ‘ok’.
- Los agents de workflow son más tontos. No necesitan dudar del intent — esa decisión está río arriba.
- La aclaración tiene su propio agent. No contaminamos los prompts de solicitud de licencia con ‘quizás pregúntale al usuario qué quiso decir’.
- La auditoría es trivial. El log de auditoría muestra el intent, no solo la respuesta, así RR. HH. sabe qué creyó el sistema que estábamos haciendo.
Multi-tenancy en el router
Los holdings suelen operar varias subempresas bajo un mismo número de WhatsApp. La primera decisión que toma el router no es el intent — es el tenant. Clasificamos al empleado contra el directorio antes de correr el clasificador de intent. Así, las políticas, balances de licencias y consultas de nómina de cada subempresa quedan aisladas por construcción.
Qué medimos
Tras pasar al patrón de router, nuestro costo promedio por mensaje cayó ~3,4x, y la tasa de auto-clasificación de RR. HH. superó el 94%. Los casos extremos siguen escalando a un humano, pero el humano ahora ve la mejor conjetura del sistema — está revisando, no rehaciendo.
“El modelo más grande no es un router. El router es el modelo más pequeño, más barato y más rápido.”