Pitch: Criei o ApplyWell: um gerenciador de candidaturas com React, Spring Boot e integração com IA via MCP
Durante a busca por uma nova oportunidade, percebi que acompanhar candidaturas rapidamente vira uma mistura de planilhas, mensagens no LinkedIn, e-mails, lembretes e a inevitável dúvida:
“Eu já me candidatei para essa vaga ou apenas salvei para ver depois?”
Para resolver esse problema, comecei a desenvolver o ApplyWell, uma aplicação open source para organizar todo o processo de busca por emprego.
O que o projeto faz?
O ApplyWell permite:
- Registrar e acompanhar candidaturas;
- Organizar vagas por status;
- Visualizar candidaturas em tabela, cards ou board;
- Controlar entrevistas, próximos passos e follow-ups;
- Identificar tarefas atrasadas;
- Arquivar candidaturas encerradas;
- Consultar métricas e taxas de conversão;
- Exportar os dados em JSON ou CSV (A ser feito: https://github.com/vitorhugo-dotnet/SpringBoot-JobApplyTracker/issues/66);
- Acompanhar XP, níveis, sequências e conquistas.
Incluí gamificação porque procurar emprego já é cansativo o bastante. Pelo menos agora cada candidatura rende XP antes de render ghosting.
Integração com IA usando MCP
O principal diferencial técnico do projeto é o servidor Model Context Protocol, implementado no backend com Spring AI.
Com isso, clientes compatíveis com MCP podem interagir com a aplicação em nome do usuário para:
- Registrar novas candidaturas;
- Atualizar status;
- Consultar vagas recentes;
- Identificar próximos passos e processos atrasados;
- Resumir o pipeline;
- Consultar métricas e gamificação;
- Acessar documentos profissionais armazenados no Google Drive;
- Auxiliar na criação de currículos adaptados para cada vaga.
A autenticação utiliza OAuth2 Authorization Code com PKCE. O MCP reutiliza o mesmo modelo de autenticação, autorização, usuários e regras de negócio da API REST, sem criar um sistema paralelo cheio de tokens estáticos esperando para virar um incidente de segurança.
- Um exemplo de utilização através do Claude Web: https://www.linkedin.com/posts/hugo-java_java-springboot-springai-ugcPost-7468838776769916928-ZAHJ/?utm_source=share&utm_medium=member_android&rcm=ACoAADRX9zkBRK7QDTzmu3G2XwF_LgqDNFj_am8
Stack do frontend
- React 19;
- TypeScript em modo strict;
- Vite;
- React Router;
- Tailwind CSS;
- Zustand;
- Axios com refresh token single-flight;
- React Hook Form;
- Playwright para testes E2E.
A interface segue um design monocromático inspirado em ferramentas como Notion e Vercel, priorizando legibilidade e poucos elementos decorativos.
Stack do backend
- Java 21;
- Spring Boot 3.5;
- Spring Security;
- OAuth2 Authorization Server;
- JWT e refresh token com rotação;
- Spring AI MCP Server;
- MariaDB;
- Flyway;
- Resilience4j;
- Testcontainers;
- JUnit, Mockito, MockMvc e RestAssured;
- Docker e GitHub Actions.
O projeto ainda está evoluindo, principalmente nas integrações com IA, automação de currículos e experiência de uso.
Os dois repositórios estão disponíveis no GitHub:
- Frontend: https://github.com/vitorhugo-dotnet/React-JobApplyTracker
- Backend: https://github.com/vitorhugo-dotnet/SpringBoot-JobApplyTracker
Feedbacks sobre arquitetura, segurança, experiência do usuário, MCP ou ideias para novas funcionalidades são muito bem-vindos.
Também espero que o projeto seja útil para outras pessoas que estejam tentando transformar o caos da procura por emprego em algo minimamente organizado.