Jobscope
Rastreador de candidaturas que transforma um link de vaga em dados acionáveis: um pipeline assíncrono na AWS lê a página, extrai as skills exigidas e cruza com o seu currículo para mostrar o gap entre o que o mercado pede e o que você tem.
O Contexto e o Desafio
A busca por emprego é cega: você aplica para dezenas de vagas sem saber quais skills se repetem no mercado que está mirando, e adaptar o currículo para cada vaga à mão é caro demais para ser viável. O Jobscope resolve isso invertendo o fluxo — você cola a URL da vaga e um pipeline assíncrono lê a página, identifica empresa e cargo e extrai as skills exigidas. Ao enviar seu currículo, o dashboard cruza o que o mercado pede com o que você tem.
O desafio técnico foi rodar tudo isso 100% serverless, com a infraestrutura inteira versionada como código e custo mensal zero, dentro do free tier da AWS.
Destaques Técnicos e Engenharia
O diferencial do projeto não está no CRUD, mas na engenharia ao redor: extração via LLM sem scraper, processamento fora do caminho da requisição e uma infraestrutura inteira definida em código, com deploy automático sem chaves de acesso.
Intake por URL
Você cola o link e o modelo (Google Gemini com url_context) busca e lê a própria página da vaga — não há scraper para manter nem formulário para preencher. O currículo em PDF é lido nativamente pelo mesmo pipeline e vira um perfil estruturado: nome, cargo, localização e skills.
Pipeline Assíncrono
Tanto a vaga quanto o currículo são processados fora do caminho da requisição via SQS + Lambda, com DLQ e partial batch failures para retries seguros. A UI responde imediatamente e os resultados vão preenchendo conforme chegam. O upload do currículo vai por presigned PUT direto para o S3, sem passar pelo API Gateway.
Dashboard de Skill Gap
As skills pedidas pelas vagas são cruzadas com o seu perfil: o que você tem, o que falta ranqueado pela frequência com que o mercado pede, um score de aderência por vaga e as skills que você domina e ninguém pede.
cv-maker
Gera currículo e carta de apresentação escritos para uma vaga específica, selecionando conteúdo de um perfil-mestre — nada inventado, para que toda afirmação sobreviva à entrevista. Ambos respeitam regras de ATS e o limite de uma página, com preview A4 lado a lado mostrando a ocupação real da página medida pelo navegador e um relatório de cobertura do que entrou, do que faltou e do que foi cortado.
Infraestrutura 100% Código
Toda a stack é AWS CDK em TypeScript: CloudFront + S3 privado (OAC), API Gateway HTTP API, Lambda em Node 22 e DynamoDB single-table on-demand. Um comando sobe tudo. Custo mensal: zero, dentro do free tier da AWS e do Gemini.
CI/CD sem Chaves de Acesso
O deploy é automático via GitHub Actions assumindo uma role IAM por OIDC — nenhuma credencial guardada no repositório. Isso rendeu um bug de produção real: o subject claim do OIDC do GitHub embute IDs numéricos, e a trust policy só passou a casar depois de ser escopada para a forma com IDs, diagnosticada via CloudTrail.
Próximos Passos
O aplicativo hoje é single-user. As próximas etapas abrem a plataforma para mais gente sem mudar a arquitetura.
Autenticação e Multiusuário
Integração com Amazon Cognito para login e suporte a múltiplos usuários, cada um com seu perfil e suas candidaturas.
LLM Intercambiável
O módulo de extração é agnóstico de provedor: trocar o Google Gemini por Amazon Bedrock não exige mudanças no resto da stack.
