Laboratório · Projeto pessoal

Androv AI Job Hunter

Em desenvolvimento

O Androv AI Job Hunter é um projeto pessoal em desenvolvimento para reunir vagas de tecnologia, comparar seus requisitos com o perfil do candidato e apoiar a escolha das próximas oportunidades. O trabalho conecta interface, API, banco de dados e um motor de compatibilidade com critérios explícitos e resultados explicáveis.

Andamento do projeto

Etapa atual
Ampliação dos critérios de compatibilidade avaliados pelo motor — idioma, formação e certificações.
Em desenvolvimento agora
Arquitetura da avaliação de formação acadêmica no motor de compatibilidade, com decisões de regra de negócio pendentes antes de a implementação começar.
Último marco concluído
Avaliação de idioma integrada ao motor de compatibilidade.
Próximo marco previsto
Avaliação de formação acadêmica, após a definição das regras de negócio pendentes.

Atualizado em — data da última conferência contra o código e o histórico do produto, não do build ou da visita.

  1. Motor de compatibilidade determinístico e explicável — Concluído
  2. Coleta de vagas reais por API pública — Concluído
  3. Avaliação de idioma no motor — Concluído
  4. Arquitetura da avaliação de formação acadêmica — Em construção
  5. Avaliação de certificações — Planejado
  6. Calibração final dos critérios de análise — Planejado

O problema

  • Vagas de interesse ficam espalhadas por diferentes plataformas, cada uma com um formato próprio de descrever requisitos.
  • Comparar os requisitos de cada vaga com o próprio perfil é um trabalho manual, repetido a cada nova oportunidade.
  • Sem critérios explícitos, priorizar entre várias vagas se torna inconsistente.
  • O acompanhamento das candidaturas enviadas fica disperso entre e-mail, planilhas e anotações.

Como o sistema funciona

Da organização do perfil à análise das oportunidades, cada etapa indica seu estágio de desenvolvimento.

  1. 01

    Perfil do candidato

    Implementado

    Cadastro completo do candidato — competências, experiências, formação, certificações, idiomas e preferências —, editável pela interface e usado como base para toda análise de compatibilidade. Hoje suporta um único perfil; autenticação de usuário está planejada.

  2. 02

    Organização das vagas

    Implementado

    Vagas coletadas pela API pública do Greenhouse, plataforma usada por diversas empresas de tecnologia para publicar posições. Cada vaga passa por extração de requisitos, reconhecimento de tecnologias citadas e verificação de duplicidade antes de ser armazenada.

  3. 03

    Análise de compatibilidade

    Implementado

    Um motor de regras compara os requisitos da vaga com o perfil do candidato e gera uma nota de compatibilidade de 0 a 100, detalhada pelos critérios que a formaram.

  4. 04

    Priorização

    Em construção

    A nota ordena as vagas e vem acompanhada de pontos fortes e lacunas em texto, para a decisão não depender de um número isolado. A interface ainda está sendo ampliada para exibir também os critérios obrigatórios não atendidos e a cobertura de evidências por trás de cada nota.

  5. 05

    Acompanhamento das candidaturas

    Em construção

    As candidaturas já registradas podem ser consultadas em lista. Registrar uma nova candidatura e atualizar seu andamento ao longo do processo estão em desenvolvimento.

Conheça a interface

Interface atual em desenvolvimento. Dados demonstrativos.

Painel do Androv AI Job Hunter, com vagas encontradas, compatibilidade alta e uma lista de vagas recomendadas
Painel: visão geral das vagas e da compatibilidade de cada uma.

1 de 3

Testar a demo interativa

Navegue pelas telas com dados fictícios. Nada é salvo nem enviado.

Motor de compatibilidade

Compatibilidade com critérios claros

O motor de compatibilidade atual compara os requisitos de cada vaga com o perfil do candidato usando regras e pesos definidos por área — tecnologias, experiência, formação e localização, entre outros. O resultado é uma nota de 0 a 100, acompanhada dos critérios que a formaram.

Por ser baseado em regras, o resultado é explicável e reproduzível: a mesma vaga e o mesmo perfil, avaliados pela mesma versão das regras, sempre geram a mesma nota. A integração com modelos de linguagem é uma evolução planejada para o projeto, alinhada ao caminho que o nome já indica.

