Legal Contract Review Agent
ContractGuard
AIエンジニアリングのケーススタディとして構築された日本語契約リスク分析ツール — LangGraphワークフロー + pgvector RAG + マルチモーダル取り込み + 復元可能なストリーミングUX。
⚠️ 法務サービスではありません。 本リポジトリは商用運用されたことはありません。弁護士法第72条により、報酬を得て法律事務を行うことは弁護士に限定されています。本コードベースはオープンソースの技術的成果物として公開されているのみであり、出力は法的助言ではありません。
ステータス
本番環境対応のオープンソース・リファレンス実装です。フロントエンド、バックエンド、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 |
OCR | Google Cloud Vision ( |
ストレージ | 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 |
|
Google Cloud Vision (OCR) |
|
KOMOJU (決済) |
|
Resend (メール) |
|
Sentry |
|
PostHog |
|
データベース / キャッシュ |
|
アプリ |
|
APP_ENV=production の場合、上記が欠けているか FRONTEND_URL が localhost を指していると、アプリは起動を拒否します。厳密な検証ロジックは backend/config.py (validate_runtime()) に記述されています。
fly.toml および vercel.json は開発中に使用されたデプロイトポロジーを記述しています。本サービスは現在ホストされていません。
フロー
契約書(テキスト、PDF、または画像)をアップロードします。アップロードルートは、テキスト抽出、PIIチェック、トークン見積もり、契約書以外の検知、およびOCR予算ガードを実行します。
チェックアウトの参照パスが注文を作成します。KOMOJUの認証情報が空の場合、開発環境ではローカルバイパスがトリガーされます。
/review/:orderIdは永続的な分析ジョブを開始または再開し、ページ更新後も保持される進捗イベントをストリーミングします。LangGraphが条項を解析し、RAGに基づいたツール呼び出しで各条項を分析し、リスクが認められる場合にのみ提案を生成します。
/report/:orderIdは、保存されたレポート、条項の抜粋、リスクフィルター、PDFエクスポートを表示します(72時間保持)。
ユーザーの契約テキストは分析後に削除されます。ベクターストアには公開されているe-Gov法令のみが含まれており、ユーザーの契約書が埋め込まれることはありません。
デモ

リポジトリマップ
backend/agent/graph.py— LangGraphパイプライン。backend/agent/tools.py— RAGに基づいたツール呼び出し。backend/services/analysis_executor.py— 永続的な分析ジョブ + イベントソーシング。backend/rag/store.py— pgvectorストレージと検索。backend/config.py— ランタイム設定と厳密な検証。frontend/src/pages/ReviewPage.tsx— 復元可能な分析進捗UI。frontend/src/pages/ReportPage.tsx— リスクフィルターとPDFエクスポートを備えたレポートUI。tests/— バックエンドのpytestスイート。scripts/smoke_local_flow.sh— エンドツーエンドのローカルスモークテスト。
This server cannot be installed
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