Skip to content

An autonomous worker that clears the receivables queue on its own

An AI worker that owns the receivables backlog end to end: it matches payments and sends reminders on its own, and pauses at an approval gate before writing off a balance or escalating an account.

Receivables queue

As the worker left it · matched, reminded, and three proposals stopped for a partner

All accountsThu 17 Sep 2026HA
Open receivables£184,220
Matched since 18:00
12 payments
Reminders today
4 staged
At the gate
3 £13,430
Refused today
1 credit note

Open invoices

Sorted by last worker action · newest in the queue first
All14Worked today9At the gate3Past 90 days3 Client or invoice
ClientInvoiceBalanceAgeWorker actionStatus
Calder Row ArchitectsINV-3071£4,20038dMatched · reference + amountCleared 23:04
Calder Row ArchitectsINV-3078£3,68031dMatched · one payment split across threeCleared 23:04
Calder Row ArchitectsINV-3082£2,15024d£1,460 applied · £690 short left openShort · decomposed
Harlow Brandt Design LtdINV-2894£4,860143dWrite-off proposed · company dissolvedWaitingApprove
Fenwick Salt & CoINV-3040£1,92530dReminder 1 sent 08:12Reminder sent
Penrose Mills LtdINV-2957£1,15071dPart write-off proposed · disputed hoursWaitingApprove
Tolley Garth HotelsINV-3011£6,30052dMatched · payer historyCleared 07:14
Ostler & Crane InteriorsINV-2911£7,42098dAgency escalation proposed · 3 reminders unopenedWaitingApprove
Brackwater EstatesINV-3055£2,78030dReminder 1 sent 07:55Reminder sent
Nairn & Hollis SolicitorsINV-2986£5,14060dReminder 3 sent 09:02Reminder sent
Quenby LogisticsINV-3064£89022dMatched · amount + referenceCleared 06:58
Selwood Pharmacy GroupINV-2870£3,310120dFlagged · crossed 120 daysFlagged
Veryan Foods LtdINV-3021£2,64045dReminder 2 sent 08:40Reminder sent
Ashcombe DentalINV-3069£1,48018dChecked · nothing due until day 30No action due

The brief, in specifics

Industry
Professional Services
Duration
9 weeks
Cooperation model
Fixed price, phased
Services
Autonomous workerApproval gate designEscalation routing
Integrations
HubSpotDocuSignXeroGoogle Workspace
Technologies
PythonCeleryPostgreSQLLarge language model APIApproval workflowStructured logging
Team
1 Project lead1 Product designer1 ML engineer1 Backend engineer1 Data engineer

Client name withheld under NDA. Engagement details are shown to the extent our agreement permits.

Introduction

What we were brought in to do

The receivables backlog only moved when someone sat down and worked it, so it never quite got worked down. We built an autonomous worker that owns the queue full-time, matching payments and sending reminders on its own while pausing for a human decision on anything consequential.

A professional services firm where receivables were two analysts' secondary duty, worked in bursts between client engagements. The aging report was accurate and nobody was reading it. The engagement was commissioned after a quarter-end where two accounts crossed a hundred and twenty days without a single reminder being sent. Both were eventually paid in full after one phone call.

AI & Automation

The problem

Where the old way broke

Two analysts split reconciliation duty between client work, so the aging report only got attention in bursts. Accounts drifted past 60 and 90 days before anyone circled back, and write-offs happened ad hoc with no consistent review.

The queue only moved when someone chose to move it, and that choice competed with billable work, so it lost. The result was a specific pattern, not a general slowness: accounts were either chased promptly or not at all, depending on whether they happened to sit near the top of the report during a quiet week. Write-offs were made ad hoc with no consistent review.

We deployed a worker that runs the receivables queue continuously: matching incoming payments to open invoices, sending staged reminders, and flagging accounts that cross an aging threshold. Every write-off or collections-agency escalation stops at an approval gate for a partner's sign-off.

Continuous queue ownership

The worker runs the receivables queue on its own, all the time, with no one invoking it per batch.

