soberaniadigital.org.br
  • Python 57.6%
  • HTML 22.3%
  • CSS 14.5%
  • JavaScript 5.6%
Find a file
2026-04-12 15:53:39 +00:00
api Deploy sem dados pesados 2026-04-12 15:38:59 +00:00
assets Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
css Deploy sem dados pesados 2026-04-12 15:38:59 +00:00
js Deploy sem dados pesados 2026-04-12 15:38:59 +00:00
scripts Deploy sem dados pesados 2026-04-12 15:38:59 +00:00
.gitignore Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
apoio.html Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
contrato.html Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
estados.html Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
index.html Deploy sem dados pesados 2026-04-12 15:38:59 +00:00
municipios.html Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
nginx-soberaniadigital.conf Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
processamento.html Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
proposta.html Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
quemsomos.html Adicionando dados extras do site + paginas 2026-04-12 15:53:39 +00:00
README.md Fix na URL do PROJETO 2026-04-12 15:45:02 +00:00

Soberania Digital — soberaniadigital.org.br

Painel publico de transparencia que expoe quanto o Brasil gasta com contratos publicos, com foco inicial em tecnologia proprietaria estrangeira (Microsoft, Oracle, SAP, AWS, Google, IBM).

Objetivo politico: mostrar ao cidadao brasileiro o volume de dinheiro publico que sai do pais para corporacoes estrangeiras de tecnologia, quando alternativas livres e soberanas existem.

Objetivo tecnico: construir o maior datalake de contratos publicos do Brasil, com auditoria automatizada via IA para detectar irregularidades, lock-in, e descumprimento de leis de transparencia.

Site: https://soberaniadigital.org.br Codigo: https://git.pop.coop/soberania-brasileira/digital Iniciativa: PopSolutions Cooperativa (https://pop.coop)


Numeros Atuais

Metrica Valor
Contratos no banco 952.711
Valor total mapeado R$ 829+ bilhoes
Fontes de dados 11
Estados cobertos 27/27
Municipios com dados 5.137 de 5.570 (92.2%)
Contratos auditados por LLM 9.690
Lock-in detectado 302 contratos
Score medio de conformidade 41.8/100

Stack

  • Frontend: Alpine.js + HTMX + CSS puro (zero frameworks pesados)
  • Backend: FastAPI (Python)
  • Banco: PostgreSQL
  • Scrapers: Python (httpx, psycopg2)
  • LLM local: Ollama + Gemma 3 4B (classificacao e auditoria via rede neural)
  • Servidor: Debian + Nginx + Proxmox (datacenter pop.coop, Barueri-SP)

Arquitetura

soberaniadigital/
├── index.html                  # Painel principal (dashboard de gastos)
├── estados.html                # Gastos por estado (27 UFs)
├── municipios.html             # Gastos por municipio (5.570 do IBGE)
├── contrato.html               # Detalhe de contrato individual + auditoria LLM
├── processamento.html          # Monitor de processamento LLM ao vivo
├── proposta.html               # O Que Propomos
├── quemsomos.html              # Quem Somos (cadastro via gov.br SSO)
├── apoio.html                  # Apoiadores institucionais
├── css/
│   └── style.css               # Design system completo (~3000 linhas)
├── js/
│   └── app.js                  # Alpine.js stores e logica global
├── data/
│   ├── dashboard.json          # JSON pre-agregado para o frontend (~7MB)
│   ├── llm_stats.json          # Snapshot de stats do processamento LLM
│   ├── municipios_faltantes.json # Municipios sem dados (cross-ref IBGE)
│   ├── apoiadores.json         # Apoiadores institucionais
│   ├── uniao/                  # Contratos federais (executivo/legislativo/judiciario)
│   ├── estados/                # Resumos e contratos por estado
│   ├── municipios/             # Contratos por municipio
│   └── raw/                    # Dados brutos de cada fonte (~15GB)
├── scripts/
│   ├── db.py                   # Camada PostgreSQL (tabelas, indices, views)
│   ├── normalize.py            # Gera JSONs do frontend a partir do banco
│   ├── populate_ibge.py        # Popula tabela IBGE com 5.570 municipios
│   ├── llm_enrich.py           # Pipeline de classificacao/auditoria via LLM
│   ├── scraper_pncp.py         # PNCP busca por keyword (TI)
│   ├── scraper_pncp_full.py    # PNCP enumeracao completa por data (TODOS contratos)
│   ├── scraper_pncp_municipios.py # PNCP busca focada nos municipios faltantes
│   ├── scraper_transparencia.py # Portal da Transparencia (CGU)
│   ├── scraper_comprasgov.py   # ComprasGov (dados abertos de compras federais)
│   ├── scraper_siconfi.py      # SICONFI/Tesouro Nacional (DCA todos municipios)
│   ├── scraper_tcesp.py        # TCE-SP (778k contratos)
│   ├── scraper_tcesp_despesas.py # TCE-SP despesas por municipio
│   ├── scraper_tcers.py        # TCE-RS (balancete + contratos)
│   ├── scraper_tcees.py        # TCE-ES (contratacoes + despesas)
│   ├── scraper_tcemt.py        # TCE-MT (despesas CSV)
│   ├── scraper_tcepb.py        # TCE-PB (SAGRES)
│   ├── scraper_tcepe_despesas.py # TCE-PE (despesas municipais)
│   ├── scraper_tceba.py        # TCE-BA (criado, nao rodado)
│   ├── scraper_tcece.py        # TCE-CE (criado, nao rodado)
│   ├── scraper_tceto.py        # TCE-TO (criado, nao rodado)
│   ├── scraper_ceis_cnep.py    # CEIS + CNEP (empresas impedidas/punidas)
│   ├── scraper_querido_diario.py # Querido Diario (gazetas municipais, 350+ cidades)
│   ├── recategorize.py         # Recategorizacao de contratos
│   ├── migrate_to_pg.py        # Migracao SQLite -> PostgreSQL
│   └── run_scrapers.py         # Orquestrador de scrapers
├── api/
│   ├── llm_stats.py            # FastAPI: stats LLM, feed ao vivo, detalhe contrato
│   └── auth.py                 # SSO gov.br (OpenID Connect)
├── .config/
│   └── settings.env            # Credenciais (GITIGNORED)
└── nginx-soberaniadigital.conf # Config Nginx (SSL, proxy, cache)