Tecnologias e arquitetura

Tecnologias

  • Nuxt 4

    Framework da interface, o mesmo usado neste portfólio.

  • Vue 3

    Biblioteca de componentes sobre a qual o Nuxt é construído.

  • TypeScript

    Tipagem estrita no frontend, mantendo o código consistente com o contrato esperado da API durante o desenvolvimento.

  • Tailwind CSS 4

    Estilização da interface baseada em tokens de design.

  • Python

    Linguagem do backend, usada na coleta de vagas e nas regras de compatibilidade.

  • FastAPI

    Framework que expõe a API HTTP consumida pela interface.

  • Pydantic

    Validação e tipagem dos dados na fronteira da API, na versão 2.

  • httpx

    Cliente HTTP usado para buscar vagas na API pública do Greenhouse.

  • Supabase

    PostgreSQL gerenciado, acessado via API de dados, sem camada de ORM.

  • PostgreSQL

    Banco onde perfil, vagas, análises e candidaturas são armazenados.

  • pytest

    Testes automatizados do backend, concentrados no motor de compatibilidade e na coleta de vagas.

Arquitetura

  1. Camada 1

    Interface Nuxt

    Só fala HTTP com a API. Nunca toca o banco direto.

  2. Camada 2

    API FastAPI

    Rotas finas, com validação de entrada e de saída por Pydantic.

  3. Camada 3

    Regras de negócio

    Serviços: compatibilidade, coleta de vagas, perfil, candidaturas.

  4. Camada 4

    Acesso a dados

    Repositórios: o único ponto do backend que conhece o banco.

  5. Camada 5

    Supabase · PostgreSQL

    Esquema versionado em migrations.

Representação ilustrativa da arquitetura, para explicar como as camadas se separam. Não é uma captura de tela do produto.

Estado de desenvolvimento

Já implementado

  • API em FastAPI com verificação de saúde, tratamento de erro padronizado e origens restritas.
  • Cadastro completo do perfil do candidato, usado como base para a análise de compatibilidade.
  • Motor de compatibilidade com pesos por área e regras que identificam requisitos obrigatórios não atendidos.
  • Coleta de vagas pela API pública do Greenhouse, com extração de requisitos, reconhecimento de tecnologias e verificação de duplicidade.
  • Interface com painel, vagas, análises, candidaturas, currículo e configurações.
  • Testes automatizados no backend, concentrados no motor de compatibilidade, na extração e na coleta.
  • Esquema do banco versionado em migrations, evoluído ao longo do projeto.

Em desenvolvimento

  • Ampliação das informações de análise exibidas na interface, incluindo impeditivos e cobertura das evidências.
  • Registro e atualização do andamento de candidaturas, hoje disponíveis apenas como listagem.

Planejado

  • Integração com um modelo de linguagem como funcionalidade do produto, alinhada ao caminho indicado pelo nome do projeto.
  • Coleta em outras plataformas de vagas, além do Greenhouse.
  • Autenticação de usuário, hoje limitada a um único perfil de desenvolvimento.

Decisões técnicas

Separação entre interface e backend
A interface se comunica com a API somente por HTTP. Chaves de acesso ao banco ficam restritas ao backend e nunca são expostas ao navegador.
Organização em camadas no backend
Rotas, serviços e repositórios têm responsabilidades separadas. Mudanças no motor de compatibilidade ficam contidas na camada de serviço, sem se espalhar pelas rotas.
Contratos tipados entre frontend e backend
Pydantic define o contrato na API e TypeScript o replica no frontend, reduzindo divergências entre os dois lados durante o desenvolvimento.
Motor de compatibilidade como função pura
O motor não depende de framework, banco ou tempo de execução: recebe vaga e perfil, devolve um resultado. Essa característica permite testá-lo de forma isolada, o que concentra a maior parte da cobertura de testes do projeto.
Resultados explicáveis
Cada resultado inclui os componentes que formaram a nota, além dos pontos fortes e lacunas identificados. A decisão não depende de um número isolado.
Coleta sem duplicação de vagas
A mesma vaga coletada mais de uma vez não gera registros duplicados no banco, graças ao controle de deduplicação nas migrations.

Vamos conversar sobre o projeto?

Quer conhecer as decisões de arquitetura e o desenvolvimento deste projeto? Entre em contato para conversarmos.