Skip to main content
Glama
Abishai95141

fincon

by Abishai95141

証拠をもって帳簿を締める。穴埋めではない。

FinCon は、決済ゲートウェイが支払ったと主張する金額と、銀行が実際に受け取った金額を照合し、複式仕訳を書き、残ったものをランク付け・価格付けしてデスクにルーティングします。すべてのマッチには、監査人が私たちなしで再導出できる算術が付随します。


問題

既存の照合ソフトウェアはすでに取引の90〜99%をマッチングできている。 Trintech は99%以上を公表している。NetSuite は信頼度スコアリング・アシスタント付きの N:M ルールを搭載している。その問題は解決済みであり、「当社の AI はより良くマッチングする」 と売り込むことは、誰も支援を必要としていない唯一の次元での競争にすぎない。

自動化後も残るコストは2つあり、どちらもマッチングの問題ではない。

テール(残差)は理由が付かないまま戻ってくる。 銀行フィードの自動化により、照合は約47分から例外処理のみに短縮される——これは1つの統計にすべてが集約されている:マッチしたレコードはそもそもコストではなかった。しかし、失敗する1〜10%はフラットなキューとして戻ってきて、経理責任者は文脈を手作業で1行ずつ再導出しなければならない。件数は減った。1件あたりのコストは変わらなかった。

そしてマッチ率は劣化する。 自動マッチ率は達成されるものではなく、維持されるものだ。新しいベンダー形式が登場すると、誰かがルールを書くまでマッチングは静かに劣化し、ルールの作成はエンジニアリングの門番に阻まれる——つまり、例外を理解している人が、それを修正できる人であることは決してない。

経理責任者が今日やっていること:3つのエクスポートを取得し、行レベルでは不可能なので支払いレベルでマッチングし、差額を穴埋めとして計上し、合わないときは Excel で3日間過ごし、仕訳を手入力し、そして同じテールが翌月も戻ってくるのを眺める。


Related MCP server: MCP-Finance-Reconciliation

解決策

オープンなインプット、検証済みのコミット。 モデルが提案する。決定論的エンジンが証明する。指名された人間が決定する。

AI が担う仕事は3つ。そしてそれは、AI が必要とされるまさに3つだ

これはチャットボットを貼り付けたルールエンジンでも、算術を推測するモデルでもない。モデルは、決定論的システムには絶対にできない仕事に正確に向けられている:

誰も設定していない形式を読む

見たこともないレイアウトの決済ファイル。モデルは生の行を12行読み、パース仕様——区切り文字、ヘッダー行、最小通貨単位、非 ISO 日付——を作成する。統合プロジェクトなしで取り込む。

テールに名前を付ける

算術で解決できなかったものが、エンジンが導出したニアミスとともにモデルに送られ、コード・仮説・引用された根拠とともに約 2.1秒 で返ってくる。

明日のルールを書く

ブレークを自分の言葉で解決する。モデルはそれを防いだであろう決定論的ルールを誘導する。R-DUP-06 はこの方法で、経理責任者の一文から書かれ、それ以降すべてのクローズで発動している。

システムは時間とともによりエージェント的になるのではなく、より決定論的になる。 これはエージェント製品が通常老化する方向とは逆であり、これが全体のテーゼである。

そしてフェンスで囲まれている。だからこそオンにできる

言語モデルはルックアップでは95.6%から、多変量計算ではほぼゼロにまで崩壊し、しかも自信満々に失敗する。そこでモデルは構造上、算術から隔離されている——以下のすべての境界は、誰かがそれを削除すると失敗するテストである:

  • クローズ内にモデル呼び出しなし。 6つのステージ、モデル呼び出しゼロ、そしてレシートにその旨が記載される。

  • 提案は導出済みの回答を上書きできない。 せいぜい P2 であり、P0 ARITHMETIC を上書きすることはできない——エンジンが導出した項目は、そもそも提示すらされない。

  • 生成されたコードは実行されない。 evalexec もない。アダプターは、閉じたパース動詞の語彙によって読み取られる宣言型仕様である。

  • どのツールも権限を持たない。 ポリシー、許容差、符号規則、ルールセットを受け入れる MCP ツールは1つもない——生成されたスキーマに対してチェックされる。

すべての行に証明を、そして正直な4つの結末

受け入れられたすべてのマッチは、信頼度スコアではなく算術オブジェクトを出力する:両側のレコード ID、ゼロに収束する残差、消費された許容差、発動したルール。証明に合格していないマッチはマッチではなく、マッチ数にも現れない。

match M-0412   tier T2 subset-sum   rule R-017@v3
  payout    BANK/2026-08-14/CR         +4,378.21
  charges   87 × settlement rows       +4,612.90
  refunds    4 × settlement rows         -118.40
  fees     162 × settlement rows         -114.02
  ────────────────────────────────────────────
  residual                                  0.00    tolerance used 0.00 / 0.50
  verdict   PROVEN      provenance  P0 ARITHMETIC

