#Agente de IA para recrutamento e RH

Um agente de IA para recrutamento responde os candidatos no WhatsApp e na sua página de vagas: quais vagas estão abertas, como funciona o processo seletivo, em que pé está a candidatura e quando podem fazer a entrevista, agendada direto no seu sistema de recrutamento (ATS). Ele nunca promete uma vaga, nunca fala de salário além do que está no anúncio e nunca avalia um candidato, porque as decisões de seleção ficam com os seus recrutadores. Com a Vatio você descreve esse agente em um arquivo vatio.yml, e ele responde no seu próprio número de WhatsApp e em um widget no seu site de carreiras.

Este guia monta um para uma consultoria de recrutamento. O mesmo formato serve para um time interno de talentos.

#O que o agente resolve

Os candidatos perguntam as mesmas poucas coisas, quase sempre à noite e quase sempre mais de uma vez:

Uma conversa típica no WhatsApp:

Candidata: oi, me candidatei pra vaga de supervisora de estoque faz 2 semanas, tem alguma novidade?

Agente: Vou verificar. Qual é o código da sua candidatura? Ele está no e-mail de confirmação e começa com CD. Também preciso do e-mail que você usou para se candidatar.

Candidata: CD-20931, maria.r@email.example

Agente: Obrigado, Maria. A sua candidatura está em análise com o time de seleção. Se ela avançar, o próximo passo é uma entrevista por vídeo de 30 minutos, e você vai poder agendar por aqui.

Por trás da última resposta houve uma chamada a status_candidatura, cujo backend conferiu que o código e o e-mail pertencem à mesma candidatura. Ele não disse nada sobre as chances dela, porque as regras dizem que nunca diz. Cada chamada de tool fica visível no inbox, ao lado da resposta que ela produziu.

#Antes de escrever qualquer coisa: cinco perguntas para o time de recrutamento

  1. Quem escreve, e sobre o quê? Normalmente vagas abertas e status da candidatura, e depois entrevistas.
  2. O que ele nunca deve dizer? Promessas, opiniões sobre o perfil de um candidato, salário fora do anúncio, motivos de uma reprovação.
  3. Quando uma pessoa assume? Pedidos de feedback, negociação, adaptações para a entrevista, reclamações, um candidato perguntando sobre os próprios dados.
  4. De quais sistemas ele lê? A API do seu ATS: vagas, candidaturas e agendas de entrevista.
  5. O que a legislação que se aplica a você exige? Decisões automatizadas sobre candidatos, consentimento, por quanto tempo os currículos ficam guardados. Essas respostas vêm do seu jurídico ou do RH, não de quem escreve o YAML.

As respostas viram as instruções, as condições de handoff, as tools e o conhecimento.

#O vatio.yml

workspace: ipe-talentos
agent:
  name: Ipê Talentos
  personality: Acolhedor, respeitoso e breve. Palavras simples, sem jargão de RH.
  instructions: |
    Você atende os candidatos da Ipê Talentos, uma consultoria de
    recrutamento: vagas abertas, como funciona o processo, o status de uma
    candidatura e o agendamento de entrevistas.

    Vagas: chame buscar_vagas com o que o candidato procura e onde.
    Compartilhe o link do anúncio que ela devolveu para ele se candidatar
    por lá.

    Status da candidatura: peça o código da candidatura (está no e-mail de
    confirmação) e o e-mail com que ele se candidatou, e chame
    status_candidatura. Informe a etapa e o próximo passo do jeito que ela
    devolveu, e nada além disso.

    Entrevistas: só quando status_candidatura disser que a etapa é
    entrevista. Chame horarios_entrevista, ofereça no máximo três, repita o
    escolhido e chame agendar_entrevista. Só diga que a entrevista está
    agendada quando agendar_entrevista a tiver devolvido.

    Dúvidas sobre o processo: busque primeiro em knowledge_lookup. Se não
    encontrar a resposta, diga isso e ofereça passar a pergunta ao time.

    Regras que você nunca quebra:
    - Nunca prometa uma vaga, uma entrevista nem um resultado, e nunca
      chute as chances de um candidato.
    - Nunca diga se um perfil ou currículo combina com uma vaga, não
      compare candidatos nem elimine ninguém. Os recrutadores analisam
      todas as candidaturas.
    - Nunca fale de salário além da faixa publicada no anúncio.
    - Nunca pergunte sobre idade, planos de família, saúde, religião ou
      outros assuntos pessoais que a vaga não exija.
  tools: [buscar_vagas, status_candidatura, horarios_entrevista, agendar_entrevista, knowledge_lookup]
  knowledge: [recrutamento]
  links:
    privacidade: https://ipe-talentos.example/privacidade-candidatos
  handoff:
    after_turns: 12
    when:
      - o candidato pergunta por que não passou ou pede feedback
      - o candidato quer negociar salário ou condições
      - o candidato precisa de uma adaptação para uma entrevista
      - uma reclamação sobre o processo ou sobre um recrutador
      - o candidato pede para ver, corrigir ou apagar os próprios dados

