Pular para o conteúdo

Ecossistema sens.legal

O sens.legal é uma plataforma de IA jurídica composta por três projetos especializados. Cada projeto tem uma responsabilidade distinta e eles se comunicam via APIs REST.

graph TB
subgraph "Camada Frontend"
Juca["Juca<br/>Hub Frontend<br/>Next.js 16 · React 19<br/>Block System · SSE · Auth"]
end
subgraph "Camada Backend"
Valter["Valter<br/>Agente de Jurisprudência STJ<br/>FastAPI · Python 3.12+<br/>23.4K decisões · 28 ferramentas MCP"]
Leci["Leci<br/>Agente de Legislação Federal<br/>Next.js · Drizzle ORM<br/>PostgreSQL + pgvector"]
end
Juca -->|"X-API-Key<br/>REST API"| Valter
Juca -.->|"Futuro<br/>REST API"| Leci
Valter --- VDB["PostgreSQL · Qdrant<br/>Neo4j Aura · Redis<br/>Cloudflare R2"]
Leci --- LDB["PostgreSQL + pgvector"]
AtributoValor
PapelHub frontend + orquestrador leve
StackNext.js 16, React 19, TypeScript 5, Tailwind v4
StatusDesenvolvimento ativo — targetando v0.3
HospedagemRailway (Docker)

Responsabilidades:

  • Renderizar toda a UI via Block System (11 tipos de block)
  • Gerenciar sessões de usuário (SQLite)
  • Detectar intenção do usuário e direcionar para o agente backend adequado
  • Transmitir progresso em tempo real via SSE
  • Gerenciar autenticação (NextAuth v5 — Google OAuth + magic links)
  • Gerar exportações de PDF a partir de sessões de briefing

Não trata:

  • Busca de documentos jurídicos (delegado ao Valter)
  • Processamento LLM (delegado ao Valter)
  • Consultas ao grafo de conhecimento (delegado ao Valter)
  • Verificação de citações (delegado ao Valter)
  • Consulta de legislação (será delegado ao Leci)
AtributoValor
PapelAgente backend para jurisprudência do STJ
StackPython 3.12+, FastAPI, PostgreSQL, Qdrant, Neo4j Aura, Redis
StatusProdução — totalmente deployado
URLhttps://valter-api-production.up.railway.app
AuthHeader X-API-Key com escopos (read/write/admin)
RepositórioRepositório separado (/Dev/Valter/)

Capacidades principais:

  • 23.400+ decisões do STJ indexadas e pesquisáveis
  • 28 ferramentas MCP em 3 categorias (7 knowledge, 13 graph, 8 workflow)
  • Grafo de Conhecimento: 28,5K nós, 207K arestas no Neo4j Aura
  • 4 runtimes: REST API (porta 8000), MCP stdio, MCP HTTP/SSE (porta 8001), worker ARQ
  • Pipeline de ingestão completo: Download → Extração → Transformação → Enriquecimento → Indexação

Principais endpoints de API usados pelo Juca:

EndpointMétodoFinalidade
/v1/retrievePOSTBusca jurisprudência do STJ (híbrida: BM25 + semântica + KG)
/v1/verifyPOSTVerifica precisão de citações contra documentos fonte
/v1/graph/optimal-argumentPOSTGera argumentos jurídicos ótimos (a favor/contra)
/v1/graph/divergenciasGET/POSTAnalisa divergências entre ministros/turmas
/v1/graph/temporal-evolutionGETTendências temporais em padrões de decisão
/v1/similar_casesPOSTEncontra casos similares baseado em características
/v1/factual/*VariadosEndpoints de análise factual
/healthGETHealth check (retorna 200 quando operacional)
AtributoValor
PapelAgente backend para legislação federal
StackTypeScript, Next.js 16, Drizzle ORM, PostgreSQL + pgvector
Statusv0.1-pre — apenas schema do banco, sem rotas de API
RepositórioRepositório separado (/Dev/leci/)

Estado atual: O Leci possui um schema de banco com 6 tabelas mas ainda sem superfície de API:

TabelaFinalidade
regulation_typesTipos de normas jurídicas
regulationsMetadados das normas
document_nodesNós estruturais dos documentos jurídicos
embeddingsEmbeddings vetoriais para busca semântica
suggestionsSugestões geradas por IA
revisionsHistórico de revisões (a única forma sancionada de mutar texto jurídico)

Princípio de design chave: apply_revision() é a única função que pode modificar texto jurídico, garantindo uma trilha de auditoria completa.

Cronograma de integração: Planejado para o Juca v0.6+, condicionado ao desenvolvimento da REST API do Leci.

Abordagem atual: O Juca se comunica com o Valter via chamadas diretas à REST API. A camada de adapter (src/lib/adapters/) fornece uma interface unificada para que o orquestrador não precise saber qual agente backend está chamando.

Autenticação: O Valter usa autenticação por chave de API via header X-API-Key. O Juca armazena a chave na variável de ambiente VALTER_API_KEY. O modelo de autenticação para cenários multi-usuário é uma decisão pendente.

🚧 Funcionalidade Planejada — A integração com MCP (Model Context Protocol) está planejada para interação mais rica entre o Juca e os agentes backend. O Valter já suporta MCP com 28 ferramentas.

Os três projetos seguem estas convenções:

ConvençãoValor
Nomenclatura de branchfeature/[issue]-[descrição]-[agente] (ex.: -claude, -codex)
Formato de commitfeat(scope):, fix(scope):, docs:, chore:
Agentes de IAClaude Code (local) + Codex (nuvem) — nunca na mesma branch
Builds locaisProibidos — delegar ao CI/Railway
DocumentaçãoStarlight (Astro) com en-US + pt-BR