The worker holds the receivables queue continuously through Celery, with no nightly batch to wait for, so a payment landing at eleven is matched at eleven. Matching runs on amount, reference and payer history, and a payment that splits across invoices or arrives short is decomposed on the spot instead of dropped into an exceptions pile for someone to sort out on Friday.

What shipped
  • Runs the queue continuously; no nightly batch window
  • Matches on amount, reference and payer history
  • Split and short payments decomposed, never dumped in exceptions
Incoming payments

Held continuously · every payment matched when it lands, on amount, reference and payer history

Continuous · no batch windowThu 17 Sep 2026HA

Worker activity, last 24 hours

Actions per hour · the worker never waits for a nightly run
23:04 payment in · matched 23:04
10:0014:0018:0022:0002:0006:00Now

Payments received

Since 18:00 yesterday
ReceivedPayerAmountResult
16 Sep 18:22Bramley Oak AccountancyBOA 3049£1,640Matched
16 Sep 20:05Tresco Marine SuppliesTMS 3037£2,975Matched
16 Sep 21:48Gweek StudioGWEEK£1,200Matched · history
16 Sep 23:04Calder Row ArchitectsCRA 3071 3078 3082£9,340Split across 3
17 Sep 00:37Rosewarne LegalRL 3043£2,280Matched
17 Sep 02:41Pellow Farm PartnershipPELLOW£760Matched · history
17 Sep 05:12Haldon ClinicsHC-3066£4,410Matched
17 Sep 06:58Quenby LogisticsINV3064£890Matched
17 Sep 07:14Tolley Garth HotelsTGH SEPT£6,300Matched · history
17 Sep 08:47Kitely Print Works3052£2,400Matched
17 Sep 09:33Morvah Care HomesMORVAH CARE£1,720Short · £180 open
17 Sep 09:38Linhay VeterinaryLINHAY VET£3,125Split across 2

£9,340 · Calder Row Architects

16 Sep 23:04 · matched 23:04
Bank referenceCRA 3071 3078 3082Decomposed, unattended
Matched on
AmountNo single invoice at £9,340 · three open invoices total £10,030
ReferenceNames INV-3071, INV-3078 and INV-3082
Payer historyCalder Row settles oldest invoice first
Allocation
INV-3071£4,200£4,200Cleared
INV-3078£3,680£3,680Cleared
INV-3082£2,150£1,460£690 left open
Applied £9,340 · left open £690Sent to exceptions 0

Nothing waits for Friday. The £690 stays on INV-3082 and joins the reminder schedule when the invoice reaches day 30.

On screen

Payments matched as they land, with no batch window: a £9,340 payment received at 23:04 matched at 23:04 on amount, reference and payer history, split across three invoices, and the £690 shortfall left open instead of sent to exceptions.

Approvals

Only what can't be undone stops here · each request carries history, aging and the worker's reasoning

3 waiting · £13,430Thu 17 Sep 2026HA
Runs unattendedMatch · decompose · remind · flag
Stops for a partnerWrite-off · agency escalation
Never permittedCredit notes · editing an invoice
On Helen’s deskOldest balance first
Write-off16 Sep, 15:42Harlow Brandt Design LtdINV-2894£4,860Client dissolved143d old
Agency escalation17 Sep, 09:21Ostler & Crane InteriorsINV-2911£7,4203 reminders unopened98d old
Part write-off16 Sep, 11:08Penrose Mills LtdINV-2957£1,150Balance disputed71d old

No write-off or escalation can run without an approval record. Declined proposals return to the queue.

Write-off · Harlow Brandt Design Ltd

Proposed 16 Sep, 15:42 · rule G1
Balance to write off£4,860InvoiceINV-2894Age143dReceived since issue£0Waiting for a partner
Account history
27 Apr 2026Invoice issued · £4,860 · design retainer
27 May 2026Reminder 1 delivered · day 30 · no reply
11 Jun 2026Reminder 2 delivered · day 45 · no reply
26 Jun 2026Reminder 3 delivered · day 60 · no reply
25 Aug 2026Flagged · crossed 120 days
2 Sep 2026Company struck off and dissolved
Aging position
0–30120+ ▲ hereOldest bucket: £12,880 across 14 accounts. This balance is 38% of it.3 reminders delivered · 0 replies · 0 payments
Worker’s reasoning, as recordedlog 16 Sep 15:42:08

The client company was dissolved on 2 Sep 2026. Nothing has been received against INV-2894 in 143 days, and three delivered reminders went unanswered. With no company left to pursue, an agency escalation wouldn't recover the balance, so the proposal is a full write-off of £4,860.

Register status3 remindersPayments: none
Approve write-offDeclineAsk for moreHA Signs as Helen Ashdown, Partner
On screen

The approval gate: three decisions on a partner's desk, a dissolved client, a disputed balance and three unopened reminders, with the write-off open beside its account history, aging position and the worker's recorded reasoning.

Gated consequences

Write-offs and agency escalations stop at an approval gate; routine matching and reminders run straight through.

The gate sits where the consequence becomes irreversible: matching a payment and sending a staged reminder happen unattended, while a write-off or a handover to a collections agency stops and waits for a partner. The request arrives with the account history, the aging position and the worker's reasoning attached, so approving it is a real judgment call and never a rubber stamp.

What shipped
  • Gate placed at irreversibility, not at every action
  • Matching and reminders run unattended; write-offs stop
  • Approvals arrive with history, aging and reasoning attached
Action log

Every action with its inputs and the rule or reasoning behind it · 17 Sep 2026, 06:30–09:45

Export for auditThu 17 Sep 2026HA
Account, invoice or ruleCleared 4Unattended 5Held at gate 1Refused 1Flagged 1Recorded 315 lines

A morning's work, in order

Oldest first
TimeAccountActionRuleOutcome
06:58:03Quenby LogisticsMatched £890 → INV-3064R1Cleared
07:14:40Tolley Garth HotelsMatched £6,300 → INV-3011R1Cleared
07:55:21Brackwater EstatesReminder 1 · INV-3055R3Sent
08:12:09Fenwick Salt & CoReminder 1 · INV-3040R3Sent
08:31:47Selwood Pharmacy GroupCrossed 120 days · INV-2870R4Flagged
08:40:02Veryan Foods LtdReminder 2 · INV-3021R3Sent
08:47:30Kitely Print WorksMatched £2,400 → INV-3052R1Cleared
09:02:11Nairn & Hollis SolicitorsReminder 3 · INV-2986R3Sent
09:14:25Penrose Mills LtdCredit note £1,150 asked for by replyN1Refused
09:21:03Ostler & Crane InteriorsAgency escalation · INV-2911G2Held at gate
09:26:44Ashcombe DentalChecked · 18 days, nothing due—Recorded
09:33:19Morvah Care Homes£1,720 of £1,900 → INV-3060R2Decomposed
09:33:20Morvah Care Homes£180 short left open · INV-3060R2Recorded
09:38:50Linhay VeterinaryMatched £3,125 → INV-3047, 3058R2Cleared
09:41:12Brackwater EstatesReminder 1 opened · INV-3055—Recorded

Log line · 09:02:11

Structured record
Action, inputs and reasoning
at2026-09-17T09:02:11+01:00accountnairn-hollis-solicitorsinvoiceINV-2986 · £5,140decisionsend_reminder · stage 3ruleR3 staged reminderin.age_days60in.payments_sincenone matchedin.last_reminder2 Sep · delivered, unopenedreasonDay 60 reached, balance unchanged,no reply to reminder 2.
Why chased three times?3 reminders
118 Aug 2026, 09:00:40Day 30 · £5,140 open · no payment matchedReminder 1
22 Sep 2026, 08:58:17Day 45 · reminder 1 opened, no replyReminder 2
317 Sep 2026, 09:02:11Day 60 · reminder 2 unopened, balance unchangedReminder 3

Three timestamps and the trigger for each, read straight from the log, never reconstructed from memory.

Inspectable actions

On screen

A morning's work in order, every line with the rule behind it: matches, reminders, one proposal held at the gate and a credit note refused outright, with one reminder's structured record and the three timestamps that explain why the account was chased.

