Portal público sobre a atividade de políticos brasileiros: o que cada um fez, faz e declara que vai fazer. Todo registro vem de fonte oficial e traz a proveniência: fonte, URL de origem e data de captura.
Estado: prova de conceito na esfera federal concluída e piloto municipal em andamento. Detalhes em docs/ROADMAP.md.
- Votos e participação em votações nominais (Câmara, Senado e câmara municipal do piloto).
- Despesas da cota parlamentar, por mês e por categoria, com o detalhe de cada lançamento.
- Proposições de autoria, discursos, eventos com presença registrada, órgãos, comissões e frentes.
- Emendas individuais ao Orçamento da União de deputados federais e senadores, com os valores do Portal da Transparência.
- Candidaturas no TSE: resultado, total de bens declarados, plano de governo e endereços de redes e sites declarados pelo candidato.
- Financiamento de campanha no TSE: receitas por fonte e por origem, despesas contratadas por tipo e os maiores fornecedores com CNPJ.
- Atos do Poder Executivo federal e agenda oficial da Presidência.
- Posicionamentos declarados, só por contribuição revisada e com snapshot arquivado.
Escopo: deputados federais (513), senadores (81), Presidência da República e os 27 governadores. Piloto municipal: prefeito e vereadores de um município, com dados da câmara (SAPL e portal da transparência) e do TSE.
- Não dá nota, ranking, adjetivo nem juízo.
- Não usa imprensa, boato, rede social de terceiros nem texto gerado por IA sobre político.
- Não guarda CPF, título de eleitor, telefone, e-mail pessoal, endereço ou dado de familiar.
- Não tem conta de usuário, comentário, cookie nem rastreador.
| Entra | Não entra |
|---|---|
| Voto registrado em votação nominal | "Presença" calculada a partir de votações |
| Despesa da cota parlamentar, com fornecedor e CNPJ | CPF de fornecedor pessoa física |
| Emenda individual, com valores empenhado, liquidado e pago | Favorecido pessoa física da emenda |
| Ementa e situação oficial de proposição | Opinião sobre a proposição |
| Resumo oficial de discurso | Resumo feito por IA |
| Declaração no site oficial do mandato, com snapshot | Postagem de terceiros sobre o político |
| Resultado eleitoral e total de bens declarados (TSE) | Descrição de cada bem |
| Endereço de rede ou site declarado ao TSE | Conteúdo da rede social, link que leva a telefone |
| Receita e despesa de campanha somadas por categoria, fornecedor com CNPJ | Nome ou CPF de doador e de fornecedor pessoa física |
| Ato normativo e veto do Executivo federal | Notícia sobre o ato |
| Agenda oficial publicada pelo Planalto, com snapshot | Agenda divulgada pela imprensa |
fontes oficiais ──fetch──> data/raw ──normalize──> data/normalizado ──publish──> data/publicado ──> site estático
fetchbaixa os arquivos oficiais paradata/raw, com hash e data de captura.normalizeconverte para o modelo canônico e descarta dado pessoal.publishvincula as fontes, monta um JSON por político, valida cada arquivo contraschemas/e grava o relatório_meta/execucao.json.- O site lê os JSON publicados. Nenhum dado do visitante sai do navegador.
Fontes e status: docs/FONTES.md. Cálculos e limites: docs/METODOLOGIA.md. Decisões: docs/adr/.
Requisitos: git e Java 25 ou mais recente.
A primeira coleta transfere cerca de 1 GB (as propostas de governo do TSE vêm em ZIPs grandes, dos quais só a lista de arquivos fica guardada), ocupa cerca de 250 MB em data/raw e leva de 20 a 40 minutos.
-
Clone o repositório e entre na pasta.
-
Compile:
cd etl && ./mvnw -q -B package && cd ..
-
Colete. Rode sempre a partir da raiz do repositório:
java -Xmx4g -jar etl/target/etl.jar fetch
Para uma fonte só:
fetch camara,fetch senado,fetch tse,fetch executivooufetch sapl(câmara municipal do piloto). -
Normalize:
java -Xmx4g -jar etl/target/etl.jar normalize -
Publique:
java -Xmx4g -jar etl/target/etl.jar publish -
Confira o resultado em
data/publicado/_meta/execucao.json.
Configuração por variável de ambiente: .env.example.
Falha de uma fonte não derruba as demais: o cursor data/publicado/_meta/{fonte}.json registra a falha, e o site marca o bloco como desatualizado.
- Abra Actions > dados > Run workflow.
- Escolha a fonte (
todasou uma) e confirme. - O resumo da execução mostra os perfis publicados e o status de cada fonte.
Cada fonte tem um limite de tempo. Se uma fonte estourar o limite, o cursor registra a falha e o cache guarda o que já foi baixado. A próxima execução reaproveita os arquivos de período fechado.
Uma fonte com mais de 3 dias sem coleta válida abre uma issue com o rótulo coleta. A issue fecha sozinha quando a coleta volta.
A execução diária (06:17 UTC) e o deploy no GitHub Pages ficam desligados até o mantenedor ativar. Passos em docs/MAINTAINER_CHECKLIST.md.
Requisitos: Node.js 24. Rode antes o ETL até o publish.
cd web && npm cinpm start- Abra o endereço que o terminal mostrar.
O npm start liga data/publicado ao site em dados/.
Há três caminhos. Todos terminam em revisão humana.
- Corrigir um dado: abra uma issue com o modelo Correção de dado e informe a fonte oficial.
- Adicionar um registro manual (posicionamento declarado, agenda oficial, link oficial, mandato):
- Arquive a página da fonte em https://web.archive.org/save e copie a URL do snapshot.
- Crie o arquivo
contrib/{esfera}/{cargo}/{politico_id}/{tipo}.yaml. - Valide com
java -jar etl/target/etl.jar normalize contribejava -jar etl/target/etl.jar fetch contrib. - Abra o pull request.
- Adicionar ou revalidar uma fonte: edite
contrib/fontes.yamledocs/FONTES.md, rodefetch fontese abra o pull request.
Passo a passo, campos e exemplo completo: CONTRIBUTING.md.
| Pasta | Conteúdo |
|---|---|
etl/ |
ETL em Java (módulo único, CLI fetch, normalize, publish) |
web/ |
site em Angular |
schemas/ |
JSON Schemas do modelo, exemplos válidos e inválidos |
contrib/ |
catálogo de fontes, regras de mandato e registros manuais |
docs/ |
fontes, metodologia, política editorial, roadmap, ADRs, tarefas |
scripts/ |
verificações de privacidade |
.github/ |
CI, pipeline de dados e modelos de issue e pull request |
- Código: MIT (
LICENSE). - Dados publicados: CC BY 4.0 (
LICENSE-DADOS.md). - Titular: os contribuidores do projeto.