Pesquisa externa oficial — v1.10.1¶
Pesquisa concluída em 2026-08-09, usando somente documentação, especificações, portais e repositórios oficiais. A disponibilidade pública de uma API ou página não equivale a uma licença geral para republicar seu conteúdo; as ressalvas abaixo fazem parte do contrato de implementação.
Fontes de oportunidades¶
| Fonte oficial | Contrato e uso recomendado | Restrições e caveats |
|---|---|---|
| Greenhouse Job Board API | Consumir somente os GET públicos: lista em /v1/boards/{board_token}/jobs, com content=true quando necessário, e detalhe em /jobs/{job_id}. Normalizar id, absolute_url, title, location, departamentos, escritórios e conteúdo, preservando o token do board e a URL de origem. |
updated_at não é necessariamente a data de publicação. O conteúdo pode conter HTML e precisa de sanitização. Não chamar o endpoint POST de candidatura. A documentação não concede licença aberta geral sobre os anúncios; acesso público não autoriza republicação irrestrita. |
| Lever Postings API | Usar GET /v0/postings/{site}?skip=&limit= e GET /v0/postings/{site}/{posting-id}, considerando instâncias global e europeia. Fazer paginação no backend, preferir os campos textuais simples e preservar id, URL e site de origem. |
A API expõe apenas vagas publicadas, não oferece busca textual completa e tem CORS limitado no navegador. Não usar o POST de candidatura. O repositório oficial não explicita uma licença ampla para os dados das vagas; confirmar direitos antes de distribuir corpus ou cache. |
schema.org JobPosting |
Ler apenas blocos application/ld+json; aceitar objeto, array, @graph, nós aninhados e @type como string ou array. Extrair identifier, hiringOrganization, jobLocation, jobLocationType, applicantLocationRequirements, employmentType, datePosted, validThrough, baseSalary, description e url. |
Impor limites de bytes, profundidade e quantidade de nós; sanitizar HTML e URLs. A versão corrente consultada é schema.org 30.0, de 2026-03-19. O vocabulário está sob CC BY-SA 3.0, mas essa licença não cobre o conteúdo publicado por terceiros. |
| RSS 2.0 e Atom 1.0 | No RSS, formar identidade por guid, depois link canônico e, por fim, hash estável. No Atom, preservar id, xml:base, xml:lang e links alternate/self. Sanitizar conteúdo HTML/XHTML e manter a URL do feed e do item. |
Usar parser XML endurecido, sem DTD, XXE ou expansão de entidades, com limites de tamanho e profundidade. A especificação RSS consultada é a revisão 2.0.11, mantendo versão wire 2.0, sob CC BY-SA; o conteúdo de cada feed continua sujeito aos direitos do publicador. |
HTTP condicional¶
Seguir o RFC 9110: guardar ETag e
Last-Modified por URL e representação; enviar If-None-Match e, por compatibilidade,
If-Modified-Since, com precedência para o ETag. Uma resposta 304 Not Modified reutiliza o
corpo e o hash existentes, atualiza apenas a verificação e não cria novo snapshot semântico.
Validadores HTTP não substituem o hash do conteúdo. Todo conector também precisa de política de redirecionamento, timeout, backoff, limite de resposta e defesa contra SSRF.
Taxonomias e enriquecimento ocupacional¶
| Fonte oficial | Uso recomendado | Versão, licença e limites |
|---|---|---|
| CBO — Classificação Brasileira de Ocupações e downloads oficiais | Importar os artefatos oficiais de ocupações, famílias, grupos, sinônimos e perfis; tratar todo código como string. Registrar URL, data de coleta e SHA-256 de cada artefato. | CBO 2002 é o nome da classificação, não uma versão imutável do conjunto; as regras consolidadas preveem atualizações anuais. A CBO tem finalidade classificatória administrativa e não regulamenta profissões nem confirma CREA, CRM, OAB ou outro registro. O portal indica CC BY-ND 3.0 no rodapé, mas o pacote de dados não apresenta licença específica inequívoca; confirmar com o MTE antes de embutir ou redistribuir cache derivado. |
| QBQ — Quadro Brasileiro de Qualificações e portal oficial | Relacionar perfis por código CBO e importar, quando disponível, conhecimentos, habilidades, atitudes e nível de qualificação. Guardar data de coleta e hash do arquivo Excel ou da resposta. | Profundidade, frequência e importância descrevem a ocupação, não a proficiência do candidato. A cobertura evolui e o portal não expõe versão de máquina estável. Aplicam-se as mesmas dúvidas de licenciamento explícito do pacote CBO. |
| ESCO, downloads e API | Preferir downloads versionados CSV, JSON-LD ou RDF e seus deltas; preservar URI estável, idioma, tipo de conceito e relações. Qualquer associação deve nascer como semantic_candidate e exigir revisão humana. |
Versão corrente consultada: ESCO 1.2.1, publicada em 2025-12-10. O pacote em pt não garante variante pt-BR e deve ser rotulado corretamente. O software da API usa EUPL 1.2, o que não deve ser confundido com a licença dos dados. Os dados são oferecidos como Linked Open Data; conservar atribuição e versão. A Local API corrente é apenas de referência e será substituída. |
| O*NET Database, Web Services 2.0 e licença | Para operação local-first, preferir o download oficial a uma API credenciada. Preservar código O*NET-SOC, elemento, escala, fonte e versão. Usar como enriquecimento do mercado dos EUA, nunca como evidência direta sobre um candidato. | Versão corrente consultada: O*NET 30.3, maio de 2026, com atualizações trimestrais. Downloads sob CC BY 4.0: creditar ONET Database e U.S. Department of Labor/ETA, ligar a licença, indicar alterações e exibir a versão. O uso da API tem termos e conta próprios, não transferíveis. Respeitar a marca ONET®. |
Mapeamentos de taxonomia devem sempre registrar taxonomy_ref, match_method, confidence e
review_status. Nenhum match confirma habilidade, experiência, ocupação, certificado ou registro
profissional do candidato.
Interoperabilidade de currículo¶
A referência é o JSON Resume Schema, mantido no
repositório canônico.
O mapper deve cobrir basics, work, volunteer, education, awards, certificates,
publications, skills, languages, interests, references e projects, preservando campos
desconhecidos e datas parciais no round-trip.
A versão publicada é 1.0.0, sob licença MIT. O repositório antigo resume-schema está
arquivado/movido. O schema aceita propriedades adicionais, mas consumidores externos podem
ignorá-las. Registros profissionais não são certificados: devem usar uma extensão identificável,
por exemplo x-sotuhire.professionalRegistrations, com teste explícito de round-trip.
Calendário ICS¶
Seguir o RFC 5545:
VCALENDARdeve conterPRODIDeVERSION;- cada
VEVENTprecisa deUIDglobalmente único e estável e deDTSTAMP; DTSTARTé obrigatório quando não háMETHOD;- usar UTC ou
TZIDexplícito acompanhado deVTIMEZONE; eventos de dia inteiro usamVALUE=DATE, eDTENDé exclusivo; - escapar texto, emitir CRLF e dobrar linhas acima de 75 octetos sem quebrar UTF-8;
- omitir
METHODem exportação simples e nunca importar ou enviar convites automaticamente.
O UID deve derivar da identidade persistente da entidade, não do instante da exportação.
Locale e tema no navegador¶
Pelo WHATWG NavigatorLanguage,
navigator.languages é uma lista ordenada de tags BCP 47 e navigator.language é sua primeira
preferência. Na primeira execução, a primeira tag pt* seleciona pt-BR; as demais selecionam
en-US. Persistir system, pt-BR ou en-US; no modo sistema, reagir a languagechange e formatar
datas e números com Intl.DateTimeFormat e Intl.NumberFormat.
Navegadores podem reduzir ou tornar plausível essa lista contra fingerprinting: locale não é
nacionalidade e não deve ser enviado externamente sem necessidade.
Para tema, seguir prefers-color-scheme
e color-scheme. O padrão é Sistema; observar
matchMedia('(prefers-color-scheme: dark)') e seu evento de mudança somente nesse modo. Aplicar a
preferência persistida antes do primeiro paint, por um script mínimo no <head>, e usar
data-theme mais tokens semânticos. Declarar color-scheme para controles nativos. Os valores da
media query são light e dark; ausência de preferência converge para light. Contraste,
forced-colors e prefers-reduced-motion exigem testes próprios.
Provenance mínima¶
Todo registro externo ou snapshot deve carregar, quando aplicável:
source
source_kind
external_id
source_url
retrieved_at
source_version
content_hash
collection_method
etag
last_modified
license_url
attribution
O fluxo recomendado é: conector oficial somente leitura → snapshot com provenance → normalização determinística → dedupe explicável → ranking local/top-K → IA opcional → revisão humana.
Produtos de referência¶
| Produto oficial | Padrões úteis para a v1.10.1 | Caveats de adoção |
|---|---|---|
| Curricu.lol | A página oficial apresenta análise de currículo/LinkedIn por agentes, score ATS e estratégia de carreira; serve como referência de linguagem e jornada para público brasileiro. | Não foi localizado repositório OSS ou licença oficial no site consultado. Não tratar o produto como código aberto nem reutilizar conteúdo ou implementação. |
| Reactive Resume | Preview imediato, portabilidade JSON/PDF, uso básico sem conta e PDF gerado no cliente. | MIT. A implantação self-hosted usa PostgreSQL e armazenamento opcional, incompatíveis com a persistência SQLite obrigatória; aproveitar padrões de UX, não a infraestrutura. |
| OpenResume | Operação local no navegador, sem cadastro, importação de PDF, preview e foco em legibilidade ATS. | AGPL-3.0; reutilização direta impõe obrigações fortes. Hipóteses centradas nos EUA não são universais para pt-BR. |
| JobSync | Tracker, tarefas, currículos, dashboard, SQLite, conectores Greenhouse/Lever, pré-filtro local antes de IA e fila de revisão. | MIT. Não copiar automações de candidatura ou semântica MCP incompatível com a política de fontes oficiais e ausência de auto-apply. |
| Resuml | Currículo como dados, validação, interoperabilidade JSON Resume, operação local, CLI/MCP e avaliação contra descrição da vaga. | ISC. É referência de portabilidade, mas a experiência SotuHire deve continuar centrada na aplicação, não em CLI. |
| career-ops | Rubrica explícita, arquivos locais, rastreabilidade visível, tailoring e respostas como rascunhos revisáveis com decisão humana. | MIT, com política de marca separada. Dados locais ainda podem ser enviados ao provedor de IA escolhido; aplicar minimização de contexto e transparência. Não copiar scanners de portais incompatíveis com a política de fontes oficiais. |
Decisões de implementação¶
- Somente conectores oficiais, públicos e de leitura; nenhum auto-apply, autenticação capturada ou envio automático.
- HTML, JSON-LD e XML são entradas não confiáveis e recebem sanitização, limites e validação de URL antes da persistência ou renderização.
- Toda inferência ocupacional ou semântica permanece candidata, explicável e revisável.
- Licença do schema, da API ou do software não licencia automaticamente conteúdo de terceiros.
- Datasets versionados guardam versão oficial, data de coleta, hash, atribuição e indicação de transformações; fontes sem licença inequívoca não são redistribuídas sem confirmação.