ooligo
n8n-flow

n8nによる法律費用の異常検知

Difficulty
中級
Setup time
90min
For
legal-ops
Legal Ops

Stack

電子請求システムから社外弁護士の請求書を取得し、LEDES 1998Bの明細項目を解析し、請求ガイドラインを決定論的なルールとして適用し、ルールに耐性のある異常(重複した担当者、スコープの拡大、契約外の作業)に対してClaudeによるセカンドパスを実行し、各請求書を4つのバケット(自動承認、通知付き自動控除、Slackレビュアーキュー、ディレクターエスカレーション)のいずれかに振り分け、すべての判断を冪等な監査ログに記録するn8nフローです。行ごとの手動レビューでは見落とす社外弁護士費用の5〜15%を回収します。Claudeの推論コストは1請求書あたり約$0.04です。

完全なワークフローは apps/web/public/artifacts/legal-spend-anomaly-n8n/legal-spend-anomaly-n8n.json(15ノード、単一トリガー)に収録されています。セットアップメモと認証情報の手順は兄弟ファイルの _README.md にあります。

使用すべきタイミング

月間50件以上の社外弁護士請求書が3社以上から継続的に流れており、APIでLEDESを公開する電子請求システム(Brightflag、Onit、BusyLamp、SimpleLegal、またはセルフホスト相当品)を通じて処理されている場合に使用します。書面による請求ガイドラインと各企業のレートカードがあり、フローのフラグをチームの実際の検出結果に対して検証できる程度に行ごとのレビューを既に実施しているメンバーがいる場合です。勝利はそのレビュアーを「すべての行をスキャンする」から「フラグ付きの項目について判断する」に移行させることであり、通常はレビュアー1時間あたり3〜5倍のスループットをもたらします。

使用すべきでないタイミング

月間20件未満であればスキップしてください——キャリブレーションのオーバーヘッドが回収可能な費用を上回ります。案件ごとのレートカードと承認済み担当者リストがない場合もスキップしてください。フローはルールベースのチェックにこれらのテーブルを活用しており、それなしではAIパスがすべての作業を行い幻覚的な違反が生じます。企業がPDFのみで請求書を送付している場合もスキップしてください。このフローはLEDESを前提としており、PDF抽出のバリアントはリコールが大幅に劣る別のワークフローです。法務オペレーションが個人的にすべてをレビューし、自分のパターン認識をチューニング済みモデルより信頼している1人体制の場合もスキップしてください——そのケースではフローは遅延を追加するだけで判断力を付加しません。

セットアップ

フローは4つのサポート用Postgresテーブル(mattersmatter_approved_timekeepersfirm_billing_guidelinesinvoice_audit_log)を前提としています——READMEにカラムとアップサートとウォーターマークを安価にするインデックスが記載されています。まずそれらをセットアップし、既存の案件管理システムまたはレートカードスプレッドシートからデータを投入し、legal-spend-anomaly-n8n.json をn8nにインポートします。READMEに従って4つのプレースホルダー認証情報(Brightflag/電子請求システム、Postgres、Anthropic、Slack)を設定します。cronトリガーをアクティブにする前にREADMEの6ステップ検証シーケンスを実行してください。冪等性チェックをスキップしないでください——重複した監査ログ行が次のウォーターマークを狂わせます。

ほとんどのチームが軽視するのはキャリブレーションです。チームが既に手動でレビューした過去100件の請求書を取得し、cronを無効にした状態でフローを通して実行し、フローの decision をチームの実際の処分と比較します。Claude — Anomaly Detection のAIシステムプロンプトと Score + Route の閾値を少なくとも2回調整してから、ルーティング分布がチームの分布に見えるようになることを期待してください。バンドルの閾値は出発点です(AIの深刻度≥0.8でエスカレーション、ルール値シェア≥15%でエスカレーション、AIフラグ数>0でレビューキューへのルーティング)——分布を確認した後に変わります。

フローの動作

Daily Cron — 7am Mon-Fri が実行を開始します。Lookup Watermarkinvoice_audit_log から最新の checked_at を読み取り、テーブルが空の場合は7日前にフォールバックし、停止後の再実行が二重処理にならないようにします。Brightflag — List New Invoices はウォーターマーク以降に提出された請求書を電子請求システムに照会し、Split Invoices が請求書ごとに1つの実行に分岐させます。Fetch LEDES File はLEDES 1998Bのblobをダウンロードし、Parse LEDES(コードノード)が構造化された明細項目——担当者ID、分類、レート、単位、タスクコード、アクティビティコード、ナラティブ、行合計——に分割します。Load Matter + Rate Card は1回のラウンドトリップで案件、承認済み担当者リスト(レート上限付き)、企業の請求ガイドラインを取得します。

