This is a personal, non-commercial side project I put together to learn — not a product or service.
Post #12 asked a simple question: if collections order isn't really decided by days overdue, what else is doing the deciding — and can a rule capture it? Below is a small prototype that answers that with sample data.
The script doesn't decide which customer matters more. It just writes down, in one place, the same signals someone was already weighing account by account — days overdue, a credit-hold flag, how many reminders already went unanswered.
The sample data
Eight open receivables, each with a days-overdue count, an amount, a reminder count, and whether the customer is on an active credit hold. Two of them move ahead of an older balance once those signals are counted.
| ID | Customer | Amount | Overdue | Reminders | Hold | Rank | Status |
|---|---|---|---|---|---|---|---|
| CUST-04 | Manufacturing Client | €18,200 | 95 days | 3 | No | 1 | |
| CUST-07 | Regional Distributor | €3,400 | 80 days | 2 | No | 2 | |
| CUST-02 | Wholesale Partner | €9,800 | 60 days | 2 | No | 3 | |
| CUST-08 | Retail Chain | €1,250 | 45 days | 1 | No | 4 | |
| CUST-01 | Specialty Retailer | €6,700 | 30 days | 1 | No | 5 | |
| CUST-05 | Key Account Co. | €27,500 | 20 days | 1 | Yes | 6 | |
| CUST-03 | Growth-Stage Customer | €4,100 | 10 days | 0 | Yes | 7 | |
| CUST-06 | New Customer | €950 | 5 days | 0 | No | 8 |
How it works
Try it yourself
1 — Clone the repository
2 — Add your own receivables (optional)
3 — Run it
4 — Read the output
What it's built from
Data source
A plain CSV of open receivables — no CRM connection, no live banking access, nothing beyond sample data.
Calculation
Standard Python, no external dependencies — an overdue ranking and two flag checks.
Configurable signals
What counts as an active hold and the reminder threshold are command-line arguments, not hardcoded.
Read-only by design
The script only reads and reports. It doesn't send a single reminder on its own.
What's in the repository
The same personal, non-commercial repository as the earlier demos in this series:
- collections_priority_agent.py — the full script used above
- data/open_receivables.csv — the sample data shown in this walkthrough
- The Invoice Priority Agent from Post #11, the Idle Cash Agent from Post #10, the FX Monitoring Agent from Post #9, and the Invoice Agent from Post #3
Follow the series
Post #13 steps back from any single ledger line to ask a harder question: once both sides of cash — what the company owes, and what it's owed — are visible at the same time, what actually changes about how a finance team spends its week?
Subscribe free