Domestic inventory management
optimising supermarket home delivery 2025-11-18 #product
- Narrative ←
- Details
- Tooling
- Minimum viable solution
Back in 2020, I started playing an inventory management game at home. I signed up for a supermarket home delivery service, to avoid the supermarket during lockdown. This introduced an interesting complication.
Home inventory
I wanted to order every week, to have fresh fruit and vegetables, but the minimum order value meant ordering more food than I needed. I would have to order additional non-perishable goods that I would eventually use.
The obvious solution involves topping up orders with Champagne, to reach the minimum order value, but I didn’t want to make a habit of that. Meanwhile, some orders cost well over the minimum, such as when I needed more dishwasher tablets, or other infrequent purchases.
Spend control
To avoid ‘having’ to order bubbly every other week, I started spreading out infrequent purchases, especially expensive ones. That way I could avoid over-spending by ‘topping up’ orders to the minimum value, and stocking up on some products in advance.

This resulted in an inventory of over 100 stock items, and tracking each item’s product name and inventory (quantity). Most food items appear in the storeroom photo (above), excluding fridge and freezer contents.
Storeroom location
Before placing each order, I’d check for out-of-stock products. Going through the list of products I ordered required a consistent location for each one, so I had to shelve stock consistently. I recorded each stock item’s shelf location, using spreadsheet-style column-row references:

These locations remained stable, except for occasional relocations to accommodate maximum inventory changes.
Price optimisation
Supermarket sales promotions offer discounts to browse, for the week containing the delivery date. By stocking up on discounted goods, to reach the minimum order value, I could reduce costs enough to more than cover the delivery subscription fee. This made the game even more satisfying, but caused a new problem:

After a series of BOGOF (buy one, get one free) offers, I had ordered lots of spaghetti and spaghettini (blue/yellow packets in the centre of the photo, above).
Overstock
Spaghetti lasts a long time, but not necessarily forever. I discovered several products that we use more slowly than I had realised, and that I had overachieved during discount-driven stocking-up.
Flour tortillas last about six months, and we use about one pack per month, so whatever the discount, I shouldn’t have inventory of more than six packs. Based on usage and shelf life, I estimated the maximum inventory I could safely stock for each product, to avoid overstocking.
I occasionally had to adjust the maximum stock. To make it easier for slow-moving products, I added the product’s shelf life – the number of months from delivery until its best before date.
Last discount
Sometimes, nothing on my list had a discount to stock up with, so I might have had to stock up to the maximum inventory without using a discount. This would remove the option to use a future discount for that product.
I started tracking which products never have a discount, by noting the last discount year. Then I could see which products probably won’t have a discount next week.
Inventory management
Unsurprisingly, I couldn’t do this domestic inventory management in my head, and the supermarket web site didn’t help with my home inventory. I needed another software tool, which leads to the next part of the game.

