Every customer account in our order system carries a service tier: platinum, gold or standard. The tier decides a good deal. Platinum customers get the earliest delivery slots when the routing system builds the next day's runs, a named account manager, priority in the call queue and same day answers on credit queries.
The tiers were set during our system migration in 2020. A script ranked every customer by its spend in 2019 and wrote the result into the field. The project plan said the tiers would be reviewed annually. The script was a migration script, so it was archived with the rest of the migration, and the annual review was a line in a plan for a project that closed.
Six years later the field looked as authoritative as any other, and nothing on screen showed it was a calculation made once from figures six years old.
We found out when a regional grocery chain gave notice. It had grown from a small account to one of our twenty largest and told our sales director why. Its deliveries kept arriving after its morning shelf fill, and its credit queries took a week. It was still standard. Its competitor, which had been platinum since 2020, had halved its orders with us and was getting the first slot of the day at every depot.
When we recalculated the tiers on current spend, thirty seven of our hundred and forty platinum customers no longer qualified for gold, and six had stopped trading with us altogether. Fifty two customers who should have been platinum were standard. The chain that left had been worth about one point one million pounds a year.
None of the data was wrong in the usual sense. Every record was exactly what the script had written. It had simply stopped being true, and a stored result gives no sign of its age.
Tiers are now recalculated every quarter from the previous twelve months, with a rule that a customer moves only after two quarters, so a single bad month does not cost anyone their slots. The screen shows the date each tier was calculated and what it was based on. Any manual override has a named owner and an expiry date.
A derived value is a calculation somebody stopped doing. If it does not carry the date it was worked out, it will be trusted long after it is wrong.
– Serguey Shinder
Top comments (0)