NarcoScope

Pesquisa somente leitura sobre evidências oficiais de mercados de drogas e economia ilícita, preservando proveniência, limites de cobertura e fronteiras de privacidade.

Documentação

narcoscope

tests coverage

🌍 NarcoScope

Ao vivo: narcoscope.com · sala de imprensa de evidências: narcoscope.com/#newsroom

Status de implantação verificado em 2026-08-29: narcoscope.com está configurado e é a origem pública canônica. O apex atende à implantação da Vercel; www.narcoscope.com atende à implantação da Railway. Os metadados do registro e os agentes usam o endpoint MCP do apex.

Um explorador de dados educacional e de bem público que torna os dados do comércio mundial de drogas legíveis. UNODC, INCB e EUDA já publicam preços de rua (varejo), preços de precursores químicos e dados de fluxo/apreensões de tráfico — mas isso está enterrado em PDFs densos e CSVs que a maioria das pessoas não consegue ler. Este aplicativo é uma camada de tradução sobre esses dados públicos: gráficos limpos, mapas e explicações em linguagem simples.

Missão: democratizar dados oficiais de drogas difíceis de ler. Não é uma nova fonte de dados — é uma forma de entender a fonte existente.

Acesso a agentes e API

  • Catálogo de API RFC 9727: https://narcoscope.com/.well-known/api-catalog
  • OpenAPI: https://narcoscope.com/openapi.json
  • Manifesto MCP: https://narcoscope.com/server.json
  • MCP HTTP transmissível: https://narcoscope.com/mcp
  • Contexto de produto legível por máquina: https://narcoscope.com/.well-known/ai-catalog.json
  • Guia legível por agentes: https://narcoscope.com/llms.txt
{
  "mcpServers": {
    "narcoscope": { "url": "https://narcoscope.com/mcp" }
  }
}

O serviço MCP é somente leitura e retorna structuredContent com base em JSON Schema para cada ferramenta. A versão 1.3 suporta tanto o lane de descoberta MCP 2026-07-28 sem estado quanto o lane de inicialização legado 2025-06-18. Ele preserva estados oficiais, ilustrativos, desatualizados, indisponíveis e restritos, em vez de transformar evidências ausentes em uma pontuação.

O limite staged/live/Registry e a sequência obrigatória de publicação estão registrados em docs/MCP-1.3.0-RELEASE-GATE.md.

O que mostra

  • Preços de Rua — tendências de preços no varejo por país, com uma visão ajustada por pureza e uma lente de acessibilidade (preço expresso em dias de renda média local).
  • Fluxos e Preços de Precursores — corredores de tráfico e preços de precursores químicos, com hubs de origem (notadamente a China) destacados.
  • Mapa de Fluxo — um mapa-múndi Equal-Earth de arcos de corredores, animado ao longo do tempo.
  • Triangulação — lê apreensões contra modalidades que agências de interdição não coletam. O volume de apreensões se move com a capacidade de aplicação da lei tanto quanto com o volume de tráfico, e nada dentro dos dados de apreensão separa os dois; mortalidade por overdose (registradores de estatísticas vitais) e carga de águas residuais (químicos ambientais) podem. Onde as modalidades concordam, a leitura é confiável; onde divergem, a divergência é a descoberta — apreensões em alta com consumo estável lê-se como efeito de aplicação da lei, consumo em alta com apreensões estáveis lê-se como expansão que a interdição não viu. Cada veredito relata quantas modalidades independentes o apoiaram e se ele sobrevive à exclusão de qualquer uma delas. Caso de validação: cannabis canadense 2019→2023 lê apreensões −94% contra consumo medido em águas residuais +69%. O Canadá legalizou a cannabis em 2018, então o colapso das apreensões é a aplicação da lei parando, não a demanda parando — e a ferramenta diz isso em vez de relatar um mercado em encolhimento.
  • Designações — as ~2.600 entidades na lista OFAC SDN sob as autoridades de narcóticos e crimes transnacionais, pesquisáveis por nome ou por alias publicado pela OFAC, além de uma rede de jurisdições construída a partir dos países que o Tesouro registra para cada entidade. Análise de intermediação e pontos de articulação mostram quais jurisdições mantêm as redes designadas unidas.
  • Sala de Imprensa de Evidências — um pipeline de publicação determinístico e capaz de funcionar offline com citações em nível de frase e portões de fontes independentes. Sua primeira análise limitada mantém comércio lícito, incidentes oficiais selecionados e dados de danos dos EUA em lanes de evidência separados, e declara o que não pode ser unido ou atribuído causalmente a partir do registro público.
  • Contexto BRI Palimpsest — um lane fixo e limitado de prontidão de fontes e contexto econômico nacional para CPEC, Gwadar, CMEC, Kyaukpyu e Baluchistão. Ele preserva classes de reivindicações oficiais, independentes e modeladas, além de cobertura WDI indisponível, mas não pode entrar em inferências de mercado de drogas, atores, rotas, culpa, políticas ou causais.
  • Foco em Mianmar — detalhes em nível de província (Triângulo Dourado): regiões de produção, pressão de conflito da guerra civil, influxos de precursores da China/terceiros países, cidades de corredores transfronteiriços e volumes apreendidos. A camada de inteligência funde evidências de múltiplas fontes em pontuações de risco/confiança por região, sinaliza discordância entre fontes, pondera fontes por nível de confiabilidade, calcula uma trajetória de risco ano a ano (em alta/em baixa/estável) para que analistas vejam momentum, sinaliza um alerta de transbordamento geográfico quando uma região calma faz fronteira com uma que já cruzou o limite de alto risco, sinaliza desatualização de evidências (atual/envelhecendo/desatualizado) quando o registro mais recente de uma região é anterior ao ano de referência, descontando a confiança de acordo, e pontua a concentração de corredores de precursores com um Índice Herfindahl-Hirschman (diversificado/moderado/concentrado) para sinalizar dependência de fornecimento de fonte única — tanto um sinal de fragilidade quanto uma prioridade de interdição. Perfis de risco e o livro-razão do grafo de evidências podem ser exportados como CSV diretamente do briefing para revisão analítica offline.

