Duas fontes foram capturadas de verdade: o portal das federações e o LetzPlay, que é onde corre boa parte do torneio não oficial. Elas se comportam de formas muito diferentes — e a diferença decide o que o produto consegue prometer.
Isto não é limitação do leitor: é o que cada plataforma publica. Onde está não, nenhum robô e nenhuma IA resolvem — o número não existe na página. É informação que só entra por cadastro do organizador.
| Campo | Portal das federações | LetzPlay | Consequência no produto |
|---|---|---|---|
| Nome, organizador, arena | sim | sim | — |
| Cidade e estado | sim | sim | — |
| Datas do torneio | sim | sim deduzida das categorias | — |
| Categorias e inscritos | sim | sim | — |
| Vaga máxima por categoria | sim | não | O termômetro de ocupação só funciona nos torneios da federação |
| Prazo de inscrição | sim | não | O alerta de "inscrição fecha amanhã" também só funciona lá |
| Inscrições confirmadas (pagas) | sim | não | Sem distinção entre inscrito e pagante |
| Preço | por lote | texto livre | No LetzPlay o valor precisa ser interpretado |
| Telefone da arena | às vezes | não | Só para quem está logado |
Os dois recursos que os decks vendem como principais — termômetro de ocupação e alerta por prazo de inscrição — dependem de dois campos que só a fonte oficial publica. Fora da federação eles não existem para ninguém, nem para um concorrente.
Decisão tomada: o que a fonte não publica não fica em branco — vira tarefa de auditoria. O robô traz o que existe, marca o que falta, e o funcionário completa ligando para a arena. Isso transforma um limite técnico em processo — e é o desenho certo, porque o dado passa a existir onde nem o concorrente tem. O tamanho dessa fila está medido logo abaixo.
Contando apenas os campos que um humano consegue completar por telefone: vagas, prazo, valor, confirmação de pagamento e o próprio telefone da arena.
A auditoria deixa de ser "ajuste do agente" e vira função de operação, com custo de pessoa. Duas consequências para o contrato: (1) a tela de curadoria precisa mostrar o que falta e por quê — ela é ferramenta de trabalho diário, não painel de conferência; (2) quem paga essa pessoa é o cliente, e isso precisa estar escrito. O dev entrega a fila organizada, não a ligação feita.
Vale registrar o outro lado: dado confirmado por telefone é vantagem competitiva real. Vaga e prazo de torneio não oficial não existem em lugar nenhum da internet — quem tiver isso, tem sozinho.
Saída bruta dos dois leitores, sem edição. Use o filtro Origem para ver só o que veio de fora da federação. Onde aparece — na coluna de vagas ou de prazo, o dado não existe na fonte.
| Origem | Torneio | Organizador | Local | Data | Inscrições até | Categ. | Vagas | Inscritos | Ocupação | Inscrição | A confirmar | Fonte |
|---|
| Portal das federações | LetzPlay | |
|---|---|---|
| Como se lê a página | requisição simples | navegador de verdade, com tela |
| Navegador invisível funciona? | não precisa | não — bloqueia sempre |
| Tempo por página | 74 ms | ~25 s (com espera obrigatória) |
| Ritmo tolerado | 1 a cada 1,5 s | 1 a cada 45 s — em rajada, fecha |
| Bloqueios na coleta | 0 | nenhum nesta rodada |
| Como se descobre torneio novo | não tem índice — varredura de código sequencial | tem lista pública por organizador |
| Como se descobre organizador novo | não se aplica | não tem busca sem login — depende de busca externa |
| Infra necessária | qualquer servidor | servidor com navegador e tela virtual |
| Fragilidade do leitor | classes com nome próprio (.tournament-title) | HTML genérico — âncora no texto dos rótulos |
Traduzindo para orçamento: a segunda fonte não é "mais uma fonte". Ela tem outro custo de infraestrutura, outro risco de quebra e outro ritmo de coleta. Precisa ser cobrada à parte — e é o argumento mais forte para procurar um acordo de acesso a dados com a plataforma, que elimina tudo isso de uma vez.
Cobertura mostra que o leitor não quebra; não prova que o valor está certo. Para isso, seis fontes foram anotadas manualmente e comparadas campo a campo.
| Fonte | Tipo | Método | Acerto | Campos | Invenções | Tempo | Custo |
|---|
Programa comum lendo a estrutura da página. Não erra, não inventa, custa zero. Vale para as duas fontes estruturadas — no LetzPlay com um leitor próprio, escrito à parte.
Necessário só onde não há estrutura: post de rede social, cartaz, PDF. US$ 0,0008 por torneio, ~11 segundos. O único erro foi cortar "3ª etapa" do nome de um torneio.
Na primeira rodada a IA inventou duas datas num post ambíguo ("sábado que vem, dia 12") e se declarou 90% confiante. Em produção, isso é alerta de WhatsApp na data errada com o painel dizendo que está tudo bem.
O "score de confiança" dos decks não pode ser o número que a IA dá sobre si mesma — ela sinaliza a ambiguidade que percebe, não o erro que não percebe. Tem que ser calculado por regras de validação: data no passado? prazo depois do evento? preço fora de faixa? campo obrigatório vazio?
lab/
81 códigos varridos na faixa 20560–20640, 1 requisição a cada 1,5 s, sem login e sem burlar proteção — não existe nenhuma. 62% dos códigos eram torneio válido.
Os perfis de pickleball foram achados por busca externa (o site não tem busca sem login). De cada perfil vem a lista pública de torneios, e daí a página de cada um — 1 a cada 45 s, com navegador real, porque o Cloudflare fecha em ritmo mais rápido.
Tudo salvo em lab/corpus/raw e lab/corpus/letzplay/raw. As
medições rodam sobre esse arquivo congelado — reprodutível, sem depender do site estar
no ar hoje.
6 fontes anotadas à mão em lab/corpus/gold, lendo a fonte
sem olhar a saída dos extratores. Preencher um campo indeterminável
conta como invenção, não como acerto parcial.
1. Telefone da arena: em 21 dos 51 torneios da federação o portal publica literalmente "Não informado". O campo foi lido certo; o dado útil não está lá.
2. A amostra do LetzPlay é pequena e enviesada para os organizadores que a busca externa revelou. Serve para provar que a captura funciona e para medir o custo — não para dizer quantos torneios existem lá.
3. Boa parte do pickleball no LetzPlay é de 2023–2024, antes de o portal das federações concentrar o calendário. Antes de investir pesado nessa fonte, vale confirmar quanto dela ainda é calendário vivo.
4. Raspar dados públicos de terceiros e republicá-los tem camada jurídica — termos de uso das plataformas, dados pessoais de atletas sob LGPD — que não se resolve no código. O LetzPlay usa proteção anti-robô ativa, o que reforça o ponto: acordo comercial com a plataforma é o caminho seguro. Responsabilidade do contratante, por escrito.
| Origem do torneio | Compromisso possível | Curadoria humana | Base |
|---|---|---|---|
| Portal das federações | ≥ 95% dos campos corretos | dispensável | medido: 100% em 51 torneios |
| LetzPlay | ≥ 90% dos campos que a fonte publica | amostral | capturado: 15 torneios · sem vaga e sem prazo na fonte |
| Texto (legenda, PDF, cartaz) | ≥ 85% dos campos corretos | obrigatória antes de publicar | medido: 98,6% em 3 fontes de teste |
| Imagem (arte de Instagram) | sem compromisso numérico | obrigatória | não medido |
| Termômetro de ocupação e alerta de prazo | só para torneio da federação fora dela, os campos não existem em lugar nenhum | ||
| "99,5% automático" do deck | não aceitar a própria tela de curadoria do deck 03 contradiz a promessa | ||