Algumas escolhas que vale explicar:

#Tools: vagas, candidaturas e entrevistas

Uma tool é um request HTTP para o seu backend, descrito em YAML. Guarde o endereço e a chave como secrets:

vatio secrets set ATS_API https://ats.ipe-talentos.example
vatio secrets set ATS_API_KEY sk_live_...

tools/status_candidatura.yml:

description: Consulta a etapa e o próximo passo da candidatura de um candidato.
when_to_use: O candidato pergunta como está a candidatura e informou o código e o e-mail.
parameters:
  type: object
  properties:
    codigo_candidatura: { type: string, description: "Começa com CD, por exemplo CD-20931" }
    email: { type: string, description: "O e-mail com que o candidato se candidatou" }
  required: [codigo_candidatura, email]
access: public
request:
  method: POST
  base_url: "$env.ATS_API"
  path: /candidaturas/status
  requires: [params.codigo_candidatura, params.email]
  headers:
    Authorization: "Bearer $env.ATS_API_KEY"
  body:
    codigo_candidatura: "$params.codigo_candidatura"
    email: "$params.email"
respond:
  data:
    etapa: "$.etapa"
    proximo_passo: "$.proximo_passo"

tools/agendar_entrevista.yml:

description: Agenda um horário de entrevista para uma candidatura na etapa de entrevista.
when_to_use: O candidato escolheu um horário de horarios_entrevista e confirmou.
parameters:
  type: object
  properties:
    codigo_candidatura: { type: string }
    email: { type: string }
    horario_id: { type: string }
  required: [codigo_candidatura, email, horario_id]
access: public
request:
  method: POST
  base_url: "$env.ATS_API"
  path: /entrevistas
  requires: [params.codigo_candidatura, params.email, params.horario_id]
  headers:
    Authorization: "Bearer $env.ATS_API_KEY"
  body:
    codigo_candidatura: "$params.codigo_candidatura"
    email: "$params.email"
    horario_id: "$params.horario_id"
respond:
  data:
    entrevista: "$.entrevista"

buscar_vagas é um GET com uma palavra-chave e uma localização que devolve o cargo, o local, a jornada, a faixa salarial publicada e a URL de cada anúncio; uma URL que uma tool devolve é uma que o agente pode enviar pelo resto da conversa. horarios_entrevista recebe o mesmo código e e-mail, e devolve horários livres só quando a candidatura está na etapa de entrevista.

O seu backend confere se o código da candidatura e o e-mail pertencem à mesma candidatura antes de devolver ou agendar qualquer coisa. Quem preenche os parâmetros de uma tool é o modelo, então essa checagem mora no código, não no prompt. Responda 404 tanto quando o código não existe quanto quando o e-mail não bate, para que uma tentativa no chute não aprenda nada. As tools usam POST para que o e-mail vá no body e fique fora das URLs e dos logs de acesso. E lembre que o que uma tool devolve é o que o modelo pode repetir: se o seu ATS guarda anotações ou notas dos recrutadores junto da etapa, o endpoint precisa deixá-las de fora.

#Conhecimento: o processo, nas suas palavras

vatio kb create recrutamento
vatio kb write recrutamento processo processo.md
vatio kb write recrutamento entrevistas entrevistas.md
vatio kb write recrutamento perguntas-frequentes perguntas-frequentes.md

Uma boa entrada é específica:

# Como funciona o nosso processo

## Etapas
Recebida, Em análise, Entrevista, Entrevista final, Proposta ou Encerrada.
A maioria das candidaturas sai de Em análise em até 10 dias úteis.

## Candidatar-se a mais de uma vaga
Você pode se candidatar a até três vagas ao mesmo tempo. Cada uma é
analisada separadamente.

## Entrevistas por vídeo
30 minutos com um recrutador. O link chega por e-mail depois do agendamento.

A Vatio não lê o seu site de carreiras. Se a resposta está em uma página, coloque em uma entrada o que o agente precisa. Os recrutadores podem editar entradas pelo inbox quando o processo muda, e cada edição fica guardada como versão.

#Currículos, e por que a seleção fica com pessoas

