Career Context Engine¶
O Career Context Engine é a camada local-first que monta um contexto único, compacto e revisável para os fluxos do SotuHire.
Ele vive em modules/context e não substitui o Perfil Profissional Universal nem a memória local. A função dele é coordenar esses sinais para que Radar, Wishlist, Match, ATS, Tailor, Tracker, Fontes, GitHub/Portfólio, Lattes/acadêmico, Editais/Concursos, Extensão, Notificações e Dashboard consultem o mesmo contexto por trás.
Fontes de Contexto¶
O engine usa, quando disponível:
- Perfil Profissional Universal via
ProfileContextOrchestrator; - evidências acadêmicas/Lattes confirmadas no Perfil Universal;
- RAG lexical local via
MemoryRetriever; - evidências de tracker e candidaturas quando já viraram memória local;
- oportunidades e fontes importadas quando já viraram memória local;
- sinais de GitHub/Portfólio quando já viraram memória local;
- preferências, restrições, localidades, modelos de trabalho e contratos;
- feedbacks e sinais de aplicação registrados localmente.
Ele não cria banco vetorial, servidor externo ou dependência pesada.
Propósitos¶
Cada chamada informa um CareerContextPurpose:
generic, wishlist, radar, match, ats, tailor, tracker,
notifications, sources, extension, github, dashboard,
academic, lattes, public_exams
O propósito ajuda a montar query lexical, limitar evidências e registrar warnings apropriados.
Saída¶
CareerContext contém:
- resumo do perfil;
- objetivos;
- áreas/domínios;
- senioridade;
- localidades;
- modelos de trabalho;
- tipos de contrato;
- restrições;
- evidências com origem, confiança, score, sensibilidade e status de confirmação;
- warnings;
- notas de privacidade.
Privacidade¶
O engine não inventa fatos. Evidências sensíveis são marcadas e os formatadores conseguem omitir esses itens quando o contexto pode ser enviado a provider externo.
Regras principais:
- contexto local completo pode ser usado por regras locais;
- provider externo só recebe contexto quando
allow_memory_context=true; - evidências sensíveis são omitidas de payload externo;
- itens de baixa confiança aparecem como “a confirmar”;
- candidatos de evidência de GitHub/Portfólio, extensão ou Lattes não entram no Perfil sem revisão humana.
Deduplicação e Prioridade¶
Evidências são deduplicadas por título/conteúdo normalizado. Quando há duplicidade, o engine prioriza:
- confirmado pela pessoa usuária;
- alta confiança;
- score maior;
- item não sensível.
Consumo por Módulo¶
| Fluxo | Uso esperado |
|---|---|
| Wishlist | complementar rascunho com objetivos, domínios, localidades e preferências confirmadas |
| Radar | usar contexto como sinal local de score e explicação, sem auto-apply |
| Match | passar evidências ao Match Engine local e respeitar allow_memory_context para provider externo |
| ATS | separar keywords com evidência local de termos sem suporte, incluindo evidências acadêmicas |
| Tailor | sugerir ajustes apenas com evidências reais e linguagem condicional |
| Tracker | retornar resumo, motivo de fit, próxima ação e gaps recorrentes |
| Fontes | classificar alinhamento local e sugerir enviar para Radar, Match ou Tracker sem salvar automaticamente |
| Extensão | usar capturas locais e candidatos revisáveis sem salvar automaticamente no Perfil |
| Lattes/acadêmico | incluir formação, pesquisa, publicações, extensão e docência confirmadas no Perfil |
| Notificações | melhorar mensagem do Radar com sinais seguros do contexto |
| GitHub/Portfólio | gerar candidatos de evidência revisáveis para o Perfil |
| Editais/Concursos | comparar requisitos de edital com formação, títulos, registros, certificações, experiência, localização e evidências acadêmicas/Lattes confirmadas |
Na v1.9.4, a extensão pode consultar apenas um resumo seguro desse contexto. Esse resumo indica se há Perfil disponível, fluxos habilitados e status de IA, mas não retorna o Perfil inteiro, memória completa ou segredo de provider.
Public exams¶
A partir da v1.9.3, CareerContextPurpose.PUBLIC_EXAMS é usado pelo módulo modules/public_exams no endpoint:
POST /api/v1/public-exams/{notice_id}/analyze
O contexto de editais inclui sinais confirmados do Perfil Profissional Universal, especialmente:
- formação concluída ou em andamento;
- registros profissionais confirmados;
- certificações;
- experiência profissional;
- localização e disponibilidade;
- preferências de contrato/regime;
- evidências acadêmicas/Lattes, como pesquisa, extensão, docência, publicações, bolsas e produção técnica.
Regras importantes:
- edital não adiciona formação, registro ou certificação ao Perfil;
- requisitos legais sem evidência viram
missingouuncertain; - graduação em andamento não passa como graduação concluída;
- registro profissional não é presumido;
- o score usa linguagem condicional e não substitui a leitura oficial do edital.
Arquivos¶
modules/context/__init__.py
modules/context/models.py
modules/context/engine.py
modules/context/formatters.py
tests/test_career_context_engine.py