Skip to main content
Glama
WIndFate

Legal Contract Review Agent

by WIndFate

ContractGuard

License: MIT Python 3.11+ LangGraph

Анализ рисков японских договоров, созданный в качестве учебного проекта по разработке ИИ — рабочий процесс LangGraph + pgvector RAG + мультимодальный ввод + восстанавливаемый потоковый UX.

⚠️ Не является юридической услугой. Этот репозиторий никогда не использовался в коммерческих целях — статья 72 Закона об адвокатах Японии (弁護士法第72条) резервирует право на оказание платных юридических консультаций за лицензированными адвокатами. Кодовая база публикуется исключительно как технический артефакт с открытым исходным кодом. Результаты работы не являются юридическими заключениями.

中文文档 | 日本語 | License

Статус

Готовая к эксплуатации эталонная реализация с открытым исходным кодом. Весь стек — фронтенд, бэкенд, OCR, платежи, электронная почта, Postgres, Redis, отслеживание ошибок — подключен с использованием реальных интеграций и готов к развертыванию. Он просто никогда не был запущен по замыслу (статья 72 Закона об адвокатах).

Синтетический японский договор находится в docs/samples/, поэтому локальный процесс можно протестировать от начала до конца сразу после клонирования.

Архитектура

flowchart LR
  U[React/Vite UI<br/>text, PDF, image upload] --> API[FastAPI routers]
  API --> Q[Quote + PII + OCR budget guards]
  Q --> PAY[KOMOJU checkout<br/>reference implementation]
  PAY --> JOB[Persistent analysis job]
  JOB --> SSE[Recoverable SSE stream<br/>status + events + after_seq]
  JOB --> LG[LangGraph pipeline]
  LG --> P[parse_contract]
  P --> A[clause-by-clause risk analysis]
  A --> T[tool call: analyze_clause_risk]
  T --> RAG[(PostgreSQL pgvector<br/>331 Japanese legal articles)]
  A --> S[tool call: generate_suggestion<br/>medium/high risks only]
  S --> REP[report generation + translation]
  REP --> CACHE[(Redis 72h report cache)]
  REP --> DB[(PostgreSQL orders/reports/costs)]

Технологический стек

Слой

Стек

Фронтенд

React, Vite, TypeScript, i18next (9 языков)

Бэкенд

FastAPI, SQLAlchemy async, Alembic, APScheduler

ИИ-рабочий процесс

LangGraph + вызовы инструментов OpenAI, MCP-сервер

RAG

PostgreSQL pgvector, 331 общедоступный статут e-Gov Японии

OCR

Google Cloud Vision (DOCUMENT_TEXT_DETECTION)

Хранилище

PostgreSQL (заказы / отчеты / события), Redis (кэш 72ч + ограничение частоты запросов)

Платежи

KOMOJU checkout

Электронная почта

Resend

Наблюдаемость

Sentry + PostHog

Инфраструктура

Docker Compose (локально), Fly.io + Vercel (эталон развертывания)

Быстрый старт (локально)

Для локального запуска требуется только ключ API OpenAI.

cp .env.example .env
# Edit .env: set OPENAI_API_KEY
docker compose up --build

Затем откройте http://localhost:5173 и загрузите docs/samples/sample-contract-ja.txt.

В этом минимальном режиме:

  • ✅ Договоры в виде обычного текста и текстовые PDF-файлы (с возможностью выделения текста) работают от начала до конца.

  • OCR для изображений / сканированных PDF отключен. Чтобы включить его, добавьте GOOGLE_APPLICATION_CREDENTIALS_JSON и GOOGLE_VISION_PROJECT_ID.

  • KOMOJU / Resend автоматически обходятся в режиме разработки — никаких реальных платежей, никаких реальных писем.

Настройка для продакшена

Репозиторий подготовлен для развертывания в продакшене путем установки APP_ENV=production и предоставления учетных данных для каждой внешней службы:

Служба

Необходимые переменные окружения

OpenAI

OPENAI_API_KEY

Google Cloud Vision (OCR)

GOOGLE_APPLICATION_CREDENTIALS_JSON, GOOGLE_VISION_PROJECT_ID

KOMOJU (платежи)

KOMOJU_SECRET_KEY, KOMOJU_PUBLISHABLE_KEY, KOMOJU_WEBHOOK_SECRET

Resend (почта)

RESEND_API_KEY

Sentry

SENTRY_DSN, VITE_SENTRY_DSN

PostHog

POSTHOG_API_KEY, VITE_POSTHOG_KEY

База данных / Кэш

DATABASE_URL (управляемый Postgres + pgvector), REDIS_URL (управляемый Redis)

Приложение

FRONTEND_URL (не localhost), ADMIN_API_TOKEN

Когда APP_ENV=production, приложение отказывается запускаться, если отсутствует что-либо из вышеперечисленного или FRONTEND_URL все еще указывает на localhost. Логика строгой проверки находится в backend/config.py (validate_runtime()).

fly.toml и vercel.json описывают топологию развертывания, использовавшуюся во время разработки. В настоящее время сервис не размещен в сети.

Процесс

  1. Загрузите договор (текст, PDF или изображение). Маршрут загрузки выполняет извлечение текста, проверку PII, оценку токенов, обнаружение не-договорных документов и контроль бюджета OCR.

  2. Путь оформления заказа создает заказ. Пустые учетные данные KOMOJU активируют локальный обход в режиме разработки.

  3. /review/:orderId запускает или возобновляет постоянную задачу анализа и транслирует события прогресса, которые сохраняются после обновления страницы.

  4. LangGraph анализирует положения, анализирует каждое положение с помощью вызовов инструментов, основанных на RAG, и генерирует предложения только там, где это оправдано риском.

  5. /report/:orderId показывает сохраненный отчет, выдержки из положений, фильтры рисков и экспорт в PDF — сохраняется в течение 72 часов.

Текст договора пользователя удаляется после анализа. Векторное хранилище содержит только общедоступные статуты e-Gov; договоры пользователей никогда не векторизуются.

Демо

home review progress report

Карта репозитория

A
license - permissive license
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WIndFate/legal-ai-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server