Operations · Costs

A price with a date on it

A figure nobody can re-verify should carry the day somebody last looked. Dated and honest beats fresh and invented, and refreshing the date is not the same as checking.


We list hardware prices on our website — tills, printers, tablets, the usual shopping list for a new stall. We take no cut on any of it, so there is no reason to be anything other than plain about them, and next to the list is a sentence that says the prices are indicative and gives the date somebody last checked.

That date is currently older than we would like. We are leaving it alone, and the reason is worth an article.

Refreshing a date is not checking a price

The retailers those prices come from will not answer an automated request. They serve a challenge page instead of a listing, which is entirely their right, and it means a machine here cannot read a current price. A human with a browser can, in about four minutes.

So there are two options. Somebody looks, and moves the date. Or nobody looks, and the date stays where it is.

The option that is not available, though it is by far the most tempting, is moving the date because the list looks old. That produces a page which asserts that twenty-one prices were verified on a day when nothing was verified at all. The prices would be no more accurate than before and the reader would have lost the one honest signal they had.

An old date is not a bug. It is the page telling you the age of its own figures, which is more than most price lists manage.

Costings without dates are just opinions

This is the whole game in food costing and almost nobody plays it.

Your gross profit on a dish is computed from ingredient prices. Those prices came from somewhere — an invoice, a price list, a phone call, a guess made during a rush. The margin looks equally confident in all four cases. A costing sheet with no dates on the inputs is not a calculation, it is a mood.

Put a date against each ingredient price and two things happen immediately. The dishes whose margins you cannot trust become visible, because their inputs are eight months old. And the argument about whether to reprice stops being about opinion: a supplier line last checked in February is a line to check, not a line to defend.

Market price on a menu is the honest version of the same admission. It says the number moves and we are not going to pretend otherwise. What it should never mean is that nobody knows.

Do not build a check nobody can pass

The last part is about process rather than prices.

We deliberately have no automatic test that fails when that date gets old. There is no way for anybody here to make such a test pass, because the checking requires a browser and a person. A check that goes red every week for something nobody in the room can fix is a check people learn to ignore, and once they have learned to ignore one, the habit spreads to the ones that matter.

Same in a venue. If the opening checklist contains an item that cannot be completed — a reading from a broken probe, a signature from somebody not on shift — do not leave it there hoping somebody improvises. Either give it to whoever can actually do it, or take it off the list and say why. A checklist that is routinely part-completed has stopped being a checklist, and the items that get skipped will not be the ones you chose.

What we do instead is smaller and it works: the links in that hardware list are checked automatically, one a night, on a rota, which takes three weeks to get round all twenty-one. The question that check answers is narrow — is this link dead — and it is a question a machine can genuinely answer. The price is left to the human with the browser, and the page says so.


Try it on tonight’s service.

Nothing to install, no card. Not better by the weekend? Close the tab.