Fontes de Dados

Operacionais (dados no banco)

Fonte Tipo Contratos Valor Cobertura
TCE-SP Tribunal de Contas SP 778.350 R$ 143B SP (645 municipios)
PNCP Portal Nacional Contratacoes 85.201 R$ 465B Nacional (busca keyword)
TCE-ES Tribunal de Contas ES 23.020 R$ 99B ES
TCE-MT Tribunal de Contas MT 21.437 R$ 1.8B MT
Transparencia Portal da Transparencia CGU 11.559 R$ 51.9B Federal
SICONFI Tesouro Nacional (DCA) 9.358 R$ 49.4B Nacional (agregado)
PNCP Full PNCP enumeracao completa 9.338+ R$ 3.3B+ Nacional (em andamento)
TCE-RS Tribunal de Contas RS 8.826 R$ 11.8B RS
TCE-PB Tribunal de Contas PB 2.847 R$ 622K PB
ComprasGov Compras do Gov Federal 2.721 R$ 3.7B Federal
TCE-PE Tribunal de Contas PE 54 R$ 4.1M PE (parcial)

Em desenvolvimento

Fonte Status Descricao
PNCP Full Rodando Enumeracao completa ~1.5M contratos, 49 dias processados
CEIS/CNEP Rodando Blacklist de empresas impedidas/punidas
Querido Diario Pronto Mineracao de gazetas municipais (350+ cidades)
TCEs restantes Planejado 18 estados sem scraper (MG, RJ, BA, PR, etc.)
TCMs Planejado Tribunais de Contas Municipais (BA, GO, PA, RJ, SP)
TransfereGov Planejado Convenios e transferencias federais

Banco de Dados (PostgreSQL)

Tabelas principais

Tabela Registros Descricao
contratos 952.711 Contratos normalizados de todas as fontes
api_raw 19.000+ Respostas brutas das APIs (auditoria)
llm_enrichment 9.690 Classificacao e auditoria via LLM
ibge_municipios 5.570 Referencia IBGE (todos municipios do Brasil)
fornecedores_alvo 12 CNPJs das big techs monitoradas
fornecedor_canonical 6.653 Deduplicacao de nomes de fornecedores
opacidade_orgao 4.257 Indice de opacidade por orgao
scrape_log 200+ Log de execucao dos scrapers
empresas_impedidas em carga CEIS + CNEP (blacklist)
contrato_dedup nova Deduplicacao cross-source
contrato_audit nova Auditoria LLM completa
omissao_pncp nova Contratos que deveriam estar no PNCP mas nao estao

Coluna numero_pncp

Identificador unico nacional do PNCP (CNPJ_ORGAO-TIPO-SEQ/ANO). Permite deduplicacao cross-source e rastreamento de contratos entre fontes.


Pipeline LLM (Processamento de Linguagem Natural)

Cada contrato e processado por uma rede neural local (Gemma 3 4B via Ollama) que classifica e audita automaticamente:

Classificacao

  • e_ti: boolean — e Tecnologia da Informacao?
  • categoria: licenca_software, cloud, hardware, servicos_ti, rede, telecom, etc.
  • fornecedor_normalizado: nome limpo (ex: "BRASOFTWARE INFORMATICA LTDA" -> "Microsoft")
  • produto: nome do produto/servico identificado
  • lock_in: detecta se o contrato direciona para marca especifica
  • alternativa_livre: sugere alternativa open source

Auditoria de Conformidade (Lei 14.133/2021)

  • campos_ausentes: campos obrigatorios vazios (CNPJ, modalidade, valor, datas, link)
  • nao_conformidades: lista de problemas encontrados
  • score_conformidade: nota 0-100 por contrato