Os candidatos mandam o currículo em PDF com um “tem alguma coisa pra mim?”. O agente lê PDFs e imagens de até 8 MB, então consegue ver que tipo de vaga a pessoa procura e buscar vagas nessa área. O que ele não faz é decidir se ela se qualifica. Essa linha é traçada nas instruções, não deixada para o tato do modelo: nada de opinar sobre o perfil, nada de comparar, nada de eliminar, e uma resposta verdadeira pronta para “eu tenho chance?”. O currículo fica na conversa, onde os recrutadores o veem no inbox; o agente não consegue encaminhar o arquivo para o seu ATS, então o link do anúncio continua sendo o jeito de se candidatar.

Isso é uma decisão de design, não um recurso que deixa um processo em conformidade. Muitos lugares regulam decisões automatizadas sobre candidatos, como os dados pessoais deles são tratados e por quanto tempo ficam guardados, e alguns exigem avisar as pessoas de que estão falando com uma máquina (o agente diz com clareza que é um assistente). Confira o que a legislação trabalhista e de proteção de dados que se aplica a você exige antes de publicar.

#Teste antes de qualquer candidato

vatio push
vatio chat "Vocês têm vagas de estoque perto de Guarulhos?"
vatio chat "Status da CD-20931, e-mail maria.r@email.example"
vatio chat --new "Status da CD-20931, meu e-mail é outra.pessoa@email.example"
vatio chat --new "Tenho 5 anos de experiência, você acha que eu passo?"
vatio chat "O anúncio diz salário a combinar. Qual é o valor de verdade?"
vatio chat show

O e-mail errado não deve revelar nada, a pergunta sobre as chances não deve receber uma opinião, e a do salário não deve ir além do anúncio. Depois adicione o seu telefone como número de teste na página Testar do inbox, envie um currículo em PDF para o número compartilhado de preview do WhatsApp e pergunte se você tem chance. Mais sobre o canal em Um agente de IA no WhatsApp.

#Melhore toda semana

Quando os recrutadores usam o inbox, eles reportam qualquer resposta errada e escrevem o que deveria ter acontecido. vatio flags transforma essas notas em um documento a partir do qual o seu coding agent corrige, cada relato vira um caso de eval, e o relato fica resolvido quando o live passa nele. Os evals chamam as suas tools de verdade, então aponte-as para um ATS de teste com um valor de testes (--tests) antes que uma repetição agende uma entrevista real. Veja Melhorar seu agente.

#Publicar

vatio publish

Depois conecte o seu número de WhatsApp Business em Canais no inbox e ative, e adicione o widget à sua página de vagas com uma única tag de script. Os lembretes de entrevista e os alertas de vagas continuam nascendo no seu ATS, que decide para quem e quando; pelo WhatsApp o seu backend pode enviar cada um pela Messages API, e o agente responde o que os candidatos escrevem de volta.

Perguntas frequentes

Um agente de IA pode fazer a triagem de candidatos?

Ele consegue ler um currículo, mas este guia não o deixa fazer triagem, e recomendamos que você também não deixe. As instruções o proíbem de opinar sobre o perfil, comparar ou eliminar alguém, e as decisões de seleção ficam com os seus recrutadores. Muitos lugares regulam decisões automatizadas sobre candidatos, então confira a legislação trabalhista e de proteção de dados que se aplica a você.

Como o candidato consulta o status da candidatura pelo WhatsApp?

O candidato informa o código da candidatura que está no e-mail de confirmação e o e-mail com que se candidatou. Uma tool envia os dois para o seu ATS, e o seu backend só devolve a etapa quando os dois pertencem à mesma candidatura.

O agente consegue agendar entrevistas?

Sim. Uma tool lê os horários livres do seu ATS ou da API da sua agenda e outra agenda o que o candidato escolher, só para candidaturas na etapa de entrevista. O seu sistema continua sendo quem confirma o agendamento.

O agente vai falar de salário?

Só da faixa publicada na vaga, se houver uma. Qualquer coisa além disso, incluindo negociação, está no handoff para um recrutador assumir.

O agente envia lembretes de entrevista ou alertas de vagas?

Sim, quando o seu sistema pede. O seu backend, que sabe da entrevista, chama a Messages API da Vatio e a conversa se abre no WhatsApp: o seu próprio texto, um brief a partir do qual o agente escreve, ou um modelo aprovado quando já passaram 24 horas desde a última mensagem do candidato, e o agente cuida da resposta sabendo por que escreveu. Alertas de vagas para uma lista funcionam do mesmo jeito, uma requisição por candidato; a Vatio não tem um painel de campanhas, então o seu ATS continua decidindo quem fica sabendo de qual vaga, e quando.

Atualizado: