About the client

A UK-based financial services firm operating in a highly regulated part of the industry, responsible for administering and disbursing payments on behalf of a large portfolio of institutional clients across several UK offices.

Industry Financial Services Location United Kingdom Technologies .NET, React, Azure | AI — Document AI, GPT-4o

Background

A high-volume payment operation, run almost entirely by hand

The firm's payment operation had grown into a high-volume, high-risk manual process that was becoming harder to control at scale.

High transaction volume: The firm makes a high volume of supplier payments every month on behalf of the institutional funds it administers, spanning several offices and hundreds of underlying client accounts.

Manual, email-driven intake: Documents arrived by email and were checked individually, with no shared view of status across teams.

Repeated re-keying: The same payment details were entered by hand into several systems at different points in the process.

Rising operational risk: For a business whose credibility depends on handling other organisations' money correctly, the volume of manual work had become both an efficiency problem and a source of operational risk.

The challenge

The cost of a single wrong payment shaped every design decision

This was never a simple data-entry tool. The defining constraint throughout was the cost of a wrong payment, whether caused by an honest mistake or a fraudulent change of bank details.

Strict separation of duties: Three separate teams had to pass work between them, each able to see and do only what their role allowed.

Office- and size-based approval rules: Payment authorisation rules differed by office and by payment size, and had to be enforced by the system rather than left to individual judgement.

Fraud and error controls: The system had to detect duplicate payments, flag any change to a supplier's bank details, and enforce a second approver before funds left the account.

Regulatory auditability: The environment required complete, tamper-proof auditability, several different bank output formats, foreign-currency handling, and a live operation that had to keep running throughout.

Our approach

Discovery first, then AI used deliberately and kept in check

GoodCore ran a structured series of discovery workshops with every team involved before committing to a design, rather than a single kickoff.

Structured discovery

Workshops with every team involved surfaced the edge cases that undermine projects like this: payments split across multiple accounts, office-specific approval rules, currency handling, and the exact formats each bank and the accounting system required.

AI used as a primary path, not a default

A specialised document-extraction service was used as the primary engine, with a language model kept as a fallback only for cases it could not handle. This held running costs down.

A person confirms every field

The AI extracted the data, but a team member reviewed and confirmed every field before the payment progressed. The AI assisted the work; it did not decide anything.

Provenance built in from the start

Every field carried a record of where its value came from, and every action was written to an audit trail that could not be edited or deleted.

AI extraction with a controlled fallback

A specialised extraction service handles most documents. A general model is reserved for exceptions. A person confirms every field.

AI extraction

A specialised extraction service handles the majority of documents; a general model is reserved for exceptions.

Technical approach

Architecture decisions driven by the shape of the problem, not by default

Several of the architecture decisions followed directly from the shape of the problem, not from default technology choices.

check

Workflow

The payment lifecycle is linear and rule-based, so it was modelled as an in-process, rule-based state machine rather than a distributed orchestration engine.

check

Extraction

Because the documents form a well-defined class, a managed extraction service handled them directly, removing the need for a separate model.

check

Asynchronous processing

Extraction was moved off the request path, so a slow or retried document never blocks the people using the system.

check

Network and audit

The platform runs inside the client's own cloud tenant, network-isolated, with provenance and an append-only activity log built into the data layer from the start.

Delivery

Scope grew as discovery surfaced real complexity

Scope expanded mid-discovery: Bringing several non-standard payment types into the first phase was not a small addition: it affected the interface, the data model, and every downstream output.

Timeline protected, not stretched: The plan was re-cut to absorb the extra work through parallel workstreams and additional resourcing, which held the client's go-live date.

Outcomes

One controlled path for every payment, regardless of type or office

The firm moved from an informal, email-driven process to a single platform where every payment follows the same controlled path.

One workflow, every office and type: A single controlled workflow now covers every office and every payment type.

Manual entry sharply reduced: AI-assisted extraction removed most of the manual data entry, with a person confirming every field before use.

Controls that cannot be skipped: Duplicate and bank-detail checks became enforced steps built into the workflow.

Full ownership retained by the client: The complete codebase and infrastructure were handed over, built to the client's standards and documented in full.

From a manual process to a controlled one

The same work, re-shaped around a single system of record.

Before

  • Documents handled by email

    Received and worked individually, with no shared view of status

  • Re-keyed across several systems

    The same data entered by hand at multiple points

  • Manual, inconsistent checks

    Duplicate and bank-detail checks depended on individual diligence

  • No single audit trail

    Reconstructing what happened meant piecing together records

  • Effort scaled with volume

    More payments meant proportionally more manual work

After

  • One controlled workflow

    Every payment follows the same path, across all offices and types

  • Enter once, AI-assisted

    Data extracted automatically and confirmed by a person, once

  • Enforced controls

    Duplicate and bank-mismatch checks that cannot be skipped

  • Complete audit trail

    Every action recorded, immutable, attributable to a user

  • Effort decoupled from volume

    Higher volumes no longer require proportional headcount

The same operation, before and after the platform

Every field on a payment carries a record of how its value was determined

For every value on a payment, the system records where it came from - and every change is written to an audit trail that cannot be edited.

Field provenance

Every field on a payment carries a record of how its value was determined

The impact

  • Every payment, across every office and payment type, now follows a single controlled and auditable path.
  • Manual data entry and inconsistent manual checks have been replaced by AI-assisted extraction and enforced controls.
  • A complete, tamper-proof audit trail now exists for every payment made.
  • The manual effort that used to scale with volume no longer does.
  • The client retains full ownership of the platform, with the complete codebase and infrastructure handed over and documented.

Systems like this, where payments are made on behalf of others in a regulated setting and the process cannot be paused while it is replaced, are a large part of the work GoodCore does.

Looking to build something where the cost of getting it
wrong is high?

Explore how we can work together.