Extension Profile Bridge¶
A Extension Profile Bridge conecta a extensão assistiva, Local Companion API, Career Context Engine e Perfil Profissional Universal. Uma captura pode sugerir evidências, mas nada entra no Perfil sem revisão e confirmação explícitas.
Fluxo¶
Pessoa abre vaga, edital, GitHub ou portfólio
-> extensão extrai JSON-LD/sinais públicos/texto visível
-> Local Companion valida, deduplica e cria snapshot
-> FastAPI lista a captura no site
-> Career Context seleciona somente evidências necessárias
-> site mostra ProfileItems candidatos
-> pessoa confirma os itens desejados
-> Perfil Universal persiste itens confirmados com proveniência
Endpoints do site¶
POST /api/v1/extension/handshake
GET /api/v1/extension/status
GET /api/v1/extension/captures
GET /api/v1/extension/context
PATCH /api/v1/extension/captures/{capture_id}
POST /api/v1/extension/import/job
POST /api/v1/extension/import/github
POST /api/v1/extension/import/public-exam
POST /api/v1/extension/import/tracker
POST /api/v1/extension/captures/{capture_id}/profile-candidates
POST /api/v1/extension/captures/{capture_id}/add-to-profile
POST /api/v1/extension/projects/{project_id}/profile-candidates
POST /api/v1/extension/projects/{project_id}/add-to-profile
profile-candidates gera rascunhos locais com confirmed_by_user=false, source, source_ref,
confidence e evidência curta. add-to-profile recebe apenas os candidatos selecionados e os salva
como confirmados pela pessoa usuária.
O handshake não transporta conteúdo de carreira. Ele informa versões, capabilities, compatibilidade e warnings para impedir que frontend, Companion e extensão pareçam integrados quando seus contratos divergem.
Capturas, snapshots e proveniência¶
Capturas conectadas preservam:
capture_ide URL de origem;collection_method=browser_assisted_capture;extraction_strategy, inclusiveschema_org_jobpostingquando disponível;content_hash,snapshot_ide histórico de snapshots;sourceesource_refaté Perfil, análise ou Tracker.
Vagas geram JobSnapshot; editais geram PublicExamSnapshot; análises podem ligar
ResumeSnapshot e AnalysisSnapshot. Alterar o status ou importar a captura não modifica o
snapshot original.
Fontes e revisão¶
As fontes aceitas para candidatos incluem:
extension_capture;github_capture;portfolio_capture;browser_assisted_capture.
Uma vaga não prova uma habilidade profissional. Ela pode sugerir objetivo, preferência, keyword ou gap. Projetos GitHub/portfólio podem sugerir projeto, skill, produção técnica ou evidência acadêmica, sempre com revisão humana.
Capturas public_exam não viram vaga privada, candidatura ou inscrição. Elas entram em
Editais/Concursos como rascunho revisável.
Career Context¶
A extensão recebe somente um resumo para o propósito extension, com evidências confirmadas,
warnings e referências de origem. Perfil completo, memória completa e dados sensíveis não são
copiados para o popup.
Evidências acadêmicas ou Lattes já confirmadas podem participar do contexto seguro. Candidatos acadêmicos vindos da extensão só entram em outros fluxos depois da confirmação.
Privacidade¶
- a extensão não recebe a chave configurada no app;
- uma chave própria fica isolada no service worker e nunca entra na ponte;
- content scripts não recebem segredo, token local ou Perfil completo;
- fila e exportação removem campos nomeados como credencial e redigem valores com formato de chave;
- nenhum cookie, token, sessão, header autenticado ou storage de terceiros é coletado;
- nenhuma candidatura, inscrição ou mensagem é automatizada;
- authenticated-browser permanece um fluxo separado.
Arquivos principais¶
apps/api/routes/extension.py
apps/api/services/extension.py
apps/api/schemas/extension.py
apps/web/src/routes/sources.tsx
modules/context
modules/local_api
modules/profile
modules/storage/snapshots.py
browser-extension/
tests/test_api_extension_bridge.py
tests/test_extension_reliability_runtime.py