Pular para conteúdo

Pipeline de Coleta de Oportunidades

Fluxo

URL ou fonte configurada
-> inspeção de acesso público
-> robots.txt
-> cache local
-> rate limit por domínio
-> fetch identificado
-> parsing HTML ou XML
-> ScrapedOpportunity
-> deduplicação
-> store local
-> JobPostingSchema
-> análise e tracker

Cada coleta parte de uma ação explícita. O cliente usa user-agent identificável, limita bytes, respeita robots.txt e registra somente conteúdo necessário para a oportunidade.

Modos explícitos

ScrapingSource.collection_mode diferencia:

  • PUBLIC_SCRAPING: cliente HTTP para páginas públicas e feeds;
  • MANUAL_URL: coleta uma única URL e não segue links em massa;
  • USER_ASSISTED_CAPTURE: processa somente o conteúdo visível da página atual fornecido pela pessoa usuária.
  • AUTHENTICATED_BROWSER: navega uma fonte autorizada usando um Chromium já autenticado e conectado via CDP.

Uma captura assistida pode vir de uma página aberta em uma sessão própria já autenticada. Nesse modo, o SotuHire não faz requisição à plataforma, não lê cookies e não percorre outras páginas.

No modo autenticado, o Playwright conecta ao contexto existente sem receber senha ou automatizar login. O crawler abre abas próprias, coleta cards ou links, percorre páginas/rolagens até os limites configurados, normaliza os resultados e fecha somente as abas que criou.

Contratos

ScrapingSource descreve tipo, URL, limite, intervalo e seletores futuros. ScrapedOpportunity guarda origem, fatos detectados, descrição, hash e timestamp com timezone.

O OpportunityStore deduplica por URL normalizada, identidade semântica e content_hash. O normalizador converte a oportunidade para o mesmo JobPostingSchema usado por vagas coladas.

Cache e falhas

Respostas públicas ficam em data/scraping-cache por seis horas. Uma fonte com erro retorna uma falha estruturada e não derruba o app. Dados em data/ não são versionados.

Limites

A pipeline não automatiza login, não contorna CAPTCHA/checkpoints e não envia candidaturas. A coleta autenticada exige confirmação, permite registrar a referência de autorização e aplica limites de itens, páginas/rolagens e intervalo. Fontes públicas ou autenticadas autorizadas podem ser adicionadas pelo registry ou por config/sources.toml.