A credit limit reviewer on AWS for a few dollars a month
A customer you have traded with for three years, always paid, never any trouble, goes quiet in October and stops answering the phone in November. The limit was eight thousand. The balance when they went under was nineteen, because the limit was a number in a field that nothing ever compared anything to.

Key takeaways
- A limit is a loss you have agreed to be able to survive, not a compliment.
- Exposure includes what you have committed, not just what you have invoiced.
- Your own ledger is a better predictor than any bureau score.
- Review on behaviour, not on the anniversary of the application.
- Designed on AWS for about $3 a month.
The whole system on one page
Before any code, here is the shape of what we are designing.
- Machine learning
- Analytics
- Front-end & mobile
- People
What a limit actually is
A credit limit is not a rating and it is not a statement about how much you like the customer. It is the largest amount you are willing to lose if they fail, expressed as a number you can check an order against before you ship it.
That framing does most of the work. A customer who orders twelve hundred a month and always pays does not need a fifty thousand limit, and giving them one costs nothing until the month they order forty thousand of stock they cannot pay for.
What runs (the inside)
- The opening limit. Set once, from the application and whatever public record exists, and deliberately small. Part 2.
- Live exposure. What you are on the hook for right now, including the pallet on the van. Part 3.
- Review and answer. Revisiting the limit when something changes, and getting the result to the person who needs it. Parts 4 and 5.
One customer, three years
- Machine learning
- Security & identity
- Management
- Analytics
- Front-end & mobile
In plain words
A company applies for a trade account. The application and the filed accounts are read once, a small opening limit is set, and the reasons for it are written down where somebody can find them in two years.
From then on, every order and every payment updates one number: what you are exposed to right now. Not what has been invoiced, which lags reality by a week, but what you have committed — accepted orders, picked stock, goods on the van, invoices raised and invoices not raised yet.
When the customer’s payment behaviour moves, the limit is re-examined. Not on the anniversary of the application, which is a date with no meaning, but when the average days-beyond-terms drifts, when an order is unusually large, or when something changes at Companies House.
And when somebody is on the phone taking an order, the answer arrives in the order screen in under a second: how much room is left, and if there is not enough, what the options are. A refusal with an alternative is a sale on different terms; a refusal on its own is a lost customer.
Design rules that shaped every decision
- The limit is what you can afford to lose, not what they can afford to owe.
- Exposure counts commitments, not just postings. The van is exposure.
- Your ledger beats any bureau score after the third invoice.
- Review on a behaviour change, never on a calendar.
- The system never refuses anything. It produces a number, and a person decides.
- Every override is recorded with a name and a reason, and both are visible later.
What it does not do
It does not chase the money. Invoice chasing is a different system with a different rhythm, and merging them produces something that does neither well.
It does not set prices, it does not approve orders, and it does not replace the conversation with a customer who is struggling. It measures, and it makes sure the measurement is in front of somebody at the moment they can act on it.
The next four posts walk through each piece: how the opening limit gets set, why exposure is more than the unpaid invoices, what makes a limit worth revisiting, and how the answer reaches the sales floor. One diagram per post, a cost breakdown, and an engineering reference at the end.
All posts