Metodologia
Como construímos os dados deste painel — fontes, transformações e limites.
Fonte primária
Todos os dados vêm dos Dados Abertos da Câmara dos Deputados.
Para cada categoria, usamos os arquivos CSV/JSON publicados em
dadosabertos.camara.leg.br/arquivos/, atualizados diariamente
pela Câmara (T+1).
A API REST oficial é evitada. Em particular, o endpoint
/votacoes/{id}/votos está quebrado desde 2020 — retorna vazio
para a maioria das votações nominais. Os arquivos CSV são a fonte canônica.
Despesas (CEAP)
A Cota para Exercício da Atividade Parlamentar tem dados em domínio
diferente: www2.camara.leg.br/transparencia/cota-para-exercicio-da-atividade-parlamentar/.
Coletamos os arquivos por ano (Ano-YYYY.csv.zip) e agregamos por
deputado, tipo e fornecedor.
Espectro político
A classificação dos partidos em esquerda · centro-esquerda · centro · centro-direita · direita · extrema-direita
vive em config/partidos.json. É uma curadoria nossa, baseada em
histórico de votações em projetos-marca, posicionamento público das
lideranças e consenso da literatura de ciência política.
Não é uma medida estatística — é uma escolha editorial documentada. Discordâncias pontuais são esperadas; o objetivo é tornar legível o posicionamento agregado, não rotular indivíduos.
Bancadas temáticas
Agrupamentos informais a partir de Frentes Parlamentares + classificação
temática. Mapeamento em config/bancadas_tematicas.json. Um deputado
pode pertencer a múltiplas bancadas. Cobertura: legislatura 57ª (2023–2027).
Comportamento de voto
As análises de governismo, disciplina, coesão
e similaridade cruzam os votos individuais (votos) com as
orientações de bancada (orientacoes) nas votações nominais da 57ª legislatura
(a partir de fevereiro de 2023). Todas consideram apenas votos Sim/Não —
obstrução e abstenção ficam de fora dos cálculos, o que pode subestimar a oposição em
votações onde ela obstrui em vez de votar Não.
- Governismo — % dos votos Sim/Não de um deputado que seguem a orientação do líder do Governo, restrito às votações em que o Governo de fato orientou. Consideramos apenas votos Sim/Não: obstrução e abstenção ficam de fora. Como a obstrução é um instrumento de oposição, o governismo de quem obstrui muito tende a aparecer um pouco mais alto do que a postura real. O denominador varia entre deputados (o Governo não orienta toda votação), por isso exibimos o nº de votações de cada um.
- Disciplina — % dos votos que seguem a orientação do próprio partido. Federações: PT/PCdoB/PV orientam pela federação "PT-PCdoB-PV"; PSOL/Rede pela "PSOL-Rede"; PSDB/Cidadania pela "PSDB-Cidadania" — tratamos a orientação da federação como a do partido. Quando o partido só vota sob um bloco maior e não tem orientação própria, a disciplina aparece como "—".
- Coesão (índice de Rice) — |Sim − Não| ÷ total de votos do partido em cada votação, na média. Mede a unidade interna; independe de orientação.
- Atribuição partidária — o voto não carrega o partido, então usamos
deputado_legislaturas(partido na legislatura). Trocas de partido dentro da mesma legislatura (janela partidária) não são capturadas. - Normalização de siglas —
orientacoesedeputado_legislaturastêm variações de caixa e truncamentos (ex.: "REPUBLIC" por Republicanos); canonizamos os dois lados antes de comparar.
Mapa de pautas (discursos)
A página Mapa de Pautas mostra sobre o que cada campo político discursa no plenário. A fonte são os discursos da 57ª legislatura (a partir de fev/2023). A camada principal são tópicos emergentes, descobertos lendo as próprias transcrições; a taxonomia oficial da Câmara fica como recorte de referência (botão "Oficial (referência)").
Descoberta (offline, uma vez): um modelo de linguagem lê a transcrição de
cada um dos ~49 mil discursos e extrai a pauta concreta, na linguagem do
próprio discurso (não a grade oficial). As pautas são agrupadas em temas
duráveis, e cada tópico recebe seus termos-assinatura e o campo político que mais
o levanta (distinção por sobre-representação, não por frequência). O resultado é congelado
num inventário versionado (config/topicos_emergentes.json), revisável e auditável.
Classificação (runtime): cada discurso tem sua pauta casada contra esse inventário congelado. Dois níveis preservados: o tema durável (guarda-chuva, ex.: "Crise do 8 de Janeiro") e a pauta específica (recorte fino, ex.: "PEC da blindagem", "marco temporal das terras indígenas").
Ressalva (transparência). Diferente da taxonomia oficial — um lookup determinístico sem IA —, os tópicos emergentes usam IA na descoberta e na extração da pauta de cada discurso. O inventário é congelado e curado por humano (não muda sozinho em produção), mas a leitura inicial é assistida por modelo. Cobertura atual: ~90% dos discursos substantivos; o restante é pauta local ou sem assunto de política pública. A taxonomia ainda está em curadoria (nomes, fusões e o balde "Outros Temas" serão revisados).
- Unidade de análise é o grupo (espectro, partido ou bancada), não o deputado individual. Um deputado mediano tem cerca de 28 discursos; dividido em dezenas de temas, o sinal individual é ruído. Agregado por grupo, fica robusto. No perfil de cada deputado a leitura temática aparece como indício, com aviso quando a amostra é pequena.
SEM_TEMA— cerca de um terço dos discursos não recebe tema substantivo: são intervenções procedurais (orientação de voto, requerimentos) e atos cerimoniais. Eles ficam fora do denominador dos percentuais, para não diluir a agenda real.- Curadoria de temas — usamos os temas oficiais da Câmara, com duas
decisões editoriais: "Processo Legislativo e Atuação Parlamentar" e "Homenagens e Datas
Comemorativas" são tratados como
SEM_TEMA(não são agenda de política pública); e criamos o tema "Atos antidemocráticos" para concentrar o debate do 8 de janeiro / anistia / golpe, que a taxonomia oficial dispersa. - Mapa de calor = ênfase relativa — a cor não é o volume bruto, e sim o quanto o grupo fala de um tema em relação à média da Câmara (1,0 = na média). Isso revela a especialização de cada campo, em vez de repetir os temas que todos discutem.
- Não é "coerência" entre fala e voto — o mapa descreve a agenda de discurso. O cruzamento com o comportamento de voto aparece apenas no agregado (governismo médio por partido), como contexto descritivo. Afirmar contradição entre o que um deputado fala e como vota exigiria um modelo de posição que não temos.
Agenda no YouTube (classificação por IA)
A página YouTube também infere o tema de cada vídeo. Diferente dos discursos (palavras-chave oficiais da Câmara, via mapa auditável), os vídeos não têm indexação oficial — o tema é classificado por um modelo de linguagem (Gemini) a partir de título e descrição. É uma regressão deliberada de defensabilidade: opaca e não-determinística, ao contrário do lookup dos discursos.
- Mistura de naturezas — só ~19% dos vídeos ficam "sem tema", mas uma amostra auditada indica que ~metade do conteúdo é campanha, comunicação pessoal ou re-upload. Temas como "Política, Partidos e Eleições" (embate eleitoral) e "Arte, Cultura e Religião" (conteúdo devocional) absorvem boa parte desse ruído. A leitura é "o que se publica", não "agenda legislativa".
- Comparação plenário×YouTube é descritiva — cruza instrumentos diferentes (lookup curado vs IA sobre título) e palcos diferentes (fala legislativa vs comunicação política). Não mede coerência nem hipocrisia.
- Sem transcrição — só título + descrição (a API não dá legendas).
Limitações conhecidas
- Campo
situacaodos deputados — não vem nos CSVs, requer chamada à API REST individual (não fazemos por enquanto). - API REST de votos — quebrada desde 2020. Confiabilidade dos CSVs é ~100×.
- Despesas — formato e domínio distintos do resto; pipeline separado.
- Atribuição das despesas — a CEAP usa um ID de cadastro próprio, diferente do ID do deputado nos Dados Abertos. A ligação entre uma despesa e a ficha do deputado é feita pelo nome. Em casos raros de homônimos entre legislaturas, despesas de pessoas diferentes podem aparecer juntas.
- T+1 de delay — os arquivos do dia anterior são publicados durante a manhã.
- IDs divergentes — votação tem ID diferente entre API e CSV; usamos sempre o do CSV.
- Bancadas e dados de presença — disponíveis a partir da 56ª legislatura (2019).
- Presença — a base só registra presenças, nunca ausências. Medimos volume de participação, não taxa de assiduidade (não existe o denominador).
- Funil legislativo — os "status" de tramitação da Câmara são microetapas processuais; resumimos em três estágios (em tramitação / arquivadas / transformadas em norma), o que é uma aproximação.
Pipeline
Coleta diária às 08:00 BRT (LXC 111 no Proxmox, systemd timer).
Os arquivos baixados são parseados (delimitador ;, padrão governo BR),
inseridos no SQLite local (camara.db, ~1,6 GB) e disponibilizados
em modo read-only para o painel.
O painel hoje roda em Dash. A migração Dash → FastAPI está em andamento.