Cada visão carrega uma frase "Em linguagem simples" gerada automaticamente e dicas de ferramenta que explicam cada figura em termos humanos.

Capturas de tela

Preços de Rua agora envia dados oficiais: Relatório Mundial de Drogas 2025 da UNODC, Anexo Estatístico 8.1 (preços por grama no varejo + purezas, 2019–2023, 208 registros em 69 países), com PIB per capita do Banco Mundial (2024) alimentando a lente de acessibilidade. Figuras de mapa de fluxo, precursores e Mianmar permanecem ilustrativas até a ingestão — o selo no aplicativo declara exatamente qual é qual.

Uma interface escura e orientada por movimento: um globo WebGL traça corredores de precursores a partir de seus hubs de origem (coral) em direção a nós de trânsito e destino (ciano), títulos revelam-se letra por letra, e seções surgem conforme você rola. A camada imersiva é totalmente protegida por trás de prefers-reduced-motion e recai para um canvas 2D leve em dispositivos móveis / sem WebGL.

NarcoScope — WebGL hero globe

Preços de Rua — tendências de preços + lente de acessibilidade, com um resumo em linguagem simples:

Street Prices

Mapa de Fluxo — mapa-múndi Equal-Earth de corredores de precursores, animado por ano:

Flow Map

Foco em Mianmar — detalhes do Triângulo Dourado em nível de província:

Myanmar Focus

Escopo ético (por favor, leia)

Esta ferramenta relata estatísticas publicadas e agregadas — em nível de país, anuais e (para regiões de foco) em nível de província — estritamente para conscientização, educação e pesquisa. Por design, ela não fornece dados de ponto de venda, tempo real, sub-rua ou locais navegáveis, e a camada de precursores armazena apenas logística (o quê, quanto, onde, status de controle) com nenhuma química, rotas de síntese ou rendimentos. Não é, e não deve ser usada como, um guia para obter qualquer substância.

Sinal privado ScamShield

O ambiente analítico Hetzner pode ingerir o agregado do Telegram com privacidade minimizada do ScamShield para revisão privada. Isso não entra no site ou em seus conjuntos de dados baseados em Git. Um firewall de esquema estrito rejeita mensagens brutas, IOCs exatos, identificadores de fonte, alegações de cobertura universal, alegações de elegibilidade pública e qualquer coisa que elimine o requisito de revisão humana. O importador não tem acesso à rede e retém apenas contagens agregadas, um hash do arquivo de origem, snapshots por hora e um livro-razão de recebimento somente anexação sob /var/lib/narcoscope-analyst/.

Veja deploy/private-import/README.md para o limite de confiança e o serviço de produção.

Entidades nomeadas

