MAPA DA VIOLÊNCIABRASIL — CAMADAS SEPARADAS
REGISTRO — FOGO CRUZADO · GEOLOCALIZADO
INDÍCIO — NOTÍCIAS/OSINT · PRECISÃO MUNICIPAL
OFICIAL — SINESP/MJSP · AGREGADO MENSAL
INDÍCIO ≠ ESTATÍSTICA OFICIAL — AS CAMADAS NUNCA SE MISTURAM
METODOLOGIA

A moldura inegociável

01

Indício não é estatística.

As três camadas têm fidelidades diferentes e nunca se misturam. Cada ponto no mapa declara sua natureza: registro, indício ou dado oficial.

02

Indício serve para investigar.

Nunca para acusar. Anomalia estatística aponta onde olhar — jamais conclui sobre eventos ou pessoas específicas.

03

Apartidário, com fonte.

Toda afirmação carrega a origem do dado e a ressalva metodológica. O código é aberto — AGPL-3.0, auditável por qualquer pessoa.

AS CAMADAS, LADO A LADO

CAMADA
FONTE
NATUREZA
PRECISÃO
ATUALIZAÇÃO
Radar de tiroteios
Fogo Cruzado · API v2
registro georreferenciado
exata (lat/lon)
tempo quase real · 4 RMs
Camada OSINT
Google Notícias RSS + IA (keyword-first)
indício de notícia
municipal (dicionário IBGE)
ingestão por cron · nacional
Mapa oficial
SINESP/MJSP · Base VDE
estatística oficial
município / UF
mensal · nacional
Radar de anomalia
SIM/DATASUS × VDE × ISP-RJ × MJ/Orcrim
inferência estatística
UF · pares de porte
anual / semanal (digest)

FONTES DE DADOS

FOGO CRUZADOTiroteios georreferenciados — RMs de Rio de Janeiro, Recife, Salvador e Belém
SINESP/MJSPBase VDE — homicídio doloso oficial por município e UF (medido em vítimas)
SIM/DATASUSMortalidade — homicídio (X85–Y09) × causa indeterminada (Y10–Y34)
ISP-RJCriminalidade municipal do Rio de Janeiro
IBGEMalha de estados, municípios e centroides (geocoding por dicionário)
MJ/ORCRIMMapa das organizações criminosas 2024 — presença de facção por UF
GOOGLE NOTÍCIASRSS — matéria-prima da camada OSINT (classificação keyword-first)

AVISOS

Não é alerta de emergência

Em urgências, ligue 190. Esta aplicação não mede risco individual em tempo real.

Indício não é prova

Camadas de notícia e anomalia não devem ser usadas para vigilância, previsão de crime ou conclusões sobre pessoas específicas.

O dado oficial também erra

Subnotificação, revisões e diferenças metodológicas entre fontes existem — por isso o radar de anomalia existe.

O MAPA OFICIAL — COMO LER

A fonte é a Base VDE do SINESP/MJSP (carga nacional, 27 UFs e municípios, de 2015 em diante). O valor exibido é de vítimas registradas, não ocorrências. A taxa por 100 mil usa população IBGE 2025 enquanto a série populacional histórica não é integrada.

O score 0–100 é posição relativa, não severidade absoluta. Ele é o percentildo município entre os outros carregados naquele período e indicador — recalculado a cada recorte. "Crítico" significa "perto do topo do que foi carregado", não violência absoluta alta. Para comparar de verdade, use a taxa por 100 mil ou as vítimas absolutas.

"Sem dado" (a fonte não informou) é distinto de "zero registrado" (a fonte informou 0) — eles nunca se confundem no mapa.

O RADAR DE ANOMALIA — TRÊS LENTES

01

Ciclo eleitoral

O homicídio reportado "some" na janela pré-eleitoral? Comparamos cada UF consigo mesma (índice sazonal ago–out ÷ média do ano) e com os pares de mesmo porte(diff-in-diff) — nunca ranking cru (IPEA). Só vira "forte" cruzado com presença de facção (Review of Economic Studies 86(2), 2018).

SINESP/VDE × MJ/ORCRIM
02

Governança criminal

Intensidade de homicídio (homicídios ÷ óbitos totais) relativa à mediana nacional, cruzada com facção. Intensidade atipicamente baixa + facção podeindicar controle/"pax" — ou refletir fatores estruturais. Hipótese a investigar, não leitura fechada.

SIM/DATASUS × MJ/ORCRIM · 27 UFs
03

Homicídios ocultos

Homicídio (X85–Y09) cai enquanto a morte por causa indeterminada (Y10–Y34) sobe acima da tendência nacional — a morte não some, muda de coluna. Comparação sempre relativa (anti-alarmismo); motivação: SciELO 2025 (~43,6% das MVCI seriam homicídios).

SIM/DATASUS · CID X85–Y09 × Y10–Y34

A CAMADA OSINT — PIPELINE

  1. 1 · Classificação keyword-first — palavra-chave decide se é violência armada, antes de qualquer IA.
  2. 2 · Geocode por dicionário IBGE — 5.564 municípios, sem LLM (e sem confundir bairro/rua homônimo com município).
  3. 3 · Dedupe determinístico — funde notícias do mesmo fato, sem embeddings.
  4. 4 · Só então, o LLM — o restante cai num rodízio de provedores gratuitos.

No mapa, o indício OSINT é sempre o ◆ losango âmbar, com precisão municipal e fonte citada — visivelmente distinto do registro do Fogo Cruzado. Indício, não registro.

COMO É CONSTRUÍDO

  • ⚙️ Next.js + TypeScript · Tailwind v4 · MapLibre GL — sem tile pago.
  • 🔒 server-only + assets versionados — dado pesado fora do bundle.
  • 🤖 Rodízio de 6 IAs gratuitas (Gemini · Groq · Cloudflare · Mistral · OpenRouter · Together).
  • ⏱️ Cron no GitHub Actions — ingestão frequente no plano gratuito.
  • 🛡️ CSP estrita + Permissions-Policy — segurança que já pegou bug real.
  • ✅ node:test · ESLint · Greptile · Snyk · Playwright · AGPL-3.0.