Resultados ate agora

  • 9.690 contratos processados
  • 64% confirmados como TI, 32% falsos positivos filtrados
  • 302 contratos com lock-in detectado (R$ 3B+ em Microsoft, Oracle, Google)
  • Score medio de conformidade: 41.8/100 (orgaos publicam com menos da metade da conformidade exigida)

Configuracao

  • Modelo: gemma3:4b (Q4_K_M, 4.3B parametros)
  • Servidor: Ollama via SSH tunnel (notebook do mantenedor)
  • Paralelismo: OLLAMA_NUM_PARALLEL=8
  • Throughput: ~0.9 contratos/segundo

Frontend

Paginas

Pagina URL Descricao
Painel /index.html Dashboard principal com totais, graficos, filtros
Estados /estados.html Ranking de gastos por estado (27 UFs)
Municipios /municipios.html Gastos por municipio (5.570 do IBGE, drill-down)
Processamento LN /processamento.html Monitor ao vivo do pipeline LLM
Contrato /contrato.html?id=... Detalhe individual com auditoria de conformidade
O Que Propomos /proposta.html Projeto politico (ChaskiMail, Kankunapa, pop.coop)
Quem Somos /quemsomos.html Cadastro via gov.br SSO
Apoio /apoio.html Apoiadores institucionais

Menu de navegacao

[Painel] [Dados v] [Processamento LN] [O Que Propomos] [Quem Somos] [Apoio]
              |
              ├── Estados
              └── Municipios

Design

  • Fundo escuro (#0a0f1a), verde bandeira (#009739), amarelo (#FFDF00)
  • Tipografia: JetBrains Mono (dados), Source Serif 4 (texto)
  • Inspiracao: The Pudding, ProPublica, Brasil.io
  • Responsivo (mobile-first)

Como rodar

Requisitos

  • Python 3.11+
  • PostgreSQL 15+
  • Node.js nao necessario (frontend puro)

Setup

cd soberaniadigital
python -m venv .venv
source .venv/bin/activate
pip install httpx psycopg2-binary python-dotenv pyjwt fastapi uvicorn

# Configurar credenciais
cp .config/settings.env.example .config/settings.env
# Editar com suas chaves

# Inicializar banco
python -c "from scripts.db import init_db; init_db()"

# Popular tabela IBGE (5.570 municipios)
python scripts/populate_ibge.py

Scrapers

# PNCP completo (TODOS os contratos, ~1.5M)
python scripts/scraper_pncp_full.py

# PNCP busca por keyword (TI)
python scripts/scraper_pncp.py

# Portal da Transparencia (federal)
python scripts/scraper_transparencia.py

# SICONFI (Tesouro Nacional — todos municipios)
python scripts/scraper_siconfi.py

# TCE-SP (Sao Paulo — maior dataset)
python scripts/scraper_tcesp.py

# CEIS/CNEP (empresas impedidas)
python scripts/scraper_ceis_cnep.py

# Querido Diario (gazetas municipais)
python scripts/scraper_querido_diario.py

# Municipios faltantes (busca focada PNCP)
python scripts/scraper_pncp_municipios.py --uf BA MA PE

LLM Enrichment

Requer Ollama rodando com modelo gemma3:4b (local ou via SSH tunnel).

# Processar contratos de alto valor
python scripts/llm_enrich.py --limit 25000 --batch-size 8

# Processar por estado
python scripts/llm_enrich.py --uf SP --batch-size 8

# Processar por fonte
python scripts/llm_enrich.py --fonte pncp --batch-size 8

Gerar frontend

# Regenerar dashboard.json e JSONs do frontend
python scripts/normalize.py

API

# Stats LLM + feed ao vivo
uvicorn api.llm_stats:app --host 0.0.0.0 --port 8081

Plano Estrategico: 5 Camadas de Captura

A estrategia e: nenhuma fonte unica e confiavel. Cruzando varias fontes, detectamos tanto os contratos quanto a malandragem de quem nao publica.

Camada 1 — Fontes Federais

PNCP Full, ComprasGov, Portal da Transparencia, TransfereGov

Camada 2 — Fontes Estaduais/Municipais

27 TCEs + 5 TCMs (Tribunais de Contas)

Camada 3 — Mineracao de Gazetas

Querido Diario (350+ municipios), DOU (Diario Oficial da Uniao). Contrato que aparece na gazeta mas NAO no PNCP = descumprimento da Lei 14.133.

Camada 4 — Cruzamento e Enriquecimento

CEIS (empresas inidoneas), CNEP (empresas punidas), CNPJ da Receita Federal.

Camada 5 — Auditoria e Deteccao

Deduplicacao cross-source, detector de omissao PNCP, auditoria LLM completa.


  • Lei 14.133/2021 — Nova Lei de Licitacoes (campos obrigatorios em contratos)
  • Lei 12.527/2011 — Lei de Acesso a Informacao (transparencia ativa)
  • Art. 5 XXXIII CF — Direito constitucional a informacao
  • Lei 12.846/2013 — Lei Anticorrupcao (empresas punidas)

Creditos

Projeto da PopSolutions Cooperativa (pop.coop) Marcos Mendez e colaboradores