A aba Designações nomeia pessoas e empresas, o que todas as outras camadas evitam. A linha que ela mantém:

  • Uma designação é um ato publicado de um governo — uma entidade colocada em uma lista sob uma autoridade legal declarada em uma data declarada. NarcoScope relata o que o governo fez. Não caracteriza o que a entidade fez, não carrega nenhum campo de alegação em texto livre, e uma designação não é uma adjudicação de culpa. A OFAC remove da lista; verifique a lista ao vivo antes de confiar em qualquer linha.
  • Endereços, números de passaporte e de identificação nacional e datas de nascimento estão presentes no arquivo OFAC upstream e são deliberadamente não extraídos.
  • Jornalismo e rastreadores de crowdsourcing são pistas, não registros. C4ADS, InSight Crime, EIA, GASO e os demais estão registrados no registro de fontes e são lidos pelo scraper governado em uma fila de trabalho de analistas. Uma entidade nomeada chega a um conjunto de dados empacotado somente se também aparecer em uma lista de designação oficial. A regra está escrita em scripts/scrape/myanmar-sources.json como verification_rule.
  • O grafo de designações não tem arestas entre entidades, porque a OFAC não publica nenhuma. Inventá-las e executar centralidade sobre o resultado produziria rankings confiantes de indivíduos privados a partir de um grafo que esta ferramenta inventou. docs/ROADMAP-PARALLEL-ECONOMY.md registra os métodos excluídos por esses motivos, e por quê.

Proveniência dos dados

A maioria das figuras empacotadas agora são extratos oficiais, regenerados pelo pipeline a partir das fontes abaixo. O que ainda é ilustrativo é nomeado explicitamente: os volumes de fluxo em nível de região de Mianmar e a série de preços de precursores (a INCB publica nenhum preço de precursores). O selo no aplicativo declara qual é qual, e cada conjunto de dados gerado carrega um cabeçalho de proveniência nomeando sua fonte, data de recuperação e regras de extração.

O registro completo abrange conjuntos de dados automatizados, conjuntos de dados com etapas manuais e relatórios investigativos que alimentam a fila de trabalho de analistas em vez do aplicativo — em scripts/pipeline/sources.json. Cada entrada registra sua licença, cadência, nível de automação e o que alimenta. Duas entradas estão registradas especificamente para que o raciocínio não seja reaberto: OpenSanctions publica nenhuma licença em seus artefatos em massa e, portanto, é um ponteiro de consulta em vez de um conjunto de dados empacotado, e as licenças por coleção do OCCRP Aleph proíbem redistribuição.

Águas residuais vêm do Canadá, não da Europa. A EUDA retorna HTTP 403 para clientes que não são navegadores (na URL atual, na legada e na cópia vinculada de data.europa.eu) e a ACIC envia PDFs, então nenhum dos programas famosos pode ser automatizado. A Statistics Canada publica a mesma medição, no mesmo grão, na mesma unidade SCORE, por meio de uma API sem chave sob uma licença aberta — então esse é o padrão empacotado, e o Canadá é o segundo país totalmente triangulado. A cobertura europeia e australiana ainda precisa de uma exportação verificada através do painel CSV.

Carregue dados reais através do painel "Carregar dados oficiais (CSV)" no rodapé; cada arquivo é analisado por src/lib/ingest.ts e linhas ruins são relatadas, não descartadas silenciosamente. Veja src/lib/ingest-config-reference.md para o mapeamento de colunas.

A triagem de fontes de conflito e fluxo de precursores em Mianmar pode ser preparada com o scraper governado estilo Palimpsest:

npm run scrape:myanmar -- --out docs/sources/myanmar-observations.csv --pretty

Essa saída é uma fila de trabalho de analistas com excertos e impressões digitais de conteúdo, não dados diretos do aplicativo; verifique e codifique linhas nos esquemas CSV de guerra civil / precursores de Mianmar antes de carregá-los. Uma ontologia derivada de cada tipo de entidade e relação realmente presente nos dados é regenerada por npm run ontology em docs/ontology/. Ela é induzida por observação sobre os conjuntos de dados incluídos, em vez de gerada por um modelo de linguagem: o corpus já é tipado e marcado com proveniência, então o esquema pode ser lido diretamente dele, o que elimina completamente o risco de alucinação. É um rascunho para revisão e nunca é aplicado automaticamente a src/types.ts.

A nova aba Enterprise Intel adiciona um grafo de evidências de eventos/entidades, pontuações de risco regional, indicadores de confiança/diversidade de fontes e um registro de evidências para revisão do analista. Consulte docs/ENTERPRISE_HARDENING.md para o design fundamentado em documentação.

A aba Evidence Newsroom lê um dossiê e recibo verificados, gerados sem acesso à rede ou chamadas de modelo. A publicação exige citações de frases e visuais, independência ativa das fontes upstream para síntese, um contracaso, limitações e verificações de segurança de causalidade/culpabilidade. Consulte docs/EVIDENCE_NEWSROOM.md.

Contrato de publicação da newsroom de evidências

A newsroom é claramente rotulada como análise automatizada de evidências, com humanReviewStatus: not_recorded. Nenhum modelo generativo participa de sua construção, nenhum depoimento de especialista ou pessoa afetada é incluído, e ela nunca simula essas vozes humanas. Seu artigo inicial não faz nenhuma alegação nominal, registra o direito de resposta como not_required e publica um histórico de correções/atualizações com hashes estáveis de revisão e conteúdo.

