Fluxo de dados¶
Fluxo do MVP 1¶
1. Usuário envia PDF
2. Usuário cola descrição da vaga
3. Sistema extrai texto do currículo
4. Sistema valida tamanho e legibilidade
5. Sistema aplica sinais ATS básicos
6. Sistema envia currículo + vaga para IA
7. IA retorna JSON estruturado
8. Sistema valida JSON
9. Sistema aplica regras de negócio determinísticas
10. Sistema exibe relatório
Entrada¶
Currículo¶
O currículo pode conter:
- nome;
- formação;
- experiência;
- projetos;
- habilidades;
- ferramentas;
- idiomas;
- links;
- certificações.
No MVP, o parser não precisa entender tudo perfeitamente. Primeiro, basta extrair texto com qualidade aceitável.
Descrição da vaga¶
A descrição da vaga pode ser:
- anúncio formal;
- texto copiado de site;
- post de LinkedIn;
- mensagem de recrutador;
- texto de indicação;
- vaga de Gupy/Greenhouse/Lever/Ashby copiada.
Processamento¶
Extração de texto¶
O sistema usa PyMuPDF ou biblioteca equivalente para converter PDF em texto.
Cuidados:
- se o PDF for imagem escaneada, o texto pode sair vazio;
- se o currículo tiver muitas colunas, a ordem pode sair estranha;
- se tiver ícones sem texto, o ATS pode não reconhecer.
Pré-validação¶
Antes de chamar IA, o sistema deve validar:
- currículo tem texto suficiente?
- vaga tem texto suficiente?
- arquivo tem tamanho aceitável?
- entrada parece vazia?
Análise ATS¶
A análise ATS inicial pode ser determinística:
- presença de seções comuns;
- texto extraível;
- quantidade de caracteres;
- links detectados;
- palavras-chave técnicas;
- possível problema de formatação.
Análise de IA¶
A IA interpreta contexto e gera análise estruturada. Ela é boa para linguagem natural, mas não deve ser a única responsável por regras objetivas.
Regras determinísticas¶
Depois da IA, o sistema pode ajustar recomendação com regras claras:
- vaga sênior reduz recomendação;
- termos como
5+ anosreduzem aderência; - estágio/júnior aumenta prioridade para perfil inicial;
- requisitos compatíveis aumentam confiança.
Saída¶
A saída deve ser estruturada:
{
"match_score": 82,
"recommendation": "Aplicar",
"seniority_fit": "Estágio/Júnior",
"strong_points": [],
"weak_points": [],
"missing_keywords": [],
"ats_notes": [],
"recruiter_message": ""
}
Riscos do fluxo¶
- IA pode inventar competência;
- PDF pode ser lido errado;
- vaga pode ser ambígua;
- score pode parecer preciso demais;
- o usuário pode interpretar recomendação como verdade absoluta.
Por isso, o relatório sempre deve explicar o motivo da recomendação.
Fluxo de dados expandido¶
sequenceDiagram
participant User as Usuário
participant UI as UI
participant Resume as Resume Analyzer
participant Search as Search Intelligence
participant Profile as Profile Analyzer
participant Portfolio as Portfolio Analyzer
participant RAG as RAG Memory
participant Match as Match Engine
participant Tracker as Tracker
User->>UI: envia currículo/vaga/post/link
UI->>Resume: extrair currículo
UI->>Search: gerar queries ou classificar fonte
UI->>Profile: importar LinkedIn/Lattes se houver
UI->>Portfolio: analisar GitHub/portfólio se houver
Resume->>RAG: indexar evidências
Profile->>RAG: indexar perfil
Portfolio->>RAG: indexar projetos
RAG->>Match: recuperar contexto relevante
Match->>Tracker: salvar análise e score
Tracker->>UI: mostrar recomendação e próxima ação
Fluxo consolidado com Resume Tailor e preferências¶
flowchart TD
A[Currículo mestre] --> B[Parser]
C[Vaga alvo] --> D[Job normalizer]
E[Preferências do usuário] --> F[Opportunity Fit]
B --> G[Job Analysis]
D --> G
F --> G
G --> H[Scores]
G --> I[Resume Tailor]
I --> J[Versão ATS revisável]
H --> K[Kanban]
J --> K
Esse fluxo mantém o usuário no controle e separa análise, decisão e geração de currículo.
Fluxo com Career Memory na v0.8.0¶
flowchart LR
A[Currículo, vaga e preferências] --> B[Career Memory]
B --> C[Retriever lexical local]
C --> D[Evidências relevantes]
D --> E[Análise local]
D --> F[Gemini com opt-in]
E --> G[Resultado explicado]
F --> G
G --> H[Feedback e tracker]
H --> B
Gemini recebe somente o resumo relevante quando a flag explícita estiver habilitada. Sem essa autorização, a memória continua disponível apenas para o fluxo local.
Fluxo atual com Browser Companion¶
flowchart LR
A[Página aberta] --> B[Extensão assistiva]
B --> C[JSON-LD ou conteúdo visível]
C --> D{Companion online?}
D -- não --> E[Fila offline com retry]
E --> D
D -- sim --> F[Identidade e dedupe]
F --> G[Snapshot imutável]
G --> H[Análise ou Tracker]
H --> I[Perfil após revisão]
A identidade usa URL normalizada, referências fortes e hash de conteúdo. A captura preserva todas as fontes; merges incertos continuam sugestões. Handshake e warnings evitam integração silenciosa entre versões incompatíveis.