Sardine named a Leader in The Forrester Wave™: Financial Crime Management Solutions, Q3 2026

Learn More
Engineering
Engineering

Como construímos um sistema de detecção de candidatos falsos em 4 horas: como a Sardine combate a fraude de emprego impulsionada por IA

Kazuki Nishiura
Kazuki Nishiura
bg-image
bg-image
Como construímos um sistema de detecção de candidatos falsos em 4 horas: como a Sardine combate a fraude de emprego impulsionada por IA
Subscribe to newsletter
Share

Com a crescente popularidade dos empregos remotos e a evolução da IA, está havendo um aumento de candidatos falsos a vagas de emprego. A Gartner estima que 1 em cada 4 candidatos a vagas será falso até 2028 (!)

Este é um problema real que também estamos enfrentando hoje. Nossa equipe de recrutamento precisa gastar muito tempo revisando essas candidaturas. Foi por isso que Chandni, nossa head de talentos e pessoas, e eu decidimos unir forças para resolver esse problema.

Demonstração

Depois de 4 horas de programação, eu tinha um protótipo funcional. Eu o executei contra as candidaturas recebidas durante um dia e consegui sinalizar candidaturas suspeitas. Veja o vídeo de demonstração a seguir para entender melhor:

Arquitetura técnica

Este é o diagrama de arquitetura do sistema de duas etapas que construímos.

As duas etapas são:

  1. Triagem da candidatura: quando os candidatos se candidatam à vaga, nós os avaliamos automaticamente com base no currículo e nos dados enviados na candidatura.
  2. Triagem da entrevista. Em segundo lugar, se os candidatos passarem na triagem do currículo, capturamos informações adicionais do dispositivo quando eles clicam no link de convite para a reunião.

Vou explicar os detalhes nas seções a seguir.

__wf_reserved_inherit
__wf_reserved_inherit

Etapa 1: Triagem da candidatura

Usamos o Ashby como nosso ATS (Applicant Tracking System). O Ashby e outros ATS (como o greenhouse e o lever) fornecem webhooks para notificar sistemas de terceiros quando uma nova candidatura é criada.

Eu construí uma simples Cloud run function que ingere esses webhooks. O payload do webhook contém informações como o nome, e-mail, telefone e endereço IP do candidato. Como a Sardine já tem capacidades de prevenção de fraude de identidade, eu só precisei chamar a API existente da Sardine aqui. Usei o cursor para codificar, e como já temos um MCP que conhece nossa API, fazer vibe coding com a API da Sardine foi bem simples.

Com base nas informações coletadas durante a candidatura, a Sardine pode verificar vários sinais, incluindo:

  1. Endereço IPSe o país do endereço IP corresponde à localização da vagaSe o endereço IP é uma VPN ou proxyReputação do endereço IP
  2. E-mailSe o e-mail é novoSe o domínio do e-mail é descartável
  3. Número de telefoneSe o telefone é VOIPSe o número de telefone corresponde ao nome fornecido
  4. Recursos baseados em grafoEsse número de telefone tem muitas candidaturas?Esse endereço de e-mail tem muitas candidaturas?

Depois de obter os resultados da avaliação de risco da API da Sardine, podemos chamar a API da Ashby para anexar uma nota à candidatura do candidato.

__wf_reserved_inherit

A Sardine já possui tecnologia proprietária de inteligência de dispositivo e biometria comportamental, então minha ideia inicial foi integrar nosso SDK web à página de candidatura para capturar quaisquer sinais suspeitos de dispositivo e comportamento. No entanto, descobri que o Ashby (e muitos outros ATS) não permite incorporar JavaScript personalizado na página de candidatura. Eu poderia incorporar a página de candidatura dentro de uma página hospedada pela Sardine (onde conseguimos rastrear dados do dispositivo) via iframe, mas não há como vincular a informação (ou seja, qual sessão do frontend é vista pelo SDK da Sardine correspondente àquela candidatura específica?).

Por esse motivo, decidi trabalhar em um segundo projeto, que é uma página web simples que redireciona os candidatos para as URLs das reuniões (por exemplo, o Google Meet). Dessa forma, esse site intermediário pode capturar as informações do dispositivo do candidato com o SDK da Sardine. Usei o bolt.new para gerar uma página web estática bem simples.

__wf_reserved_inherit

Depois disso, integrar o SDK da Sardine é simples (observe que nossa documentação está disponível apenas para clientes atuais da Sardine. Se quiser conferir, entre em contato conosco!).

__wf_reserved_inherit

Usando o SDK de dispositivo da Sardine, agora podemos capturar diversas informações, como:

  • Qual é a localização real por trás do proxy?
  • A tela está sendo controlada remotamente?
  • Qual é a impressão digital do dispositivo

Esses sinais reforçam ainda mais nossas capacidades de prevenção de fraude.

Conclusão e melhorias futuras

Descobrimos que nossa tecnologia pode ser aplicada para detectar candidaturas fraudulentas usando dados reais.

Aqui estão algumas ideias adicionais para melhorias futuras:

  • Implementar uma página de candidatura hospedada para também capturar o comportamento do usuário, como copiar e colar e movimento do mouse.
  • Ingerir o PDF do currículo e verificar se é autêntico.
  • Ter uma integração nativa dentro do ATS.

Estamos empolgados com o que podemos alcançar para resolver esse problema. Se você quiser resolver o problema das candidaturas fraudulentas, entre em contato conosco!