Um registro oficial usado na construção pode apoiar uma observação atribuída. Uma síntese analítica ou metodológica exige pelo menos dois grupos oficiais upstream independentes e ativamente usados; apenas registrar uma fonte disponível, somente com capacidade ou indisponível contribui com zero corroboração. Quando os insumos carecem de um denominador de comércio lícito, junção em nível de registro, resultado adjudicado ou alocação de país defensável, a newsroom se abstém. Ela não transforma rótulos de origem, designações administrativas ou uma tendência de mortalidade separada em culpa ou atribuição causal.

As superfícies de publicação são:

  • rota do app: /#newsroom;
  • HTML autônomo: /news/china-linked-precursor-incidents-official-record.html;
  • resumo de máquina: /news/china-linked-precursor-incidents-official-record.machine-brief.json;
  • dossiê citado: /news/china-linked-precursor-incidents-official-record.dossier.json;
  • JSON Feed: /news/feed.json; e
  • feed Atom: /news/feed.xml.

Execute npm run news:build para regenerar o pacote offline e npm run news:check para verificar cada byte verificado. A build de produção executa a verificação de artefatos obsoletos antes do TypeScript e do Vite.

Tech

React 18 · Vite 8 · TypeScript · Recharts · react-simple-maps (world-atlas incluído localmente). A camada de interface adiciona Three.js / React Three Fiber (um globo hero carregado de forma lazy com pós-processamento bloom — mantido fora do pacote inicial), @react-spring/web (revelações de letras/seções e contadores animados baseados em física) e Lenis (scroll suave global) — tudo atrás de um guarda prefers-reduced-motion. O armazenamento de dados em tempo de execução (src/lib/dataStore.ts) troca dados de amostra → reais no carregamento.

Develop

npm install
npm run dev        # local dev server
npm run scrape:myanmar -- --pretty
npm run ontology   # regenerate docs/ontology/draft-ontology.{json,md}
npm run news:build # regenerate the deterministic evidence newsroom
npm run news:check # verify that checked-in newsroom artifacts are current
npm run bridge:palimpsest-bri:check # verify the pinned BRI artifact + hash
npm run build      # type-check (tsc) + production build → dist/
npm run preview    # preview the build
npm run typecheck  # tsc --noEmit
npm test           # run unit tests (Vitest)

Deploy (Vercel)

O repositório está pronto para Vercel (vercel.json fixa o framework Vite). Ou:

  • Dashboard: importe o repositório Git em vercel.com — zero configuração, detecção automática.
  • CLI: npx vercel (preview) / npx vercel --prod (produção).

Pipeline de dados

npm run data:refresh busca as fontes abertas automatizáveis (anexos do UNODC WDR, PIB do Banco Mundial, mortalidade CDC VSRR, designações OFAC SDN), regenera os conjuntos de dados incluídos e os valida contra a suíte de testes. Atualizações individuais: npm run data:overdose, npm run data:designations. Uma GitHub Action trimestral faz o mesmo e abre um PR quando os dados mudam. O registro completo de fontes (incluindo as fontes manuais e com chave de API ainda não conectadas) está em scripts/pipeline/sources.json; o playbook é docs/DATA_PIPELINE.md.

Status / TODO

  • purityAdjustedPrice() é um stub intencional concluído — agora retorna preço por grama pura e se recusa a ajustar quando a pureza é desconhecida (um n/a honesto é melhor do que comparar um preço de rua cortado com um puro). Consulte a nota editorial em src/lib/metrics.ts.
  • Carregar e verificar dados reais do UNODC/INCB Preços de rua e registros qualificados de fluxo de precursores: concluído (WDR 2025 Anexo 8.1 e o relatório de precursores INCB 2025 localizado por parágrafo). Restante: uma série de preços de precursores citável e o conjunto de dados de Mianmar.
  • Águas residuais agora incluídas (Canadá). Estender para Europa ou Austrália ainda exige uma exportação EUDA ou ACIC buscada manualmente — ambos os editores bloqueiam automação. Cada um adicionado é outro país onde a detecção de divergência funciona.
  • Uma segunda autoridade designadora para a aba Designations (hoje é somente OFAC). A lista consolidada da ONU foi avaliada e descartada — é um instrumento de contraterrorismo com quase nenhuma designação de narcóticos; o EU Sanctions Map é o candidato ativo. Consulte docs/ROADMAP-PARALLEL-ECONOMY.md para o backlog ordenado e para os métodos excluídos por motivos éticos ou de qualidade de dados.

Licença

MIT — livre para usar, adaptar e construir, com atribuição.