Includes: - docs/: architecture, block-schema, migration-plan, product-specification - scripts/: bidi_table, decompose-decisions, extract-claims, seed-knowledge, etc. - skill-legal-decision/: SKILL.md + references + block-schema - skill-legal-assistant/: SKILL.md - skill-legal-docx/: SKILL.md + references - .claude/commands/: bidi-table skill - .taskmaster/: task config + PRDs - .gitignore: exclude legacy/, kiryat-yearim/, node_modules/, memory/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
83 lines
4.1 KiB
Markdown
83 lines
4.1 KiB
Markdown
# System Architecture — Legal Decision Assistant
|
|
|
|
## Components
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────┐
|
|
│ Nautilus Server │
|
|
│ 158.178.131.193 │
|
|
│ │
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
|
|
│ │ Coolify │ │ Traefik │ │ ezer-mishpati-web│ │
|
|
│ │ (manage) │ │ (proxy) │ │ (upload UI) │ │
|
|
│ └──────────┘ └──────────┘ └──────────────────┘ │
|
|
│ │
|
|
│ ┌──────────────────┐ ┌──────────────────────────┐ │
|
|
│ │ PostgreSQL │ │ Redis │ │
|
|
│ │ + pgvector │ │ (task queue) │ │
|
|
│ │ (legal-ai-postgres│ │ (legal-ai-redis) │ │
|
|
│ └──────────────────┘ └──────────────────────────┘ │
|
|
│ │
|
|
│ ┌──────────┐ ┌──────────┐ │
|
|
│ │ Gitea │ │ n8n │ │
|
|
│ │ (code) │ │ (automate│ │
|
|
│ └──────────┘ └──────────┘ │
|
|
│ │
|
|
│ ┌──────────────────────────────────────────────┐ │
|
|
│ │ Claude Code (via SSH or API) │ │
|
|
│ │ — Skills: legal-decision, legal-docx │ │
|
|
│ │ — MCP: postgres, n8n, cloudflare, chrome │ │
|
|
│ └──────────────────────────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────┘
|
|
|
|
External:
|
|
← Claude API (embeddings, analysis)
|
|
← Cloudflare DNS (*.nautilus.marcusgroup.org)
|
|
← User (Putty SSH / Browser)
|
|
```
|
|
|
|
## Data Flow
|
|
|
|
```
|
|
1. Document Upload
|
|
User → ezer-mishpati-web → file storage → n8n trigger
|
|
→ classify document → store metadata in PostgreSQL
|
|
→ generate embeddings → store in pgvector
|
|
|
|
2. Decision Writing
|
|
Claude Code → read source materials from DB
|
|
→ generate structure DOCX (12 blocks)
|
|
→ write each block with appropriate model/parameters
|
|
→ validate against block-schema
|
|
→ export final DOCX
|
|
|
|
3. Precedent Search (RAG)
|
|
Query → generate embedding → pgvector similarity search
|
|
→ return relevant paragraphs/decisions
|
|
→ Claude analyzes relevance → present to user
|
|
```
|
|
|
|
## Database Schema — 4 Layers
|
|
|
|
### Layer 1: Core
|
|
appeals, parties, panels, documents
|
|
|
|
### Layer 2: Decision
|
|
decisions, decision_blocks, decision_paragraphs, claims
|
|
|
|
### Layer 3: Legal Knowledge
|
|
case_law, case_law_citations, statutory_provisions, transition_phrases, lessons_learned
|
|
|
|
### Layer 4: Semantic Search (RAG)
|
|
document_embeddings, paragraph_embeddings, case_law_embeddings
|
|
(all using pgvector vector(1536) columns)
|
|
|
|
## Technology Choices
|
|
- **Database**: PostgreSQL 15 + pgvector 0.8.1
|
|
- **Embedding model**: TBD (Claude/OpenAI ada-002/local)
|
|
- **Automation**: n8n (workflow engine)
|
|
- **Code repository**: Gitea (self-hosted)
|
|
- **Deployment**: Coolify (Docker management)
|
|
- **Proxy**: Traefik v3.6 (auto-SSL)
|
|
- **Frontend**: ezer-mishpati-web (static HTML + API)
|