Perishable inventory management is holding only as much as you can sell before it's too old to sell. For a maker selling to stores, too old comes before the use-by date: a grocer wants most of the shelf life left when a case arrives, so the days you have to sell are the shelf life less what the buyer needs left and the days in transit. Most worth holding = sold a day × (shelf life − days the buyer needs left − days in transit). Then every lot gets a last day to ship, and stock goes out oldest first. In the example below, a tofu maker's 35-day block has a 13-day window, so 455 blocks is the most worth holding, and two lots that passed their last day to ship go to the farmers market instead of the bin. Below is each step, the lots, and a free workbook.
The short version
- Find each product's sellable window: shelf life − days the buyer needs left − days in transit.
- Hold no more than the window's worth of sales; more will pass its last day to ship.
- Give every lot a use-by date and a last day to ship to buyers.
- Ship oldest first, by date, not by which pallet is in front.
- Make smaller runs more often when the window is short.
- Have a plan for stock past its last day to ship: markets, restaurants that accept shorter dates, staff, donation.
- TaroStack gives each lot its dates, ships the oldest first, and warns before lots expire. More below.
The sellable window
Skunk River Tofu Co., a made-up tofu maker in Ames, Iowa, I use in these examples, sells to co-ops, grocers and restaurants:
| Product | Shelf life | Buyer needs left | Days in transit | Sellable window | Sold a day | Most worth holding |
|---|---|---|---|---|---|---|
| Firm tofu, 16 oz | 35 days | 21 days | 1 | 13 days | 35 | 455 |
| Smoked tofu, 8 oz | 45 days | 25 days | 1 | 19 days | 8 | 152 |
| Soy milk, half gallon | 14 days | 7 days | 1 | 6 days | 10 | 60 |
The co-ops want 21 days left on a 35-day block, so a block made today has 13 days to leave the building. Soy milk has six days. That's why the firm tofu is made in two runs a week of about 120 blocks, not one run of 245: a weekly run would put seven days of blocks in the cooler every Monday, more than half the window gone before the last ones ship. How much stock to keep in general is in how much inventory to keep on hand.
Lots and the last day to ship
On Friday, October 16, the cooler holds:
| Product | Lot | Made | Use by | Last day to ship | On hand | Days left to ship |
|---|---|---|---|---|---|---|
| Firm tofu, 16 oz | T-1001 | Oct 1 | Nov 5 | Oct 14 | 14 | −2 |
| Firm tofu, 16 oz | T-1012 | Oct 12 | Nov 16 | Oct 25 | 60 | 9 |
| Firm tofu, 16 oz | T-1015 | Oct 15 | Nov 19 | Oct 28 | 120 | 12 |
| Smoked tofu, 8 oz | S-0924 | Sep 24 | Nov 8 | Oct 13 | 6 | −3 |
| Smoked tofu, 8 oz | S-1008 | Oct 8 | Nov 22 | Oct 27 | 70 | 11 |
| Soy milk, half gallon | M-1012 | Oct 12 | Oct 26 | Oct 18 | 12 | 2 |
| Soy milk, half gallon | M-1015 | Oct 15 | Oct 29 | Oct 21 | 40 | 5 |
Last day to ship = use by − days the buyer needs left − days in transit. Lot T-1001 was a run made for a co-op order that was cut in half, and its last 14 blocks missed their ship date on Wednesday; S-0924's six smoked blocks missed theirs on Tuesday. Both are still good food, with three weeks to their use-by dates, but no grocer will take them. The soy milk lot M-1012 has two days and ships first. What's still shippable covers 5.1 days of firm tofu, 8.8 of smoked and 5.2 of soy milk, each inside its window. How first-expired-first-out works is in FEFO vs FIFO, and a spreadsheet formula for days left in Excel formula to track expiration dates.
Stock past its last day to ship
Stock that can't go to a grocer can often still be sold or given away before its use-by date: at the Saturday farmers market, to a restaurant customer that agrees to shorter dates, to staff, or to a food bank. Skunk River's 14 blocks and six smoked blocks go to Saturday's market. What doesn't sell by its use-by date is a loss, recorded as expired, and what counts as expired stock is in what is expired stock.
Cold and short
Perishable stock also has to stay cold. The cooler's temperature is read and written down twice a day, and a door left open shortens everything inside; a log is in temperature log template. The tofu maker's whole plan, from the beans to the prices, is in tofu business plan.
Get the workbook
Download the perishable inventory workbook. Two sheets: products, where you type each one's shelf life, the days buyers need left, the days in transit and what sells a day, and the sellable window, the most worth holding, what's on hand and still shippable, and its days of cover fill in, red when the cover runs past the window; and lots, one line for each with the day it was made and how many are on hand, where the use-by date, the last day to ship and the days left fill in from today's date, red when past and amber within three days. It's an ordinary Excel file with no macros, and it works in Google Sheets, LibreOffice and Numbers.
Where this stops working
Three products and seven lots fit on a sheet. Two runs a week, three products, dozens of orders, each picking from whichever lot is oldest, and the sheet's on-hand count is wrong by the first afternoon unless every pick is typed in. And a sheet can't stop someone shipping the newer lot because it was in front.
How TaroStack does it
TaroStack gives each lot its dates, ships the oldest first, and warns before lots expire.
Every run a lot, with its dates. A run of firm tofu takes its soybeans and coagulant off stock and gets a lot of its own with its production and best-before dates, so every block on the shelf has a date on the record.
Oldest first. First-expired-first-out picks the lot with the nearest date for each order, so T-1012 ships before T-1015 without anyone checking the labels.
Warnings before the date. An alert comes as lots near their dates, so short-dated stock is seen while there's still time to sell it. Each order records the lots each customer got, and every loss carries its reason, expired, damaged or sample.
| The job | Workbook | In TaroStack |
|---|---|---|
| Dates on every lot | Typed in | Recorded with each run |
| Which lot to ship | Check the labels | Oldest first, chosen for you |
| A lot about to expire | Found on the sheet | An alert before the date |
| Who got which lot | Search the invoices | Recorded as each order ships |
Lots, expiry dates, first-expired-first-out and alerts are on every plan, from $49 a month. The first 30 days are free, with no credit card. If you'd like a hand setting up, ask, and we'll do it with you.