Every action logged with its reasoning, so the aging queue can be audited after the fact.

Every action writes a structured log line carrying the account, the decision, the inputs it was made on and the rule or model output behind it. That's what makes the aging queue auditable after the fact: a partner asking why an account was chased three times gets the three timestamps and the trigger for each, with nothing reconstructed from memory.

What shipped
  • Structured log per action: account, decision, inputs, reasoning
  • The aging queue auditable months later
  • Reminder history reconstructable to the timestamp
The solution

What we built together

04
  1. 01

    Mapped the queue's goal, states, and what counted as a consequential action

    Drawing the reversible line precisely took longer than automating either side of it, and it's the artifact the partners actually reviewed.

  2. 02

    Automated payment matching and staged reminders for routine aging

    Matching runs on amount, reference and payer history, and staged reminders escalate on their own schedule, whether or not anyone opens the report.

  3. 03

    Placed approval gates in front of write-offs and collections escalations

    Write-offs and agency escalations stop and wait, with the account history, aging position and the worker's reasoning attached to the request.

  4. 04

    Wired action logging and drift alerts so the aging queue stays inspectable

    Every action writes a structured log line carrying the inputs and the reasoning, so the aging queue can be audited months later with nothing reconstructed.

Operational results after launch

−22%

Days sales outstanding

76%

Accounts auto-resolved

100%

Write-offs reviewed pre-approval

Days sales outstanding compares the two quarters after launch with the two before. Accounts auto-resolved is the share closed by matching or reminder without a human touching them, measured on accounts, not value; the large accounts still get a person. The write-off figure is structural: no write-off can occur without an approval record.

Client name withheld under NDA. Figures are approximate, drawn from the engagement’s own reporting.

Process

Phase by phase

  1. Phase 1: Define

    What the worker owns

    Mapped the queue's goal, its states, and, critically, which actions were consequential enough to need a human.

    • State model
    • Consequential-action list
  2. Phase 2: Automate

    The routine path

    Automated payment-to-invoice matching and the staged reminder sequence for normal aging.

    • Matching logic
    • Reminder sequence
  3. Phase 3: Gate

    Where it must stop

    Placed approval gates in front of write-offs and collections escalations, with the partner's sign-off recorded.

    • Approval gates
    • Sign-off audit trail
  4. Phase 4: Observe

    Drift and accountability

    Wired action logging and drift alerts so a change in the worker's behavior surfaces before it compounds.

    • Action log
    • Drift alerts
    • Operator runbook
Decision rules

The line between what runs unattended and what doesn't · reviewed by the partners before the worker acted

Rules v4 · approved 2 Jul 2026Thu 17 Sep 2026HA
Unattended actions, August 20262,344R1 1,412R2 186R3 649R4 97Four rules cover every one of them.Two actions stop; two are never taken.
Runs unattendedReversible · logged with reasoning
R1Match a payment to an open invoiceOn amount, reference and payer history. A confident match clears the invoice.1,412actions
R2Decompose a split or short paymentAllocate across invoices oldest first; any shortfall stays open, never in exceptions.186actions
R3Send a staged reminderAt 30, 45 and 60 days while a balance is open and unanswered.649actions
R4Flag an account crossing an aging lineAt 90 and 120 days, into aged debt with the history attached.97actions
Stops for a partnerIrreversible
G1Write off a balance, in full or in partIrreversible. Stops with the history, aging position and reasoning attached.Waits for ApproveApproval record required
G2Hand an account to a collections agencyChanges the client relationship for good. Stops for the same sign-off.Waits for ApproveApproval record required
Never, at allRefused and logged
N1Issue or apply a credit noteRefused and logged, whoever asks. Credit notes are raised by a person.
N2Change an invoice's amount or termsThe ledger is read, never edited. Disputes go to a partner.
On screen

The decision rules: four that run unattended and cover 2,344 of the month's actions, two that stop for a partner, and two things the worker may never do at all.

Ways of working

About our collaboration

