Skip to main content
Glama
Abishai95141

fincon

by Abishai95141

Закрывайте книги с доказательством, а не с заглушкой.

FinCon сверяет то, что ваш платёжный шлюз говорит, что выплатил, с тем, что банк фактически получил, записывает двойную запись и возвращает остаток — ранжированный, оценённый и направленный на стол. Каждое совпадение несёт арифметику, которую аудитор может пересчитать без нас.


Проблема

Программное обеспечение для сверки уже сопоставляет 90–99% транзакций. Trintech публикует 99%+. NetSuite поставляет правила N:M с ассистентом, оценивающим уверенность. Эта проблема решена, и всё, что предлагает «наш ИИ сопоставляет лучше», конкурирует по единственному аспекту, в котором никто не нуждается в помощи.

Две издержки переживают автоматизацию, и ни одна из них не является проблемой сопоставления.

Хвост возвращается без привязанной причины. Автоматизация банковских выписок сокращает сверку с примерно 47 минут до только обработки исключений — что является всей историей в одной статистике: сопоставленные записи никогда не были затратами. Но 1–10% неудачных возвращается в виде плоской очереди, и контролёр вручную восстанавливает контекст, строка за строкой. Объём упал. Стоимость за позицию — нет.

И доля автоматического сопоставления снижается. Доли автоматического сопоставления поддерживаются, а не достигаются. Новый формат вендора незаметно ухудшает сопоставление, пока кто-то не напишет правило, а создание правил ограничено инженерией — поэтому человек, который понимает исключение, никогда не является тем, кто может его исправить.

Что контролёр делает сегодня: выгружает три отчёта, сопоставляет на уровне выплат, потому что построчно невозможно, проводит разницу как заглушку, проводит три дня в Excel, когда не сходится, вручную вводит журнал и наблюдает, как тот же хвост возвращается в следующем месяце.


Related MCP server: MCP-Finance-Reconciliation

Решение

Открытый приём, проверенная фиксация. Модель предлагает. Детерминированный движок доказывает. Названный человек решает.

ИИ выполняет три задачи, и это те три, которые в нём нуждаются

Это не движок правил с прикрученным чат-ботом и не модель, угадывающая арифметику. Модель нацелена ровно на ту работу, которую не может выполнить ни одна детерминированная система:

Читает формат, который никто не настраивал

Файл расчётов в макете, который мы никогда не видели. Модель читает двенадцать сырых строк и создаёт спецификацию разбора — разделитель, строку заголовка, младшие единицы, не-ISO дату. Она загружает без интеграционного проекта.

Называет хвост

То, что арифметика не смогла разрешить, отправляется модели с близкими промахами, которые вывел движок, и возвращается с кодом, гипотезой и цитируемыми доказательствами примерно за 2,1 с.

Пишет правило на завтра

Вы разрешаете разрыв своими словами; модель выводит детерминированное правило, которое предотвратило бы его. R-DUP-06 был написан таким образом, из предложения контролёра, и срабатывает при каждом закрытии с тех пор.

Система со временем становится более детерминированной, а не более агентной. Это противоположно тому, как обычно стареют агентные продукты, и это вся тезис.

И она огорожена, поэтому вы можете её включить

Языковые модели деградируют с 95,6% на поиске до почти нуля на многомерных вычислениях и ошибаются уверенно. Поэтому модель отключена от арифметики по построению — каждая граница ниже является тестом, который падает, если кто-то её удалит:

  • Ни одного вызова модели при закрытии. Шесть этапов, ноль вызовов модели, и в чеке это указано.

  • Предложение не может перезаписать производный ответ. Максимум P2, и оно не может перезаписать P0 ARITHMETIC — позиция, выведенная движком, даже не предлагается.

  • Сгенерированный код не выполняется. Никаких eval, никаких exec. Адаптеры — это декларативные спецификации, читаемые закрытым словарём глаголов разбора.

  • Ни один инструмент не несёт полномочий. Ни один MCP-инструмент не принимает политику, допуск, соглашение о знаках или набор правил — проверяется по сгенерированным схемам.

Доказательство в каждой строке и четыре честных завершения

Каждое принятое совпадение выдаёт арифметический объект, а не оценку уверенности: идентификаторы записей обеих сторон, остаток, сходящийся к нулю, использованный допуск, сработавшее правило. Совпадение без прошедшего доказательства не является совпадением и не появляется в счётчике совпадений.

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% — 20 из 22 якорей, по уровням T0=17 T1=2 T4=1

