Pular para o conteúdo

controlepopular.br

O que é o Controle Popular

Um portal independente de transparência pública. Ele não produz informação nova: reúne o que órgãos públicos já publicam — espalhado por dezenas de sistemas, em linguagem administrativa — e apresenta em um só endereço, organizado por cidade e por tema, em português comum.

O dado sobre um contrato de prefeitura já é público: está no Portal Nacional de Contratações Públicas. O dado sobre um projeto de lei federal já é público: está na API de Dados Abertos da Câmara dos Deputados. O que não existia era o lugar onde um morador encontra as duas coisas sem saber de antemão que os dois sistemas existem, como se chamam e qual campo consultar. O portal é esse lugar.

O público-alvo é o cidadão sem formação jurídica ou estatística — é por isso que termo técnico é explicado na própria tela em que aparece, e não numa página de glossário que ninguém abre.

A regra que organiza o projeto inteiro: todo número exibido tem fonte identificável, e todo número que resulta de estimativa aparece com a taxa de erro ao lado. Quando não há dado, a tela diz que não há — não preenche o espaço com uma aproximação silenciosa. Um portal que cobra procedência dos outros não pode publicar número sem procedência própria.

Este portal usa inteligência artificial — e o portal está em revisão

Sem enfeite: parte do dado que você lê aqui foi lido, extraído ou classificado com o auxílio de modelos de linguagem — as ferramentas usadas na construção do projeto foram Claude Code, Kimi Code e ZaiCode. E, por causa disso, o portal está em revisão — não é um estado transitório que vai acabar numa data marcada, é uma condição permanente de um projeto que usa IA na coleta e pede para ser conferido.

Isso não significa que os números são palpite. O projeto segue uma doutrina que separa duas coisas que costumam ser confundidas: o modelo extrai, o programa calcula. Na análise garantista do Congresso, por exemplo, o modelo de linguagem nunca recebe a pergunta “este projeto é garantista ou reducionista?”. Ele recebe uma tarefa de extração: apontar quais direitos a proposta afeta, em que direção, por qual mecanismo — e, obrigatoriamente, citar o dispositivo legal e o trecho literal que sustentam cada apontamento. O rótulo final (garantista, reducionista, misto...) não sai do modelo: é aritmética sobre esse formulário, feita por código determinístico e reexecutável. A mesma separação organiza a análise de vício legislativo e a atribuição de tema da legislação em /ambiental/legislacao (até 13/08/2026, /ambiental/direito-critico — unificada com a legislação estadual num painel só, a URL antiga redireciona pra cá).

A analogia é a do escrivão e do juiz: o modelo é escrivão, preenche um formulário de campos fechados e anota de onde tirou cada informação; o rótulo é aritmética sobre esse formulário. Isso não torna a IA inofensiva — se a extração erra, o rótulo calculado a partir dela também erra, porque o código confia no que o formulário diz. É por isso que item com confiança baixa não vira manchete: fica marcado na tela como “requer revisão humana” e sai dos rankings de alerta e de bom exemplo, mesmo continuando publicado ao lado do rótulo.

Isso já falhou em público, e a correção ficou na própria página em vez de sumir no histórico do código. Até 13/08/2026, a página de legislação e precedentes por tema de direito afirmava que a atribuição de tema de cada lei e precedente “veio de leitura humana”. Não veio — veio de leitura assistida por IA, registrada linha a linha com o trecho que sustenta cada tema. A página hoje diz o que é, mantém o que continua verdadeiro (é reexecutável e auditável item a item pelo trecho citado) e declara que está em revisão. Quem cobra procedência dos outros deve o mesmo padrão sobre si — e isso inclui dizer em público que errou.

Nenhum número do portal é escrito por modelo de linguagem: o assistente de conversa de cada zona responde só com o contexto que vem do banco, e o registro de camadas do mapa 3D bloqueia e conta qualquer feição marcada como demonstração antes de exportar. O que a IA faz é ler texto não estruturado — ementa de lei, inteiro teor de projeto — e transformar em campos que o código então soma, filtra e rotula por regra fixa, nunca por opinião do modelo.

As seis frentes

O portal se organiza em seis frentes, chamadas internamente de zonas. A descrição de cada uma vive num arquivo único — lib/zonas.ts — lido tanto pela home quanto pelo rodapé de cada zona, para que o mesmo texto não precise ser corrigido em quatro telas quando algo muda.

