# Brief

**Business:** systems-atelier
**Project ID:** disclosure-bureau
**Submitted:** 2026-05-18T01:48:43Z

## Conteúdo

Audite e proponha plano de modernização completo do **The Disclosure Bureau** — sistema de investigação sobre documentos declassificados.

# Contexto

The Disclosure Bureau (https://disclosure.top) recebe documentos (PDF/imagens), extrai conteúdo via vision LLM, converte em markdown estruturado bbox-aware, gera embeddings densos + esparsos, popula grafo de co-menções entre entidades, e expõe uma wiki investigativa + agente de chat (Sherlock). Corpus atual: 116 PDFs do war.gov/ufo (DOD UAP, FBI Vault, NASA Apollo/Skylab, FOIA) → 3.435 páginas → 20.974 chunks → 34.370 entidades → 248.398 menções.

**Repo:** `/Users/guto/ufo` (commit baseline `19d0678`)
**Live:** https://disclosure.top
**Instrução canônica:** `/Users/guto/ufo/CLAUDE.md` + `/Users/guto/ufo/CLAUDE-schema-full.md`
**Memory dev:** `/Users/guto/.claude/projects/-Users-guto-ufo/memory/MEMORY.md`

## Pipeline atual
1. PDF → PNG 72 DPI (pdftoppm) + OCR (pdftotext)
2. Chunking agêntico com Sonnet 4.6 via subagents → raw/<doc>--subagent/chunks/cNNNN.md (frontmatter YAML + corpo bilíngue EN+PT-BR)
3. Embedding BGE-M3 (1024d) self-hosted FastAPI; reranker BGE-Reranker-v2-M3
4. Postgres 15.8 + pgvector 0.8 + pg_trgm + tsvector → hybrid search RRF
5. Entity mentions materializadas via ILIKE
6. Next.js 15 (App Router) + Tailwind + Sigma.js/ForceAtlas2

## Stack self-hosted (Docker Compose em VPS)
Next.js 15 / React 19 · Supabase (GoTrue, PostgREST, Realtime, Storage, Studio, Kong 2.8, Imgproxy, Meilisearch) · Postgres + pgvector · BGE-M3/Reranker (PyTorch CPU) · Traefik TLS · Sigma.js graphology.

## Restrições não-negociáveis
- PROIBIDO ANTHROPIC_API_KEY. Usar CLAUDE_CODE_OAUTH_TOKEN (Claude Code SDK) OU OPENROUTER_API_KEY (fallback).
- Bilíngue EN+PT-BR (português brasileiro, UTF-8 com acentos preservados).
- Identificadores em inglês internacional.
- Markdown puro como source-of-truth.
- VPS self-hosted via Docker Compose. Sem SaaS proprietário no data plane.

## Funciona hoje
Homepage bento 116 docs · Hybrid search 1.3s · Páginas chunk-a-chunk · Crops bbox auto-tighten · Allowlist image_types · Grafo Sigma.js ForceAtlas2 · Entity pages DB-live · Chat Sherlock (signup/login + Kong corrigido) · /admin/stats, /admin/batch, /admin/indexer.

## Gaps críticos
1. Timeline (/timeline) — eventos extraídos mas todos com placeholder "_Stub. Will be enriched in Phase 7._" — usuário furioso com esse "Phase X"
2. Case Bureau (case/case-report.md, hypotheses Tetlock, evidence Locard) — schema definido, pipeline nunca rodou
3. Dashboards investigativos reais (não admin técnico) — clusters, geografia, atores, padrões temporais
4. A2UI / AG-UI no chat — streaming tool-calls, artefatos clicáveis, crops bbox inline, multi-turn persistente
5. ELIMINAR todos os "Stubs / Will be enriched in Phase X"

## Gaps médios
Mobile responsivo precário · Sem onboarding · Sem export (PDF/CSV/PNG) · Sem saved views · Reranker 60s · Grafo trava em corpus grande.

## Visão longo prazo
Multi-tenant/multi-corpus · API pública REST+GraphQL · MCP server · Visualização temporal-geo.

## Entregáveis solicitados
1. codebase-analysis-report
2. tech-debt-assessment
3. product-discovery-brief
4. system-architecture-doc
5. ADRs onde necessário

Modo: zero-human. NÃO implementar agora — produzir análise + plano em fases priorizadas.

Outputs em ${PROJECTS_OUTPUT_DIR:-/Users/guto/ufo/.projects-outputs}/disclosure-bureau/businesses/systems-atelier/
