#Agente de IA para reclutamiento y RR. HH.
Un agente de IA para reclutamiento responde a los candidatos por WhatsApp y en tu página de empleos: qué vacantes hay, cómo funciona el proceso, en qué va su postulación y cuándo pueden tener la entrevista, agendada directo en tu sistema de seguimiento de candidatos (ATS). Nunca promete un puesto, nunca habla de sueldo más allá de lo que dice el aviso y nunca evalúa a un candidato, porque las decisiones de selección quedan en manos de tus reclutadores. Con Vatio describes ese agente en un archivo vatio.yml, y responde desde tu propio número de WhatsApp y en un widget en tu sitio de empleos.
Esta guía construye uno para una consultora de reclutamiento. La misma forma sirve para un equipo de selección interno.
#Qué resuelve el agente
Los candidatos preguntan las mismas pocas cosas, casi siempre de noche y casi siempre más de una vez:
- Vacantes. «¿Tienen algo en logística cerca de Quilicura?». El agente busca entre las vacantes y envía el link del aviso.
- Estado de la postulación. El candidato da su código de postulación y su correo, y el agente le dice la etapa y el siguiente paso.
- Agenda de entrevistas. Para postulaciones en etapa de entrevista, ofrece horarios libres y agenda el que el candidato elige.
- El proceso. Cuántas etapas hay, cuánto dura cada una, qué llevar, si puede postular a dos cargos.
- Todo lo demás va a una persona. Retroalimentación tras un rechazo, negociación de sueldo, ajustes para la entrevista, reclamos.
Una conversación típica por WhatsApp:
Candidata: hola, postulé al cargo de supervisora de bodega hace 2 semanas, ¿hay alguna novedad?
Agente: Déjame revisar. ¿Cuál es tu código de postulación? Está en el correo de confirmación y empieza con PO. También necesito el correo con el que postulaste.
Candidata: PO-20931, maria.r@correo.example
Agente: Gracias, María. Tu postulación está en revisión con el equipo de selección. Si avanza, el siguiente paso es una entrevista por video de 30 minutos, y la vas a poder agendar por aquí.
Detrás de la última respuesta hubo una llamada a estado_postulacion, cuyo backend verificó que el código y el correo corresponden a la misma postulación. No dijo nada sobre sus posibilidades, porque las reglas dicen que nunca lo hace. Cada llamada a una tool queda visible en el inbox, junto a la respuesta que produjo.
#Antes de escribir nada: cinco preguntas para el equipo de reclutamiento
- ¿Quién escribe y para qué? Normalmente vacantes y estado de la postulación, y después entrevistas.
- ¿Qué no debe decir nunca? Promesas, opiniones sobre el perfil de un candidato, sueldos fuera del aviso, motivos de un rechazo.
- ¿Cuándo toma la conversación una persona? Pedidos de retroalimentación, negociación, ajustes para la entrevista, reclamos, un candidato que pregunta por sus datos.
- ¿De qué sistemas lee? La API de tu ATS: avisos, postulaciones y agendas de entrevista.
- ¿Qué exige la normativa que te aplica? Decisiones automatizadas sobre candidatos, consentimiento, cuánto tiempo se guardan los CV. Esas respuestas vienen de tu equipo legal o de RR. HH., no de quien escribe el YAML.
Las respuestas se convierten en las instrucciones, las condiciones de handoff, las tools y el conocimiento.
#El vatio.yml
workspace: talento-alerce
agent:
name: Talento Alerce
personality: Cálido, respetuoso y breve. Palabras simples, sin jerga de RR. HH.
instructions: |
Respondes a los candidatos de Talento Alerce, una consultora de
reclutamiento: vacantes, cómo funciona el proceso, el estado de una
postulación y la agenda de entrevistas.
Vacantes: llama a buscar_vacantes con lo que busca el candidato y
dónde. Comparte el link del aviso que devolvió para que postule ahí.
Estado de la postulación: pide el código de postulación (está en el
correo de confirmación) y el correo con el que postuló, y llama a
estado_postulacion. Da la etapa y el siguiente paso tal como los
devolvió, y nada más.
Entrevistas: solo cuando estado_postulacion diga que la etapa es
entrevista. Llama a horarios_entrevista, ofrece como máximo tres,
repite el elegido y llama a agendar_entrevista. Solo di que la
entrevista quedó agendada cuando agendar_entrevista la haya devuelto.
Preguntas sobre el proceso: busca primero en knowledge_lookup. Si no
encuentras la respuesta, dilo y ofrece pasarle la pregunta al equipo.
Reglas que nunca rompes:
- Nunca prometas un puesto, una entrevista ni un resultado, y nunca
adivines las posibilidades de un candidato.
- Nunca digas si un perfil o un CV calza con un cargo, no compares
candidatos ni descartes a nadie. Los reclutadores revisan cada
postulación.
- Nunca hables de sueldo más allá del rango publicado en el aviso.
- Nunca preguntes por edad, planes familiares, salud, religión ni otros
temas personales que el aviso no exija.
tools: [buscar_vacantes, estado_postulacion, horarios_entrevista, agendar_entrevista, knowledge_lookup]
knowledge: [reclutamiento]
links:
privacidad: https://talento-alerce.example/privacidad-candidatos
handoff:
after_turns: 12
when:
- el candidato pregunta por qué no quedó o pide retroalimentación
- el candidato quiere negociar sueldo o condiciones
- el candidato necesita un ajuste para una entrevista
- un reclamo sobre el proceso o sobre un reclutador
- el candidato pide ver, corregir o eliminar sus datos
Algunas decisiones que vale la pena explicar:
- «Los reclutadores revisan cada postulación». La regla también es la respuesta. Cuando un candidato pregunta «¿estoy a la altura?», el agente tiene algo cierto que decir en vez de una opinión.
- «Tal como los devolvió, y nada más». Un agente que suaviza «no seleccionado» en «todavía en evaluación» hizo una promesa a tu nombre. Las etapas son palabras que eligió tu equipo; el agente las repite.
- El sueldo es el rango del aviso o nada. Si el aviso dice «a convenir», el agente dice lo mismo y la pregunta va a un reclutador.
- El horario de atención decide qué pasa después de una derivación. Se configura en la página Negocio del inbox: lunes a jueves de 9:00 a 18:00 y viernes de 9:00 a 17:00. Dentro del horario el agente se queda en silencio para que un reclutador tome la conversación. Fuera de él sigue ayudando y dice que el equipo responderá el siguiente día hábil. Vatio todavía no avisa a nadie de una derivación; la conversación aparece como en espera en el inbox. Mira Humano en el loop.
#Tools: vacantes, postulaciones y entrevistas
Una tool es un request HTTP a tu backend, descrito en YAML. Guarda la dirección y la llave como secrets:
vatio secrets set ATS_API https://ats.talento-alerce.example
vatio secrets set ATS_API_KEY sk_live_...
tools/estado_postulacion.yml:
description: Obtiene la etapa y el siguiente paso de la postulación de un candidato.
when_to_use: El candidato pregunta cómo va su postulación y dio el código de postulación y el correo.
parameters:
type: object
properties:
codigo_postulacion: { type: string, description: "Empieza con PO, por ejemplo PO-20931" }
correo: { type: string, description: "El correo con el que postuló el candidato" }
required: [codigo_postulacion, correo]
access: public
request:
method: POST
base_url: "$env.ATS_API"
path: /postulaciones/estado
requires: [params.codigo_postulacion, params.correo]
headers:
Authorization: "Bearer $env.ATS_API_KEY"
body:
codigo_postulacion: "$params.codigo_postulacion"
correo: "$params.correo"
respond:
data:
etapa: "$.etapa"
siguiente_paso: "$.siguiente_paso"
tools/agendar_entrevista.yml:
description: Agenda un horario de entrevista para una postulación en etapa de entrevista.
when_to_use: El candidato eligió un horario de horarios_entrevista y lo confirmó.
parameters:
type: object
properties:
codigo_postulacion: { type: string }
correo: { type: string }
horario_id: { type: string }
required: [codigo_postulacion, correo, horario_id]
access: public
request:
method: POST
base_url: "$env.ATS_API"
path: /entrevistas
requires: [params.codigo_postulacion, params.correo, params.horario_id]
headers:
Authorization: "Bearer $env.ATS_API_KEY"
body:
codigo_postulacion: "$params.codigo_postulacion"
correo: "$params.correo"
horario_id: "$params.horario_id"
respond:
data:
entrevista: "$.entrevista"
buscar_vacantes es un GET con una palabra clave y una ubicación que devuelve el cargo, el lugar, la jornada, el rango de sueldo publicado y la URL de cada aviso; una URL que devuelve una tool es una que el agente puede enviar durante el resto de la conversación. horarios_entrevista recibe el mismo código y correo, y devuelve horarios libres solo cuando la postulación está en etapa de entrevista.
Tu backend verifica que el código de postulación y el correo correspondan a la misma postulación antes de devolver o agendar nada. Los parámetros de una tool los llena el modelo, así que esa verificación vive en código, no en el prompt. Responde 404 tanto si el código no existe como si el correo no coincide, para que un intento al azar no aprenda nada. Las tools usan POST para que el correo viaje en el body y quede fuera de las URL y de los logs de acceso. Y recuerda que lo que devuelve una tool es lo que el modelo puede repetir: si tu ATS guarda notas o puntajes de los reclutadores junto a la etapa, el endpoint tiene que dejarlos fuera.
#Conocimiento: el proceso, en tus palabras
vatio kb create reclutamiento
vatio kb write reclutamiento proceso proceso.md
vatio kb write reclutamiento entrevistas entrevistas.md
vatio kb write reclutamiento preguntas-frecuentes preguntas-frecuentes.md
Una buena entrada es específica:
# Cómo funciona nuestro proceso
## Etapas
Recibida, En revisión, Entrevista, Entrevista final, Oferta o Cerrada. La
mayoría de las postulaciones sale de En revisión en 10 días hábiles.
## Postular a más de un cargo
Puedes postular a hasta tres vacantes a la vez. Cada una se revisa por
separado.
## Entrevistas por video
30 minutos con un reclutador. El link te llega por correo después de agendar.
Vatio no lee tu sitio de empleos. Si la respuesta está en una página, pon en una entrada lo que el agente necesita. Los reclutadores pueden editar entradas desde el inbox cuando cambia el proceso, y cada edición queda guardada como versión.
#Los CV, y por qué la selección queda en manos de personas
Los candidatos mandan su CV en PDF con un «¿hay algo para mí?». El agente lee PDF e imágenes de hasta 8 MB, así que puede ver a qué tipo de cargo apunta la persona y buscar vacantes en esa área. Lo que no hace es decidir si califica. Esa línea se traza en las instrucciones, no se deja al tacto del modelo: nada de opinar sobre el perfil, nada de comparar, nada de descartar, y una respuesta cierta lista para «¿estoy a la altura?». El CV queda en la conversación, donde los reclutadores lo ven en el inbox; el agente no puede reenviar el archivo a tu ATS, así que el link del aviso sigue siendo la forma de postular.
Esto es una decisión de diseño, no una función que deje un proceso en regla. En muchos lugares se regulan las decisiones automatizadas sobre candidatos, cómo se tratan sus datos personales y cuánto tiempo se guardan, y en algunos se exige avisar a las personas que están hablando con una máquina (el agente dice con claridad que es un asistente). Revisa lo que exige la normativa laboral y de protección de datos que te aplica antes de publicar.
#Pruébalo antes que cualquier candidato
vatio push
vatio chat "¿Tienen vacantes de bodega cerca de Quilicura?"
vatio chat "Estado de PO-20931, correo maria.r@correo.example"
vatio chat --new "Estado de PO-20931, mi correo es otra.persona@correo.example"
vatio chat --new "Tengo 5 años de experiencia, ¿crees que voy a quedar?"
vatio chat "El aviso dice sueldo a convenir. ¿Cuál es el número real?"
vatio chat show
El correo equivocado no debe revelar nada, la pregunta por las posibilidades no debe recibir una opinión, y la del sueldo no debe ir más allá del aviso. Después agrega tu teléfono como número de prueba en la página Probar del inbox, envía un CV en PDF al número compartido de preview de WhatsApp y pregunta si estás a la altura. Más sobre el canal en Un agente de IA en WhatsApp.
#Que mejore cada semana
Cuando los reclutadores usan el inbox, marcan cualquier respuesta que estuvo mal y escriben lo que debió pasar. vatio flags convierte esas notas en un documento desde el cual tu coding agent corrige, cada flag se vuelve un caso de eval, y el flag queda marcado como resuelto cuando live lo pasa. Los evals llaman a tus tools de verdad, así que apúntalas a un ATS de prueba con un valor de pruebas (--tests) antes de que una repetición agende una entrevista real. Mira Mejorar tu agente.
#Publicar
vatio publish
Después conecta tu número de WhatsApp Business desde Canales en el inbox y actívalo, y agrega el widget a tu página de empleos con un solo script. Los recordatorios de entrevista y las alertas de empleo siguen naciendo en tu ATS, que decide a quién y cuándo; por WhatsApp tu backend puede enviar cada uno con la Messages API, y el agente responde lo que los candidatos escriben de vuelta.
Preguntas frecuentes
¿Un agente de IA puede filtrar candidatos?
Puede leer un CV, pero esta guía no lo deja filtrar, y te recomendamos lo mismo. Las instrucciones le prohíben opinar sobre el perfil, comparar o descartar a nadie, y las decisiones de selección quedan en manos de tus reclutadores. En muchos lugares se regulan las decisiones automatizadas sobre candidatos, así que revisa la normativa laboral y de protección de datos que te aplica.
¿Cómo revisa un candidato el estado de su postulación por WhatsApp?
El candidato da el código de postulación que aparece en su correo de confirmación y el correo con el que postuló. Una tool envía ambos a tu ATS, y tu backend solo devuelve la etapa cuando los dos corresponden a la misma postulación.
¿El agente puede agendar entrevistas?
Sí. Una tool lee los horarios libres de tu ATS o de la API de tu calendario y otra agenda el que elige el candidato, solo para postulaciones en etapa de entrevista. Tu sistema sigue siendo el que confirma la reserva.
¿El agente va a hablar de sueldo?
Solo del rango publicado en el aviso, si hay uno. Todo lo demás, incluida la negociación, está en handoff para que lo tome un reclutador.
¿El agente envía recordatorios de entrevista o alertas de empleo?
Sí, cuando tu sistema los pide. Tu backend, que conoce la entrevista, llama a la Messages API de Vatio y la conversación se abre por WhatsApp: tu propio texto, un brief a partir del cual escribe el agente, o una plantilla aprobada si pasaron más de 24 horas desde el último mensaje del candidato, y el agente atiende la respuesta sabiendo por qué escribió. Las alertas de empleo a una lista funcionan igual, una solicitud por candidato; Vatio no tiene un panel de campañas, así que tu ATS sigue decidiendo quién se entera de qué vacante, y cuándo.
Actualizado: