Abstract
iSimplifyMe built and runs this weekday job for a building-materials distributor, inside the client's own AWS account. It reads one pinned bank account through Plaid, checks each deposit against the customer receipts in the client's ERP and its card-processor payouts, and publishes the results as feeds the client's AI tools can read through Apex.
Exact-amount rules go first. Claude only proposes explanations for what the rules leave over, and a proposal is never recorded as a match.
Problem
Reconciling by hand means exporting from the bank, exporting from the ERP, and matching the two line by line. A check deposit is usually several customer payments on one slip, and card sales arrive as processor payouts, so the amounts rarely line up one to one.
A language model reads a bank description well, but it can also produce a confident match that does not add up. In a money workflow, a wrong match costs more than an open item.
Approach
One account, pinned
The client signs in to the bank through Plaid. The bank's sign-in shares every account the signer can see, with no way to choose, so the job reads one account, identified by its last four digits.
Rows from every other account are counted and dropped before anything is stored. If no account matches the pin, the run refuses to start.
Rules first
A deterministic matcher takes each deposit through four rules in order. A card-processor payout matches when the bank description names the processor and the amount agrees within three days of arrival; a deposit slip matches when the ERP receipts sharing its deposit number sum exactly to the credit.
Next, a single receipt with the exact amount matches when it is the nearest in date. Last, a combination of up to six nearby receipts matches only when exactly one combination sums to the deposit; if more than one fits, the deposit stays open for Claude.
Card receipts never match a deposit directly; they clear through their payout. Receipts entered up to ten days before the bank shows a deposit, or two days after, are in range.
Claude on the remainder
Deposits the rules cannot explain go to Claude Sonnet 5, each with the unmatched receipts dated near it. The model answers through a fixed tool, one proposal per deposit: a match, not a customer payment, or unknown, each with a confidence and a one-sentence reason.
The code re-totals the receipts behind every proposed match and labels the result. A proposal whose receipts miss the deposit by more than a dollar and more than two percent becomes unknown, with its confidence capped, so the label rests on the code's arithmetic, not the model's word.
Each proposal carries its reason, and a person decides what to post in the ERP. Once a receipt is posted, the next run matches it by the rules.
Feeds and the connector
The job publishes three feeds to a private bucket: the account balance from the latest sync, sixty days of bank transactions with their matches, and open purchase orders in the ERP's own export columns. The bucket grants Apex read access to the feeds and nothing else.
Apex serves the feeds to the client's tenant through read-only MCP tools that are off unless enabled for that tenant. The client's own Claude workspace can query them directly, with no spreadsheet export in between.
Where it runs
AWS Lambda runs the job on an EventBridge schedule in the client's own AWS account, and SST defines the stack. The bank token lives in SSM Parameter Store, and alarms fire on an error or on a run that never happened.
Status
- Live: the reconciliation runs every weekday morning, and Monday's run covers Friday through Sunday.
- The bank feed is pinned to one account; rows from the others never reach storage.
- Deposits clear through exact-amount rules first. Claude Sonnet 5, called through Anthropic's API, proposes explanations for the remainder, and every proposed match is re-totaled before it is shown.
- Three feeds refresh every weekday and are served to the client's Apex tenant through read-only, per-tenant MCP tools.
- Everything runs in the client's AWS account; Apex reads the feed files and nothing else.
Links
- Related → Apex Client Portal · Field Service Platform