残ったものはすべて、キャッシュ影響 × 経過日数でランク付けされ、デスクにルーティングされる。各項目は複式仕訳で終了する——計上する繰り越す追跡する、または償却する——あなたの名前のもとで、署名済みポリシーによって二重に制約される。


インパクト

エンジンが存在する前に作成されたラベルに対して測定され、決定ログのみから再導出された結果:

自動マッチ率

90.9% — 22アンカーのうち20、ティア別 T0=17 T1=2 T4=1

誤マッチ

0.00%

例外カバレッジ

6 / 6 — 仕込まれた欠陥がすべて発見された

分類

4 / 6 正解

曖昧性

1 / 1 検出され、推測ではなく拒否された

仕訳

23件、バランス済み — そして beancount エクスポートは beancount 自身によって再ロードされる

クローズ時間

1.4秒、モデル呼び出しゼロ

汎用性は測定されており、主張ではない。 2つ目の照合——所得税局からの Form 26AS と TDS 受取勘定元帳を、4月〜3月の年度にわたって TAN + section + quarter でマッチング——は、同じエンジンでエンジンへの変更ゼロで実行され、そのゲートによってバイト単位で検証される。

「わからない」と明示する箇所。 実際のクローズにおける7項目のうち4つは E14 ——エンジンは理由を説明できない——であり、それはもっともらしい推測に平滑化されて間違ったデスクにルーティングされるのではなく、テールの先頭に印刷される。E09 は一時停止すべきものだ:2つの異なるサブセットが許容差内で同じ貸方に合算されるため、選ぶべき正解は存在せず、最初に見つけたサブセットを返すすべてのツールは、そこで自信満々に間違っている。


アシスタントを向ける — MCP

FinCon は Model Context Protocol サーバーである。「10月のクローズを妨げているものは何か、大きい順に」 と尋ねると、レコードを読み、決定論的クローズを実行し、証明を検証し、項目を解決して署名する——あなたとして。なぜなら、あなたが発行したトークンを保持しているからだ。

// Claude Desktop, Claude Code, or any MCP client
{
  "mcpServers": {
    "fincon": { "url": "https://fincon.astutecomputer.com/mcp" }
  }
}

Cognito による OAuth、RFC 9728 に基づくオリジンでのディスカバリ、動的クライアント登録。あるいは自分のファイルに対して stdio で実行する:make mcp

21のツール。そのうち4つが書き込みを行う。 アシスタントは他人ではない——あなたの認証情報を保持しており、そのトークンの sub はブラウザセッションが解決するのと同じ文字列である。つまり、あなたができることを実行でき、すべての決定は、それが通過したドアを記録するため、1年後にはどの項目を自分で読み、どれを委任したかを判別できる。重要な境界——償却上限、予算、残高チェック、誰も開いていない項目——は、誰が呼び出しているかという問題では決してなく、エージェントにも同様に適用される。


アーキテクチャ

モデルが提案する → エンジンが証明する → 人間が決定する。 証明か名前なしに境界を越えるものはない。

  SOURCES                    ENGINE  (no model, ever)                 RECORD
  ─────────                  ────────────────────────                 ──────
  bank CAMT.053 ┐            ┌──────────────────────┐
  settlement    ├─ intake ──▶│ block → match         │──▶ verify ──┐
  order register┘   │        │ T0 exact              │   re-derive │
  Form 26AS     ┘   │        │ T1 tolerant           │   from raw  │
                    │        │ T2 subset-sum         │   records   │
              5 proofs       │ T4 declared           │             ▼
              row count      └──────────┬───────────┘      ┌──────────────┐
              control total             │                  │ double entry │
              roll-forward         unmatched               │ + balance    │
              type/domain              │                   │   assertion  │
              idempotence              ▼                   └──────┬───────┘
                              ┌────────────────┐                  │
                              │ near-miss      │                  ▼
                              │ diagnosis      │           hash-chained
                              │ (arithmetic)   │           decision log
                              └───────┬────────┘                  │
                                      │ genuinely unexplained     │
                                      ▼                           │
                        ╔═════════════════════════╗               │
                        ║  MODEL  (proposes only) ║               │
                        ║  adapter synthesis      ║               │
                        ║  classification         ║               │
                        ║  rule induction         ║               │
                        ╚═══════════╤═════════════╝               │
                                    │ P2 at best, never overwrites P0
                                    ▼                             │
                        ┌───────────────────────┐                 │
                        │  HUMAN decides        │◀────────────────┘
                        │  book · carry · chase │
                        │  · write off · sign   │
                        └───────────┬───────────┘
                                    ▼
                          close pack · journal.csv
                          journal.beancount · POST /v1/verify