Ложные совпадения

0.00%

Покрытие исключений

6 / 6 — каждая внедрённая ошибка найдена

Классификация

4 / 6 верных

Неоднозначность

1 / 1 обнаружена и отклонена, а не угадана

Журнал

23 записи, сбалансировано — и экспорт beancount перезагружается самим beancount

Время закрытия

около 1.4s, с нулевым количеством вызовов модели

Общность измерена, а не заявлена. Вторая сверка — форма 26AS от Департамента подоходного налога против книги дебиторской задолженности TDS, сопоставленная по TAN + section + quarter за год с апреля по март — работает на том же движке с нулевыми изменениями в нём, подтверждённая побайтово его шлюзом.

Где он говорит, что не знает. Четыре из семи позиций в реальном закрытии — E14движок не может сказать почему — и это печатается в начале хвоста, а не сглаживается в правдоподобное предположение, направленное не на тот стол. E09 — тот, на котором стоит остановиться: два различных подмножества дают в сумме один и тот же кредит в пределах допуска, поэтому нет правильного ответа для выбора, и каждый инструмент, который возвращает первое найденное подмножество, там уверенно ошибается.


Направьте на неё ассистента — MCP

FinCon — это сервер Model Context Protocol. Спросите «что блокирует октябрьское закрытие, сначала самое крупное?» — и он прочитает запись, выполнит детерминированное закрытие, проверит доказательство, разрешит позицию и подпишет — как вы, потому что он хранит токен, который вы выдали.

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

OAuth через Cognito, обнаружение в источнике согласно RFC 9728, динамическая регистрация клиента. Или запустите его на stdio с вашими файлами: make mcp.

21 инструмент; 4 из них пишут. Ассистент — не незнакомец: он несёт ваши учётные данные, и sub в этом токене — та же строка, к которой приводит ваша браузерная сессия. Поэтому он может делать то, что можете вы, и каждое решение записывает дверь, через которую оно пришло, так что через год вы сможете сказать, какие позиции вы прочитали, а какие делегировали. Важные ограничения — потолок списания, бюджет, проверка баланса, позиции, которые никто не открывал — никогда не были вопросами о том, кто звонил, и они одинаково связывают агента.


Архитектура

Модель предлагает → движок доказывает → человек решает. Ничто не пересекает границу без доказательства или имени.

  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 — один стек CloudFormation в ap-south-1. Полный разбор, включая четыре решения, о которых стоит поспорить, и то, чего намеренно не хватает этому окружению, в 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

EFS вместо S3, потому что журнал решений является только добавляемым и связанным хэшами, и писатель берёт 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 test и make verify не требуют ключа API — шлюзы, поддерживаемые моделью, исключены и названы в выводе, потому что молча пропущенный шлюз, который выглядит зелёным, — это та самая ошибка, о которой весь этот репозиторий.


Проверьте это без нас

Утверждение не в том, чтобы «доверять нашим цифрам». Передайте аудитору журнал решений и исходные файлы, и он пересчитает каждое совпадение на публичной конечной точке, которая не требует учётной записи и не касается нашего состояния:

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

Каждый вердикт называет политику, под которой он был вынесен, и отмечает, была ли эта политика действующей или предоставленной вызывающей стороной — потому что вердикт, вынесенный под политикой, которую кто-то принёс с собой, никогда не должен вернуться неотличимым от вынесенного под нашей.


Что он пока не может

README, в котором перечислено только то, что работает, — это брошюра.

  • Проверено в малом масштабе — сотни строк, два шлюза, одна валюта.

  • Четыре из семи разрывов до сих пор не названы. Зафиксировано, а не угадано.

  • Хвост не помнит. Разрыв идентифицируется по содержимому, поэтому тот же самый можно узнать в следующем месяце — но пока ничто не говорит «четвёртый месяц подряд».

  • settlement_3way связывает два звена, а не три. Шлюз ↔ банк готово; реестр заказов ↔ шлюз — следующий шаг, и именно там прячется утечка выручки.

  • Одна модель, один промпт, один провайдер, и один и тот же автор написал генератор и движок — поэтому набор состязательных примеров заморожен, а набор мутаций существует.


Документация

CLAUDE.md

Постоянный контекст — правила, словарь, восемь инвариантов

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 — два из них необратимы

Попробовать 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