1. Visão Geral e Arquitetura da Ferramenta
1.1. Propósito do Negócio
O CurriculoATSPro é uma aplicação web projetada para resolver um problema central no mercado de trabalho moderno: a dificuldade que muitos profissionais têm em criar currículos que sejam não apenas visualmente atraentes, mas também otimizados para passar pelos Sistemas de Rastreamento de Candidatos (ATS - Applicant Tracking Systems).
A ferramenta funciona como um assistente de carreira inteligente, guiando o usuário através de um processo estruturado de coleta de dados e utilizando Inteligência Artificial para analisar, sugerir melhorias e, finalmente, gerar um currículo profissional pronto para o mercado.
1.2. Infraestrutura e Tecnologias
A aplicação é construída sobre uma pilha de tecnologias Python robusta e moderna, focada em escalabilidade e manutenibilidade.
-
Backend (Lógica do Servidor):
- Framework:
Flask, um microframework Python leve e poderoso, ideal para construir aplicações web de forma rápida e organizada. - Banco de Dados:
SQLAlchemy(como ORM) comSQLite(para desenvolvimento) eFlask-Migratepara gerenciamento das alterações no esquema do banco de dados. Esta estrutura permite uma fácil transição para bancos de dados mais robustos comoPostgreSQLem produção. - Autenticação:
Flask-Loginpara gerenciamento de sessões de usuário eFlask-Bcryptpara a criptografia segura de senhas. - Formulários:
Flask-WTFpara a criação de formulários seguros, com validação de dados e proteção contra ataques CSRF.
- Framework:
-
Frontend (Interface do Usuário):
- Estrutura:
HTML5eJavaScript(Vanilla JS) para interatividade. - Estilo:
Bootstrap 5, um framework CSS “mobile-first” que garante que a aplicação seja bonita e totalmente responsiva em qualquer dispositivo (celulares, tablets e desktops). - Templates:
Jinja2, o motor de templates padrão doFlask, que permite a criação de páginas HTML dinâmicas.
- Estrutura:
-
Inteligência Artificial:
- Provedor: Google Gemini, acessado através da biblioteca
google-generativeai. Utilizamos modelos avançados como ogemini-propara tarefas de geração e análise de texto. - Integração: A comunicação com a IA é feita através de chamadas de API seguras a partir do backend, garantindo que a chave de API nunca seja exposta ao navegador do cliente.
- Provedor: Google Gemini, acessado através da biblioteca
-
Geração de Documentos:
- Biblioteca:
WeasyPrint, uma ferramenta poderosa que converte o HTML e CSS do template do currículo em um arquivo PDF de alta qualidade.
- Biblioteca:
1.3. Como a Aplicação Funciona (Fluxo de Dados)
- Registro e Login: O usuário cria uma conta. Seus dados são salvos de forma segura no banco de dados.
- Criação do Currículo (Plataforma): O usuário acessa a plataforma em etapas. Ao preencher os formulários, o JavaScript no navegador cria uma experiência interativa (adicionando/removendo campos).
- Salvamento no Banco de Dados: Quando o usuário clica em “Salvar e Analisar”, todos os dados do formulário são enviados para o servidor
Flask. A view (app/core/views.py) valida os dados e os salva de forma estruturada nas tabelas do banco de dados (Resume,WorkExperience, etc.). - Análise de IA (Primeira Vez): Imediatamente após salvar, o servidor faz uma chamada para a API do Google Gemini, enviando os dados do currículo. A IA retorna uma análise estruturada (em formato JSON), que é então salva no banco de dados junto com o currículo do usuário.
- Dashboard de Carreira: O usuário é redirecionado para o dashboard. A view do dashboard simplesmente lê os dados do currículo e a análise de IA já salva do banco de dados e os exibe. Nenhuma chamada de IA é feita ao carregar esta página, tornando-a rápida e eficiente.
- Interações de IA no Dashboard:
- Chatbot: Quando o usuário envia uma mensagem no chat, o JavaScript envia essa mensagem para uma rota de API no
Flask. O servidor então faz uma nova chamada à IA, incluindo o contexto do currículo, e retorna a resposta para ser exibida no chat. - Refazer Análise: Clicar neste botão aciona uma rota específica que reexecuta a função de análise de IA, atualiza os dados no banco e recarrega a página.
- Chatbot: Quando o usuário envia uma mensagem no chat, o JavaScript envia essa mensagem para uma rota de API no
- Geração de PDF: Ao clicar em “Baixar PDF”, o navegador acessa uma rota específica (
/resume/generate/<id>). O servidor busca os dados do currículo no banco, renderiza um template HTML especial com esses dados e usa a bibliotecaWeasyPrintpara converter esse HTML em um arquivo PDF, que é então enviado de volta para o navegador para download.
2. Guia de Utilização da Ferramenta (Para o Usuário Final)
2.1. Criando sua Conta
- Acesse a página inicial e clique em “Registrar”.
- Preencha seu nome de usuário, e-mail e crie uma senha segura.
- Após o registro, você será redirecionado para a página de Login. Use seu e-mail e senha para acessar a plataforma.
2.2. Preenchendo seu Currículo na Plataforma
Após o primeiro login, você será levado diretamente para a plataforma de criação. A plataforma é dividida em 4 etapas para facilitar o preenchimento:
- Etapa 1: Informações Pessoais: Preencha seus dados básicos de contato.
- Etapa 2: Resumo Profissional: Escreva um parágrafo sobre você. Se tiver dúvidas, o Agente de IA ao lado dará dicas sobre o que escrever.
- Etapa 3: Carreira e Formação:
- Clique em “Adicionar Experiência” para criar um card para cada um dos seus empregos anteriores. Preencha os campos e, se desejar, clique no botão “
✨” para pedir à IA que ajude a reescrever a descrição de suas atividades de forma mais impactante. - Faça o mesmo para sua Formação Acadêmica.
- Você pode adicionar quantos itens forem necessários e removê-los clicando no botão “
X”.
- Clique em “Adicionar Experiência” para criar um card para cada um dos seus empregos anteriores. Preencha os campos e, se desejar, clique no botão “
- Etapa 4: Habilidades e Outros:
- Nos campos de Habilidades e Certificações, digite um item e pressione “Enter” ou vírgula para adicioná-lo como uma “tag”.
- Clique em “Adicionar Idioma” para listar os idiomas que você fala e seu nível de proficiência.
Ao final, clique em “Salvar e Analisar Currículo”. Sua primeira análise de IA será gerada neste momento.
2.3. Utilizando seu Dashboard de Carreira
Após salvar, você terá acesso ao seu dashboard, que é o seu centro de comando.
- Análise de Competitividade: Veja sua pontuação ATS, o feedback da IA, seus pontos fortes e o que pode ser melhorado. Se você editar seu currículo e salvá-lo novamente, esta análise será atualizada.
- Baixar e Editar: Use os botões de ação para baixar o PDF otimizado do seu currículo ou para voltar à plataforma e fazer ajustes.
- Converse com o Agente de RH: Use o chatbot para tirar dúvidas. Pergunte coisas como “Como posso melhorar a seção de experiência?” ou “Quais habilidades são importantes para um desenvolvedor Python?”. A IA usará o contexto do seu currículo para dar respostas personalizadas.
- Rastreie suas Vagas: Use o formulário “Rastreador de Vagas” para salvar os links das vagas para as quais você se candidatou, mantendo um registro organizado de sua busca por emprego.
3. Guia do Desenvolvedor e Manutenção
3.1. Instalação e Configuração
- Clone o repositório:
git clone ... - Crie um ambiente virtual:
python -m venv venv - Ative o ambiente:
source venv/bin/activate(ouvenv\Scripts\activateno Windows). - Instale as dependências:
pip install -r requirements.txt - Configure a Chave de API: Crie um arquivo
.envna raiz do projeto e adicione sua chave do Google Gemini:GEMINI_API_KEY=SUA_CHAVE_AQUI. - Inicialize o Banco de Dados:
export FLASK_APP=wsgi.py(ousetno Windows)flask db init(apenas na primeira vez)flask db migrate -m "Mensagem da migração"flask db upgrade
- Execute a Aplicação:
flask run
3.2. Estrutura do Projeto
A aplicação segue o padrão de Blueprints do Flask, separando cada área lógica em seu próprio módulo.
app/core/: Contém a lógica principal da aplicação (plataforma, dashboard, API de IA).app/auth/: Lida com registro, login e logout de usuários.app/resume/: Responsável pela geração e visualização do PDF do currículo.app/models.py: Define a estrutura de todas as tabelas do banco de dados.app/templates/: Contém todos os arquivos HTML, organizados em pastas que espelham os blueprints.wsgi.py: É o ponto de entrada da aplicação.
3.3. Manutenção e Evolução
- Alterando o Banco de Dados: Sempre que você modificar o arquivo
app/models.py(adicionando um campo ou uma nova tabela), você deve gerar uma nova migração comflask db migratee aplicá-la comflask db upgrade. - Melhorando a IA: Os “prompts” (as instruções enviadas para a IA) estão localizados no arquivo
app/core/views.py, nas funçõesai_suggestion,chat_with_agenteanalyze_market_competitiveness. Você pode editar esses prompts para refinar o comportamento e as respostas da IA. - Customizando o PDF: O layout do currículo em PDF é controlado pelo arquivo
app/templates/resume/resume_template.html. Você pode editar o HTML e o CSS dentro deste arquivo para alterar a aparência do documento final.