Back to Reconciliation Engine
Recon Engine
Technical detail

The whole interface, written down.

3 named operations, the data layer behind them, and the design decisions worth arguing about. These are the real names an agent calls, so you can check this page against the product in a trial rather than taking it on faith.

MCP surface
Single endpoint
Datastore
None β€” pure compute
Embedded UI
Minimal paste-and-reconcile SPA
Design Decisions

Design Decisions

How it is built, and why it was built that way.

Five ordered passes over a shared row pool

Exact reference, then exact amount and date, then a tolerant window, then grouped subset-sum for one-to-many and many-to-one, then whatever is left becomes a typed exception. Each pass consumes rows, so nothing is double-matched.

Backed by
recon.match

Integer cents, never floats

Every amount is parsed to integer cents before comparison. You will not lose a match to a rounding artefact, and you will not see a variance that exists only in binary floating point.

Normalise first, so you see parse problems before they become variances

Dry-run a feed and get back each row's parsed amount, ISO date and cleaned reference, plus warnings for ambiguous dates and unparseable amounts. Bad input announces itself.

Backed by
recon.normalize

No database, by design

The engine holds nothing. It takes two arrays, returns lines and a summary, and forgets. That makes it trivially safe to run against sensitive financial data and trivially easy to reason about.

Typed exceptions an agent can route

Results come back as matched, amount mismatch, date drift, missing from bank, missing from ledger, or unmatched. Each status maps cleanly to a different follow-up action.

Backed by
recon.summary
Agent Tools

Agent Tools

All 3, named.

An agent picks tools by name, so this list is the real interface rather than a category diagram. Every name is copied verbatim from the source and checked by a script on each build.

recon.matchrecon.normalizerecon.summary
Interfaces

Interfaces

The wires that already exist.

Because every app speaks the same tool protocol against the same identity, data moves by tool call rather than by nightly export.

Receives from
Core Toolkit
CSV / XLSX parsing

Spreadsheet feeds are parsed by the core toolkit before they reach the engine.

Check it against the product

Every name on this page is callable in a trial tenant. If something here does not match what you find, we would rather hear about it than have you discover it later.