Apuração acompanhada em tempo real, com projeção e margem de erro.
Quem Será Eleito? é um site independente de análise eleitoral. Na noite do 2º turno de 25/10/2026, leu a apuração oficial do TSE e projetou o vencedor seção por seção. Depois virou um portal de levantamentos sobre as contas de campanha no Espírito Santo. Concebido e desenvolvido por Iran Milanez Caetano, com o Claude.
O ponto de partidaA parcial do TSE chega fora de ordem e engana nas primeiras horas: chegou a errar por 2,3 pontos.
O que foi feitoUm coletor, um modelo que compara cada seção com ela mesma e um painel com a margem de erro à vista.
O resultadoProjeção já apontando o vencedor às 19h25, com 3,98% apurado, e erro de até 0,6 ponto a partir de 14%.
Na prática
Veja o fluxo funcionando
Cada aba mostra um caminho do projeto, passo a passo. Os números e as imagens são dos levantamentos publicados no site.
Velocidade
Onde a página busca
1ºDomínio ao vivo (cache de 15 s)
2ºWorker de dados
3ºEndereço reserva
Nenhum respondeModo demonstração
Apuração ao vivodemonstração
Lula45,16%
Flávio Bolsonaro47,03%
Replay real do 1º turno · etiqueta visível
No painel
Parcial oficial do TSESempre
Projeção com margem (±)Sempre junto
Chance de vitóriaPor candidato
Mapa por estadoSim
Atualização
ReleituraA cada 30 s
Dados paradosMais de 5 minAviso amarelo
Regra da faixa
ChanceAcima de 99,9%
Por quanto tempo15 minutos seguidos
Seções apuradasPelo menos 30%
FaixaAguardandoPode aparecer
Apuração ao vivoApuração encerrada
Lula51,79%
Flávio Bolsonaro48,21%
Comparecimento de 80,77% · resultado oficial do TSE
Coletor
ArquivosNacional e 27 estaduais
RodadaA cada 30 s
Limite próprio150 pedidos por segundo
Municípios por rodada
Antes5.571 arquivos
Agora260 a 700
RodadaDe 7 minutos para 103 segundos
Município
Seções batem com a listaAceito
Não batemEspera a próxima rodada
3 rodadas sem parEntra sem a lista
Modelo
Referênciaa própria seção no 1º turno
Mudança medidaPor município
Poucos votosMédia do estado
Urnas tardiasTendência medida por município
Publicação
Arquivoestado.json
DestinoCloudflare R2
GravaçãoAtômica
Falha no envioNão derruba o coletor
Modo ordem
Lista de seçõesAtrasadaEm dia
Margem2,5 vezes maior
Página do exercício: a noite de 25/10 refeita
Na noite de 25/10
Primeira projeção19h25, com 3,98% apurado
Parcial oficialFlávio à frente por ~42 min
ProjeçãoLula a noite toda
Eleição declarada21h09
Desvio da projeção · pontos
19h32 · menos de 10% apurado1,85
A partir de 14% apuradoaté 0,6
Refazer a noite
O site na noiteO que foi ao ar
Coletor da eleição, rodado de novoO erro de verdade
Coletor corrigidoO que mudou
Correção
CausaLista de seções velha
SoluçãoPar coerente
Exercício de 26/10É replay, não a noite real
Exterior
Lula53,86%
Flávio Bolsonaro46,14%
Seções1.351 (41 não instaladas)
Mapa-múndi
FiltroPor continente
TabelaSeções e votos
Crédito do mapaSVG Maps · CC BY 4.0
Governador ES
Municípios78
BuscaPor cidade
ProjeçãoNenhuma: só dados oficiais
Conferência
Estimativa da noiteGuardada
Resultado oficialAo lado
Prestação de contas
CargosEstadual, federal, senador, governador
FonteDados Abertos do TSE
AtualizaçãoDiária
Custo do voto e despesas declaradas ao TSE
Custo do voto
GráficoEscala logarítmica
CoresEleito × não eleito
Toque na bolinhaCandidato, votos e gasto
Cidade 3D
PrédioUm por candidato
AlturaGasto ou votos
Bibliotecathree.js · MIT
Mapa 3D dos votos em deputado estadual
Cuidados da ficha
CPF, título, e-mailOmitidos
Fornecedor pessoa física ou MEINão aparece
Processos em análise no TRE-ESNão usados
Aviso fixoValor fora do padrão ≠ irregularidade
Compartilhar
WhatsAppFrase e link
InstagramImagem na hora
Imagem
Tamanho1080 × 1350
CelularMenu de compartilhar
ComputadorBaixa a imagem
Widget
Quadro300 × 250
Faixa970 × 90 e 320 × 100
AtualizaçãoA cada 30 s
Quem pode embutirSó sites autorizados
A projeção é independente: não é pesquisa nem resultado oficialSem dados, a página nunca fica em brancoAviso quando os dados envelhecem
IntegraçõesTSE (resultados.tse.jus.br)Cloudflare R2 e Workers
Dado velho é descartado e o limite do TSE é respeitadoMargem maior quando falta informaçãoO coletor não para por erro na projeção
IntegraçõesTSE (arquivos de resultado e lista de seções)
Mostra o erro, não só o acertoO exercício de 26/10 é replay e vem marcado como replay
IntegraçõesTSE (arquivo-urna e dados abertos)
Governador ES: só dados oficiais, sem projeçãoMapa com crédito a SVG Maps (CC BY 4.0) e ao IBGE
IntegraçõesTSEIBGE (contornos dos municípios)
Só dados abertos do TSE, declarados pelas campanhasSem “laranja”, “fraude” ou “desvio”Valores com a data da conferência
IntegraçõesTSE (Portal de Dados Abertos)DataJud (processos de prestação de contas)
O widget só pode ser embutido em sites autorizados
IntegraçõesInstagram e WhatsApp (só compartilhamento)
Como é construído
O caminho do dado, da origem à tela
As peças principais e como conversam entre si.
TSEarquivos de resultado, a cada 30 s e a cada minuto
ColetorPython, com limite próprio de 150 pedidos por segundo
Modelocompara a seção com ela mesma e projeta o que falta
Cloudflare R2guarda o estado.json
Domínio ao vivocache de 15 segundos
PáginaHTML e JavaScript simples, relê a cada 30 s
Também no caminho:Sem banco de dados: arquivos no repositório e o R2 para o estado ao vivoReservas: Worker de dados (10 s em memória) e modo demonstraçãoAudiência estimada pelas requisições da própria página, sem cookiesEm desenvolvimento: Modelo 2028 e publicação automática no Instagram
Python
NumPy
JavaScript puro
SVG e three.js
Cloudflare Workers
Cloudflare R2
Workers Builds
GitHub
Playwright (imagens de compartilhamento)
Meta Graph API (em desenvolvimento)
Cuidados
O que faz esse projeto ser confiável
Erro medido, não prometido
Na noite de 25/10 o maior desvio foi de 1,85 ponto, com menos de 10% apurado. A partir de 14% apurado, nunca passou de 0,6. A página mostra isso.
Lição da noite real
A lista de seções era baixada antes dos arquivos dos municípios. O coletor passou a casar os dois, baixar só o que mudou e manter conexões abertas: a rodada caiu de 7 minutos para 103 segundos.
Segurança
Política de conteúdo restrita, proibição de embutir a página, HSTS, bucket servido só pelo domínio ao vivo e regra que libera apenas a leitura do estado.json. Segredos fora do Git.
Privacidade
Sem cookies, sem cadastro e sem identificar visitantes. O tema claro e escuro fica só no navegador. A audiência é estimada pelas requisições à própria página.
Linguagem neutra nas contas
Só dados abertos do TSE, sempre “declarado ao TSE”. Nada de acusação, e nada que venha de processos em análise.
Quando algo falha
Aviso após 5 minutos sem dados, endereços de reserva, modo demonstração e gravação atômica. O coletor descarta arquivos mais velhos que o já visto e respeita o limite do TSE.
Vamos conversar?
Tem dados públicos que precisam virar informação clara?
Fale comigo. Posso transformar dados abertos em painéis, projeções e páginas que qualquer pessoa entende.