Rule-Based Checks は決定論的なパスです。未承認の担当者、レートカード超過、ブロック請求(短いナラティブで企業の閾値を超える単位)、企業のキーワードリストに一致する曖昧な説明、企業の旅費出張料禁止ルールが適用される場合のパートナー分類の出張時間をフラグします。各フラグには深刻度(0〜1)と推定ドルインパクトが付き、rule_value_cents に合計されます。Claude — Anomaly Detection は次に、行明細、案件スコープ、企業ガイドラインをコンテキストとして、claude-sonnet-4-6 に対して単一のAnthropic APIコールを行い、ルールでは容易に表現できない所見——同日同タスクの重複担当者、スコープに不釣り合いな時間、スコープ拡大のナラティブ、契約外の作業——のJSON配列を返します。システムプロンプトは行インデックスの捏造や特定の行に紐づかない違反の主張を明示的に禁止しています。これはLLMベースの請求書レビューで最も一般的な失敗モードです。

Score + Route は2つのパスを単一の判断に統合します。4つのバケット(auto_approveauto_deductreviewer_queueescalate_director)は2つの if ノードを介してルーティングされます。エスカレーションはトップ5のルールとAIの所見を示すSlack Block Kitペイロードとともに #legal-ops-escalations に届きます。レビュアーキューと自動控除の判断は #legal-ops-invoice-review に届き、自動承認は監査ログのみに書き込みます。すべてのブランチは Audit Log Insert で終了し、invoice_id でアップサートするため、再実行は安全です。

コストの現実

請求書1件あたり:1件のClaude Sonnet 4.6コールで約4〜6Kインプットトークン(明細項目+案件+ガイドライン)、500〜1,000アウトプットトークン、現在の価格で約$0.04。月間500件で推論コストは約$20です。Postgresクエリは安価(インデックス付きカラムでの単一行読み取りに加えて1回のアップサート)。電子請求APIとLEDESフェッチは既存のベンダー契約の無料サイドです。n8nセルフホストは線形固定コストです。n8n Cloud Starterは$24/月でこのボリュームを十分余裕をもってカバーします。

労働コストの計算がこれを利益にします。行ごとにレビューするレビュアーは請求書1件あたり10〜15分かかりますが、フローはキューに入った項目について2〜4分(Slackのサマリーを読み、監査ログを確認し、判断する)、自動承認と自動控除のパスではゼロに短縮します。月間500件で自動承認・レビュアーキュー・エスカレーションの60/30/10の分割で、フローは推論コスト$20とオペレーターのチューニング時間1〜2時間に対して、月間約50時間のレビュアー時間を節約します。回収された費用自体がより大きなラインです。月間5%〜15%の社外弁護士費用はベンダーのケーススタディ(Brightflag、Onit)と当社のバックテストで報告されている範囲であり、月間$200k以上のポートフォリオでは運営コストを2桁上回ります。

投資回収までの期間について正直に見積もってください。最初の月はキャリブレーションであり、回収ではありません。2〜3か月目でルーティング分布が安定し、回収された費用がAP差異に現れ始めます。

成功指標

月間の回収費用を追跡します——auto_deduct のドル価値とキューからのレビュアーが確認した控除のドル価値の合計を、その月の総社外弁護士費用で割った値です。上回るべき数値は手動ベースラインです。3か月目に少なくとも3%を引き出していない場合は、フローの問題ではなくキャリブレーションの問題です。監査ログを取得し、30件の請求書をサンプリングして、チームの手動メモと比較してください。

二次指標:フラグ付き請求書1件あたりのレビュアー時間。上昇していてる場合は、Slackメッセージがレビュアーに迅速な判断のための十分なコンテキストを提供していません——フラグカテゴリだけでなく、特定の行番号とドルの差分を含むように Slack — Reviewer Queue のBlock Kitペイロードを調整してください。

代替手段との比較