Seis cidades estão publicadas hoje: Araçuaí-MG, Belo Horizonte-MG, Betim-MG, Diamantina-MG, Itinga-MG, São Paulo-SP. A cobertura varia muito entre elas — a seção “O que ainda falta”, mais abaixo, mostra a diferença em vez de escondê-la.

Volume publicado, medido no banco do portal no momento em que esta página foi gerada:

Municipal (seis cidades)
Contratos12.991
Licitações21.583
Atos oficiais (leis, decretos, portarias)10.317
Proposições de câmaras municipais13.317
Vínculos de servidores139.052
Vereadores158
Escolas13.874
Estabelecimentos de saúde36.157
Obras59
Contratos com alerta de risco4.495
Congresso Nacional
Proposições5.562
Parlamentares593
Bancadas e frentes parlamentares354
Vínculos de parlamentar com bancada58.785
Comissões e demais órgãos54
Votações nominais0
Judiciário
Tribunais7
Magistrados cadastrados252
Destes, com data de nascimento levantada69
Indicações registradas140
Cadeiras com ocupação registrada57

A data de aposentadoria compulsória só é calculável para os 69 magistrados com data de nascimento levantada, de 252 cadastrados — o restante é curadoria manual em andamento.

Ambiental (Minas Gerais)
Licenças ambientais19.704
Normas ambientais (ALMG, SEMAD, SIAM)15.318
Destas, com tema atribuído (30,6%)4.690
Reuniões do COPAM454
Itens de pauta2.367
Barragens (FEAM)249
Barragens (SNISB)2.240
Autos de infração estaduais (CAP/SEMAD)78.039
Autos de infração federais (IBAMA)20.046

Metodologia

De onde vem o dado

Entre a fonte pública e a tela existe um conjunto de programas em Python que o projeto chama de ETL — extrair da fonte, ajustar o formato, gravar no banco. Contratos e licitações vêm do PNCP; população, PIB e malha territorial, do IBGE; despesas e receitas municipais, do SICONFI; proposições e parlamentares, das APIs da Câmara dos Deputados e do Senado; licenciamento e autuação ambiental, da CAP/SEMAD-MG e do IBAMA; barragens, do SNISB (ANA) e da FEAM. Cada tabela do banco declara, no próprio coletor, a fonte exata que consulta.

Uma prática que vale destacar: cada coletor documenta, no cabeçalho do próprio arquivo, não só a fonte e as armadilhas medidas nela, mas o que ele deliberadamente não coleta — para que a ausência de um dado não seja lida como afirmação de que o fato não existe. “Zero barragens da FEAM” num município, por exemplo, não é “nenhuma barragem no município”: é só o recorte que aquele coletor cobre.

A análise garantista: o modelo extrai, o programa calcula

O portal classifica leis e projetos de lei conforme os direitos que ampliam ou restringem — garantista quando ampliam, reducionista quando restringem. É uma escolha de valor, declarada como tal em vez de escondida atrás de uma aparência de imparcialidade.

A régua que decide isso é um arquivo único, com 24 direitos e 17 mecanismos, cada direito com as suas âncoras legais. O mesmo arquivo é lido pelo programa que monta a instrução do modelo, pelo programa que valida a resposta e pela página que explica a metodologia — se a régua mudar, as três mudam juntas, porque um portal cujo argumento é a régua transparente não pode publicar uma metodologia diferente da que aplica.

Item que não cita dispositivo legal válido é descartado antes de contar — a coluna do banco que guarda essa citação nem aceita valor vazio. Item com confiança abaixo de 0,5 continua sendo calculado e publicado, mas marca a análise como “requer revisão humana” e sai dos rankings de alerta e de bom exemplo.

Cobertura é amostra, não censo

O portal não analisou toda a legislação nem todo projeto de lei — analisou uma parte, e essa parte precisa aparecer sempre que um rótulo aparecer.

Cobertura da análise garantista
Atos oficiais municipais analisados (universo 10.317)794
Proposições municipais analisadas (universo 13.317)432
Proposições federais analisadas (universo 5.562)676

1.902 análises publicadas ao todo — 6,5% do universo combinado das três origens. A predominância de rótulos “neutro” entre os analisados não é falha: boa parte da produção legislativa municipal é denominação de rua e ato administrativo, e a instrução do modelo manda devolver lista vazia nesses casos em vez de forçar uma classificação que não existe.

A análise de vício legislativo — em construção