A cross-functional team of 5 worked on a fixed price, phased basis over 9 weeks, covering Autonomous worker, Approval gate design, Escalation routing. We ran a weekly demo and kept a shared board they could read at any time. Their team took over day-to-day operation before the engagement ended, with handover built into the last phase.

The phases were drawn around the approval gate instead of around features: the gate and its logging shipped before any autonomous action did, so no version ever existed that could write off an account unattended. Partners reviewed a week of the worker's proposed actions before it was allowed to take any of them.

What we'd carry into the next one

  1. 01

    Autonomy is only safe where the consequences are reversible. The gates are the design itself.

    The gates are what made the autonomy acceptable: everything reversible runs unattended, and drawing that line precisely is more of the work than the automation.

  2. 02

    Logging the reasoning mattered more than logging the action; the action alone couldn't be reviewed.

    An action log says what happened; a reasoning log says whether it should have. Only the second one answers a partner asking why an account was chased three times.

  3. 03

    Most of the queue was routine. Naming the small consequential slice is what made automating the rest defensible.

    Most of a receivables queue is unambiguous. Naming the small consequential slice is what let the rest run without anyone needing to supervise it.

One overdue account

Two actions run on their own. The third waits for a partner.

The same account, three moments: a short payment matched overnight, a staged reminder, and a write-off the worker isn't allowed to make alone. Switch tabs, or use the arrow keys once one is focused.

A split, short payment arrives late at night. Matching is reversible, so the worker allocates it the moment it lands, leaves the £850 shortfall open on the right invoice, and logs why.

AccountWendover Surveying LLP15 Sep 2026, 23:04
  • INV-3016£0Cleared
  • INV-3033£85043 days
Who actsWorker, unattended
The run · step timings illustrative
  1. Payment lands£4,900 · reference WENDOVER 3016
  2. Match on amount, reference, payer historyNo single invoice at £4,900 · names INV-3016 · pays oldest first
  3. Decompose across invoices£3,600 clears INV-3016 · £1,300 to INV-3033
  4. Leave the shortfall open£850 stays on INV-3033 · not sent to exceptions
  5. Write the log lineRule R2 · inputs and reasoning recorded

ran unattended · R2 decompose · £3,600 → INV-3016, £1,300 → INV-3033, £850 left open

Where the line sits: at irreversibility, not at every action. Matching and reminders run on their own; write-offs and agency escalations wait for a partner.

Architecture

From a payment landing to a decision someone can audit

The gate and its logging shipped before any autonomous action did, so no version of this pipeline ever existed that could write off an account unattended.

  1. 01 · Trigger
    Payment lands or an account agesA payment arriving at eleven is picked up at eleven, and an account crossing an aging threshold is flagged when it crosses.
  2. 02 · Queue
    Celery worker holding the queueThe worker owns the receivables queue continuously, with no one invoking it per batch. There's no nightly window to miss.
  3. 03 · Engine
    Matching, reminders and the gateMatches on amount, reference and payer history; decomposes split and short payments; write-offs and agency escalations stop for a partner.
  4. 04 · State
    PostgreSQL + structured logEvery action writes a line with the account, decision, inputs and the rule or model output behind it, so the queue can be audited months later.
  5. 05 · Delivery
    Partner approvals and drift alertsApproval requests carry history, aging and reasoning, the sign-off is recorded, and a change in the worker's behavior alerts before it compounds.

What the worker can't do alone

Approval gates & an auditable queue

Nothing irreversible runs unattended

Write-offs and collections-agency escalations stop at an approval gate. No write-off can occur without an approval record, and partners reviewed a week of proposed actions before the worker took any.

Every action carries its reasoning

Each action logs the account, the decision, its inputs and the rule or model output behind it. A partner asking why an account was chased three times gets three timestamps and a trigger for each.

Drift surfaces before it compounds

Drift alerts watch the worker's behavior, and an operator runbook covers what to do when one fires, so a change is caught while it's one account and not a quarter.

Receivables only moving when someone has a quiet week? Scope your build in three minutes.

Scope your build
Have a project?

Let's talk

Running a large platform, shaping a first MVP, or getting a product ready for a funding round? Tell us where you are. We'll shape the process around it, and stay with you after launch.