SOBRE · METODOLOGIA

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 siglasorientacoes e deputado_legislaturas tê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 situacao dos 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.