Candidatus
Quem procura o primeiro emprego em tecnologia não precisa de mais um gerador de currículo. Precisa saber qual vaga vale a candidatura, e por quê.
- papel
- cofundador · app e crawler
- período
- jun 2025 – hoje
- contexto
- TCC · Engenharia de Software, FAG
- status
- em desenvolvimento, ainda não está no ar
- código
- privado
- Next.js
- TypeScript
- Python
- FastAPI
01O problema
Começou como um ajustador de currículo para passar no filtro de ATS. Conversando com quem usava, o problema real apareceu antes: escolher a vaga.
antesum ajustador de currículo para passar no filtro de ATS
- recomendação de vagas
- material por vaga
- preparo para entrevista
- trilha de estudo
Quem procura o primeiro emprego em tecnologia manda currículo para tudo e não sabe por que não volta nada.
Hoje o Candidatus é um copiloto de carreira: recomendação de vagas, material por vaga, preparo para entrevista e trilha de estudo.
02 · Arquitetura
Arquitetura.
Da vaga crua à recomendação explicada. Em azul, os dois lugares onde a IA entra, e os limites dela.
03 · Motor
O motor de recomendação.
Cinco estágios, cada um apoiado em pesquisa publicada. Ele é o tema do nosso TCC em Engenharia de Software.
Filtros duros eliminam o que não serve. Cinco similaridades medem o resto. A de habilidades usa TF-IDF com cobertura de mão única (o quanto você cobre do que a vaga pede, e não o contrário), lista de sinônimos e tolerância conservadora a erro de digitação. A soma é ponderada, e o peso de um campo ausente é redistribuído entre os outros, em vez de punir quem não preencheu.
No fim, diversificação por MMR, para o topo da lista não ser dez vagas iguais, e uma explicação de por que cada vaga deu match.
pesos da soma ponderada
- habilidades0,45
- nível0,20
- modalidade0,15
- salário0,10
- recência0,10
04 · Decisões
O que eu decidi.
-
IA só no campo que falta.
O crawler lê 22 fontes, de APIs de ATS a dados estruturados embutidos em páginas. A regra extrai primeiro; um modelo pequeno preenche só o campo vazio. O hash de conteúdo evita pagar duas vezes pela mesma vaga. O custo fica em um dígito de dólar por mês.
-
Melhor nulo que errado.
A IA nunca extrai salário. Um salário inventado custa mais confiança do que um campo vazio.
-
Sincronizar sem acoplar.
O app lê o banco do crawler em modo leitura, pega só o que é mais novo que a última sincronização e faz upsert por URL. Rodar de novo é seguro. O crawler avisa quando termina; um cron de 6 horas é a reserva.
-
Uma camada para 14 capacidades de IA.
Avaliar currículo, decodificar vaga, montar resposta STAR, simular entrevista, auditar LinkedIn. Cada capacidade declara schema de entrada, construtor de prompt e schema de saída. Um executor único valida, escolhe o modelo pelo plano do usuário, chama o provedor, revalida e tenta de novo uma vez com o erro de validação como contexto.
-
Sessão que se defende.
Token de acesso de 15 minutos e sessão de refresh rotativa. Se um refresh é reutilizado, todas as sessões daquele usuário caem.
05 · Resultado
Em números.
22
fontes de vaga no crawler
14
capacidades de IA atrás de um executor só
5
estágios no motor de recomendação
349
arquivos de teste no app
Sobre este caso
- Ainda não está no ar, então não tem link nem print.
- Feito com o Pedro, meu sócio. Eu escrevi cerca de 90% do código do app e o crawler.
stack completa · código privado
- Next.js 15
- TypeScript
- Prisma
- PostgreSQL
- Stripe
- Python
- FastAPI
- SQLAlchemy
- Playwright