Projetoscaso 04 / 05 · software house · engenharia

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

hojeum copiloto de carreira
  • 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.

Arquitetura do CandidatusO crawler lê 22 fontes de vaga, faz parse por regra, a IA preenche só campos faltantes e grava no Postgres do crawler; uma sincronização incremental leva as vagas ao app; o motor de recomendação cruza vagas e perfil em cinco estágios: filtros duros, cinco similaridades, soma ponderada, diversificação e explicação.22 fontes de vagaATS · páginas · feedsparse por regradado estruturado primeiroIA só no que faltasalário: nuncaPostgres do crawlerhash de conteúdosync incrementalleitura · upsert por URLperfil do candidatocurrículo · preferênciasmotor de recomendação · 5 estágiosfiltros duroso que elimina5 similaridadesTF-IDF + sinônimossoma ponderada0,45 · 0,20 · 0,15 …diversificaçãoMMRexplicaçãopor que deu matchcada estágio apoiado em pesquisa publicada · tema do TCC

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

  1. habilidades0,45
  2. nível0,20
  3. modalidade0,15
  4. salário0,10
  5. recência0,10
Campo ausente: o peso dele é redistribuído entre os outros.

04 · Decisões

O que eu decidi.

  1. 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.

  2. Melhor nulo que errado.

    A IA nunca extrai salário. Um salário inventado custa mais confiança do que um campo vazio.

  3. 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.

  4. 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.

  5. 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