電子請求ベンダーのビルトインコンプライアンスエンジン(BrightflagのAIレビュー、Onitのルールエンジン)と比較した場合:ベンダーのルールは有能ですが、AIパスは不透明でプロンプトを調整できず、プロフェッショナルサービスエンゲージメントの費用を払わずにカスタムチェックを追加できません。このフローはプロンプト、閾値、監査ログを提供します——すべて編集可能です。DIYのPythonスクリプトと比較した場合:同じロジックですが、操作上の負担がはるかに高く(cronの所有、リトライ、認証情報のローテーション、オブザーバビリティを自分で管理)、新しい企業のLEDESファイルの解析がおかしい場合のビジュアルデバッガがありません。すべての請求書を読むパラリーガルと比較した場合:パラリーガルは最初の月は新しいパターンに対してより正確ですが、その後はフローのコード化されたルールのリコールが高くなり、パラリーガルの時間は本当に判断が必要な項目のために解放されます。

n8n版がLambdaやMake.comのビルドより優れている理由は、ビジュアルグラフとノードごとのリトライセマンティクスです——Anthropic APIが忙しい朝にレート制限をかけた場合、n8nの httpRequest ノードでの自動バックオフリトライがコードなしで処理され、リトライを目視確認できます。

注意点

自動控除の通知が悪いと企業関係を損なう。 対策:Slack — Reviewer Queue のペイロードには常にルールパスとAIパスの両方からの推論チェーンが含まれ、監査ログには完全な rule_flags_jsonai_flags_json が保持されます。自動控除を企業に通知する前に、テンプレートの「控除しました」メッセージではなく、監査ログ行から企業向けの通知を生成してください——特定の行、特定のガイドライン、特定のドルインパクトが見えたときに企業は控除を受け入れます。

閾値のチューニングは案件タイプに依存する。 訴訟の請求書は取引のものとは異なるパターンがあります(大規模なディスカバリーバッチはブロック請求のように見えるが実際はそうでない)。対策:Load Matter + Rate Card クエリは matter_type を返し、Rule-Based Checks のコードノードがそれに基づく分岐場所です。グローバル閾値でフローをリリースし、4週間以内に特殊化してください。

新しい企業はベースラインができるまで偽陽性を出す。 対策:上流に WHERE invoices_seen_count < 5 チェックを追加し、その閾値未満の企業については、ルールとAIが何と言おうと decision = reviewer_queue を強制します。このチェックはバンドルにデフォルトでは含まれていません。四半期に1回以上新しい企業をオンボードする場合は、本番稼働前に追加してください。

LEDESの解析は企業が不正形式のファイルを送った場合にサイレントに失敗する。 対策:Parse LEDES コードノードは例外をスローする代わりに parse_error: 'empty_or_malformed_ledes' を返し、下流のノードはデフォルトの decision: auto_approve で監査ログに行を書き込みます——これは誤りです。Parse LEDES の後に if ノードを追加し、解析エラーを企業名と請求書IDとともに #legal-ops-escalations にルーティングして、人間が企業にクリーンなファイルを要求できるようにしてください。

Claudeは忙しい請求書で違反を幻覚させることがある。 対策:システムプロンプトは行インデックスの捏造を禁止しています。Score + Route ノードはAIの所見を、深刻度≥0.8(エスカレーション)またはルール所見とともにAIカウント>0(レビュアーキュー)でない限り、勧告的なものとして扱います。AI専用のフラグが auto_deduct を駆動することは決してありません。

スタック

n8n(クラウドまたはセルフホスト)がオーケストレーターです。Claude Sonnet 4.6はAnthropic Messages APIを通じて異常パスを実行します。Postgresは案件データベース、レートカード、請求ガイドライン、監査ログを保持します。Slackはレビュアーキューとディレクターエスカレーションを受信します。電子請求システム(バンドルのデフォルトはBrightflag。Onit、BusyLamp、SimpleLegal、またはセルフホストエンドポイントへのホストとパスの差し替えが可能)が新しい請求書の信頼できる情報源であり、フローを控除をメールで送信するのではなく書き戻しに拡張する場合は最終的な書き込みターゲットになります。

このフローは法律費用管理の運用レイヤーです。ポリシーレイヤーは書面による社外弁護士ガイドラインであり、ルールベースのチェックがそれをエンコードします。両者は一緒にしか機能しません——フローなしのガイドラインは願望的であり、ガイドラインなしのフローはポリシーを発明しようとするモデルです。

Files in this artifact

Download all (.zip)