The desk before
A treasury analyst opens seven bank portals, downloads seven files in five formats, and reconciles them against the blotter. Two hours, every morning, before anyone can say what the position is.
The obvious move is to automate the download and the match. That part is mechanical, and it is the part every vendor demonstrates.
The part that matters is underneath it. When the analyst finds a line that does not match, they know that this counterparty books value date one day late, that this account posts fees separately, and that anything under a certain size from that corridor is a rounding artefact and should be excluded. None of that is written down. It is judgement, held by one person, and it is the actual product.
Encoding judgement, not replacing it
So the first thing we built was not a matching engine. It was a place to put the rules.
Column mappings per source, because every bank exports differently and the mapping is knowledge, not configuration. Exclusion rules with a reason attached, because a rule without its reason is unmaintainable within a quarter. Tolerance bands per corridor. Value date adjustments per counterparty.
Once those existed as an artefact, the matching engine was almost boring to write. It is a loop over rules somebody deliberately stated.
Where we stopped
We did not automate the decision to break a match. A line that fails every rule surfaces to a human with the full trail: what was compared, which rule excluded what, why the engine could not close it. The human decides.
We did not let a model infer the rules from history. It could probably approximate them. But an approximated rule cannot be defended to an auditor, and cannot be corrected by the analyst who knows the real one. A rule you cannot read is a rule you cannot own.
We did not automate the sign off. Somebody puts their name on the position each morning. That is not inefficiency, that is accountability, and removing it would have made the system worse while making the demo better.
What actually changed
The two hours became about fifteen minutes, most of it spent on the handful of lines that genuinely need a person.
But the outcome that mattered more was this. When the analyst took two weeks of leave, the desk kept running. Not because a model had learned to be them, but because the thing that lived only in their head was now a file in a repository, reviewed like anything else, with the reasoning attached.
The rule we now apply
Before automating any operational process, ask where the judgement lives. If it lives in a person, the first deliverable is the artefact that holds it, not the engine that runs it.
Automation applied to undocumented judgement just moves the fragility somewhere harder to see.