証明ティア。実際のクローズには、算術だけでは誰も導出できない項目が含まれるからだ。ルールは黙って移動しないことであり、証明できないものを拒否することではない:

P0 ARITHMETIC 誰でも再導出可能 · P1 RULE 昇格され回帰テスト済みのルールが発動 · P2 ATTESTED 指名された人間が承認 · P3 DECLARED 明示されたギャップを伴って受け入れ。

AWS でホスト

https://fincon.astutecomputer.com で稼働中——ap-south-1 の1つの CloudFormation スタック。議論に値する4つの決定事項と、この環境が意図的に欠いているものを含む完全な内訳は、docs/14-AWS.md に。

   Cloudflare DNS ──▶ ALB (ACM, TLS 1.3) ──▶ ECS Fargate ──┬─▶ EFS  runs + uploads
                       :80 → :443           1 task          ├─▶ Cognito   identity
                       /healthz 30s         256cpu/512mb    ├─▶ Secrets Manager
                                            screens · API   └─▶ CloudWatch Logs
                                            · MCP /mcp

S3 ではなく EFS。決定ログは追記専用かつハッシュチェーンであり、ライターは POSIX ロックを取るため——そして flock は EFS では静かに動作せず、その選択は危うく覆るところだった。パブリックサブネット、NAT なし——単一タスク環境のための月額32ドルのゲートウェイを、ALB のみを許可するセキュリティグループと引き換えに廃止。イメージはコミット sha でタグ付けされ、決して latest ではないため、ロールバックは名前で指定できる。


実行する

make setup     # uv sync
make gen       # regenerate the synthetic batches from a seed
make verify    # every green gate
make serve     # → http://127.0.0.1:8000/
make eval      # 4 ablation arms, 9 metrics, batches A and B
make mcp       # MCP on stdio

make testmake verifyAPI キーを必要としない——モデルバックのゲートは除外され、出力にその旨が明記される。なぜなら、静かにスキップされて緑と読めるゲートこそ、このリポジトリ全体が扱っている失敗だからだ。


私たちなしで検証する

主張は*「私たちの数字を信じてください」*ではない。監査人に決定ログとソースファイルを渡せば、アカウント不要で当社の状態に一切触れない公開エンドポイントで、すべてのマッチを再導出できる:

curl -X POST https://fincon.astutecomputer.com/v1/verify \
     -H 'content-type: application/json' -d @proof.json

すべての判定は、それが生成されたポリシーを明示し、そのポリシーが有効であったか呼び出し元提供であったかをスタンプする——なぜなら、誰かが持ち込んだポリシーの下で生成された判定が、当社のポリシーの下で生成されたものと区別できなくなっては決してならないからだ。


まだできないこと

できることだけを列挙した README は、パンフレットである。

  • 小規模で検証済み — 数百行、2つのゲートウェイ、1つの通貨。

  • 7つのブレークのうち4つはまだ名前が付いていない。 推測ではなく、報告されたもの。

  • テールは記憶しない。 ブレークはコンテンツフィンガープリントされるため、同じものは来月も認識できる——しかし、「4ヶ月連続」 を示すものはまだない。

  • settlement_3way は3つのレッグではなく2つをバインドする。 ゲートウェイ ↔ 銀行は完了。次は注文レジスタ ↔ ゲートウェイで、そこに収益漏れが潜んでいる。

  • 1つのモデル、1つのプロンプト、1つのプロバイダー、そして同じ作者がジェネレーターとエンジンの両方を書いた——だからこそ敵対的セットは凍結され、ミューテーションスイートが存在する。


ドキュメント

CLAUDE.md

常設コンテキスト——ルール、語彙、8つの不変条件

STATUS.md

各ゲートを証明するコマンド出力付きのライブビルド状態

docs/01-DECISION-SPEC.md

問題、解決策、トレードオフ

docs/08-AS-BUILT.md

現在実際に動作しているもの

docs/10-THE-USER-FLOW.md

フローとその価値

docs/13-THE-SCREENS.md

すべての画面と、それが答える質問

docs/14-AWS.md

AWS環境の全容

docs/decisions/

ADR——そのうち2つは不可逆的

FinConを試す →  ·  お問い合わせ

Install Server
F
license - not found
B
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Automates month-end close reconciliation tasks including bank statement matching, GL account reconciliation, intercompany balance checking, and close task tracking.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    An accounting-ops agent that reconciles payments against open orders, auto-books provably safe payments through a deterministic policy gate, and escalates exceptions to a human queue with audit trails.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Deterministic verification for AI-generated analysis. Reconciliation, consistency and Excel-integrity checks that stop the line when the numbers don't add up.
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/Abishai95141/FinCon'

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