DEV Community

Cover image for Construí um motor ATS determinístico porque estava cansado de adivinhar por que meu currículo era rejeitado
Thalisson Damião
Thalisson Damião

Posted on

Construí um motor ATS determinístico porque estava cansado de adivinhar por que meu currículo era rejeitado

passei os últimos meses aplicando pra empresas de tech enquanto
trabalhava como dev numa empresa de construção civil. 50+
currículos. 3 rejeições automáticas. nada mais.

pedi pra um dev sênior revisar. ele disse que estava bom.

fui investigar.

a maioria das empresas médias e grandes roda os currículos num
ATS antes de qualquer humano ver. o sistema compara o texto do
seu currículo com a descrição da vaga e gera um score. abaixo
de um threshold você é arquivado automaticamente.

meu currículo tinha "PostgreSQL" e "MySQL". a vaga pedia
"bancos de dados relacionais". pra qualquer dev é a mesma coisa.
pro sistema são strings diferentes.


o motor de scoring

não queria uma IA "achando" que estava bom ou ruim. queria
métrica real.

embeddings com voyage-3-lite, cosine similarity no postgres
via pgvector com índice HNSW, mais keyword matching explícito
porque boa parte dos ATS brasileiros ainda usa sistemas simples que não entendem equivalências semânticas.

score com 5 componentes auditáveis: keywords (40pts), título
e senioridade (20pts), estrutura (20pts), experiência (15pts),
requisitos obrigatórios (5pts).


a otimização

o problema de usar LLM pra reescrever é alucinação. você pede
pra injetar "kubernetes" e ele acha um jeito mesmo que você nunca tenha tocado nisso.

solução: separar classificação de reescrita.

haiku com temperatura 0.3 analisa os gaps e identifica quais
keywords têm evidência real no currículo. pra keywords sem evidência ele gera perguntas pro usuário antes de otimizar.

sonnet recebe o currículo filtrado mais as respostas confirmadas
e faz a reescrita. o validador depois confere se cada keyword
declarada no output realmente aparece no texto. score não
melhorou, otimização rejeitada.

custo por otimização separando os dois modelos: ~$0.059.


stack: node.js 22 + fastify 5, next.js 15, supabase + pgvector,
redis + bullmq, voyage AI, anthropic API, SSE pra streaming
em tempo real, VPS hostinger 4GB.

o produto se chama kore, está em beta com plano free. se quiser discutir a arquitetura estou nos
comentários.

Top comments (0)