Pergunta diferente da anterior: não o que a norma faz com os direitos, mas se ela foi feita do jeito certo, por quem tinha competência para fazê-la. Cinco categorias — vício de iniciativa, vício de competência, inconstitucionalidade material, vício formal, contrabando legislativo (“jabuti”, ainda documentado mas não aplicado por falta de dado de tramitação). A palavra “indício” é obrigatória na própria régua: nada aqui pode virar veredito — controle de constitucionalidade é função do Judiciário, e a lista de rótulos possíveis nem contém a palavra “inconstitucional”. Cobertura hoje: 15 análises municipais e 14 do Congresso — é calibração, não levantamento.

A taxa de erro do mapa 3D de terras públicas

É a única frente do portal cujo número principal é estimativa de método próprio, e não leitura direta de fonte oficial — por isso é a única que publica a taxa de erro dentro do próprio cartão de apresentação. “Vazio cadastral” significa área que nenhum imóvel rural declarou no Cadastro Ambiental Rural; o CAR é autodeclaratório, então ausência de declaração não é ausência de dono, e muito menos prova de que a terra é pública.

Quanto este número erra

Quarenta polígonos foram sorteados ao acaso e conferidos um a um, a olho, sobre imagem de satélite em 2026-08-09. 12 dos 40 não eram vazio cadastral — uma taxa de erro de 30,0%, que com o tamanho da amostra pode estar entre 18.1% e 45.4%.

O erro tem uma causa só: faixa de estrada entrando no polígono — 18 dos 18 falso-positivos, somando os dois recortes. Não é ruído espalhado, é um defeito conhecido do recorte — e por isso mensurável e corrigível.

Esta correção ainda não está no mapa. Desde 12/08/2026 o pipeline já subtrai a faixa das estradas, e a medição de controle mostrou o efeito esperado: menos área e mais polígonos, porque a estrada parte o contorno em dois. Mas aplicar isso à bacia inteira exige reprocessar o cadastro dos 56 municípios, o que ainda não rodou. As áreas que você vê aqui são as de antes da correção — e algumas delas ainda têm estrada dentro do contorno.

O projeto aceita publicar até 33% de erro. Como 30,0% está abaixo disso, o número foi publicado. Esse limite é uma escolha, não uma medição — e a medição acima vale independentemente dele.

Vazio cadastral não é terra devoluta. É área que ninguém declarou no CAR: candidata a verificação, nunca afirmação de que a terra é pública.

A parte técnica

O portal é estático

Não há banco de dados em produção. O comando de build lê o Postgres uma única vez e transforma tudo em HTML pré-renderizado, publicado como arquivo — uma visita ao site não toca em banco nenhum. A vantagem é dupla: sem banco em produção não há custo de banco nem indisponibilidade por sobrecarga de consulta; a contrapartida é que o site só muda quando alguém reconstrói, o que roda numa rotina agendada (coleta → build → trava de contagem de páginas → publicação), que recusa publicar se a contagem de páginas cair abaixo de um piso ou encolher demais em relação à publicação anterior — o sinal de que algo saiu errado na coleta, não no build.

Aplicação webNext.js (App Router), React
Acesso a dadosDrizzle ORM sobre PostgreSQL
PublicaçãoCloudflare Workers, via adaptador OpenNext
ColetaPython 3.12, ~150 arquivos em três pacotes de ETL
Esquema do bancomigrations SQL numeradas, em quatro pacotes
Testes automatizadosbiblioteca TypeScript + suíte do globo 3D
Publicação alternativaexport estático para GitHub Pages, sem servidor
CódigoAGPL-3.0-or-later, repositório público

O dado é público; o código que o organiza também — github.com/FinweeJur/controle-popular.

O que ainda falta

Parte do produto, não um apêndice. A cobertura entre as seis cidades é desigual — algumas lacunas são de acesso (fonte que exige protocolo ou tem certificado incompleto), outras são limite estrutural da própria fonte (um sistema municipal que devolve total por órgão, não nome por nome). Votações nominais do Congresso e de câmaras municipais estão em zero linhas hoje: a frente anuncia a função, e o código da rota registra que a tabela ainda está vazia. A projeção de vacância do Judiciário é parcial, porque depende de data de nascimento levantada nome a nome. A cobertura da análise garantista é de poucos por cento do acervo total — ampliá-la é trabalho de execução, o método já está validado.

Declarar a lacuna é conteúdo; disfarçá-la é defeito. É a mesma régua que rege todo o resto desta página.