Skip to main content
Glama
WIndFate

Legal Contract Review Agent

by WIndFate

ContractGuard

License: MIT Python 3.11+ LangGraph

AIエンジニアリングのケーススタディとして構築された日本語契約リスク分析ツール — LangGraphワークフロー + pgvector RAG + マルチモーダル取り込み + 復元可能なストリーミングUX。

⚠️ 法務サービスではありません。 本リポジトリは商用運用されたことはありません。弁護士法第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

AIワークフロー

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 (デプロイリファレンス)

クイックスタート (ローカル)

ローカル実行には OpenAI APIキー のみが必要です。

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

その後、http://localhost:5173 を開き、docs/samples/sample-contract-ja.txt をアップロードしてください。

この最小構成モードでは:

  • ✅ プレーンテキストの契約書およびテキストベースのPDF(テキスト選択可能)はエンドツーエンドで動作します。

  • 画像 / スキャン済みPDFのOCR は無効です。有効にするには 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