Skip to content

Slow-Moving and Dead Stock Review

Example prompt: "Each month, classify every SKU in our stock Google Sheet as Healthy, Slow, Dead, Obsolete, or New / Unreviewed based on the last 12 months of movement. Draft a write-off and clearance proposal in Google Docs and email it to the finance lead and the buyer for review."

The Problem

The stock that does not move is the stock the team stops seeing. It sits on the shelf with a carrying value the finance lead can quote but cannot easily attach to specific SKUs, and the buyer keeps reordering the next-door bin without ever circling back to the slow lines. Once a quarter the FD asks for a write-off list and the buyer spends a day with the stock sheet and a spreadsheet of sales movements, joining the two by hand, eyeballing the bottom of each column, and proposing a list that is partly right and partly the things they remembered while making it.

How GloriaMundo Solves It

We build a workflow that runs on the first working day of each month and does the lookup-and-join the buyer was doing by hand. An integration step reads the stock sheet and the stock movements tab. A code step computes a trailing-twelve-month demand and a months-of-cover figure per SKU, classifies each SKU as Healthy, Slow, Dead, Obsolete, or New / Unreviewed (the last for SKUs with no movements yet that are either brand-new in stock or pre-date the first_received_at column) against thresholds the finance lead controls in a settings tab, and assigns a proposed action with the carrying value tested against a write-off floor. An integration step writes the non-Healthy SKUs into a Stock Health tab keyed on the review month so the audit trail accumulates. The review document is rendered as a Google Doc in our Stock Health Drive folder, the Gmail draft goes to the finance lead with the buyer copied, and the Slack summary at 8am closes the loop. Glass Box preview shows the classification, the proposed actions, and the document content before anything is written — the buyer can sense-check the SKU that just got flagged Dead because its supplier code was renamed and the demand was double-counted under the old code.

Example Workflow Steps

  1. Trigger (schedule): First working day of the month at 07:00.
  2. Step 1 (integration): Read the 'Stock' tab, the 'Stock Movements' tab, and the 'Stock Health Settings' tab from the inventory Google Sheet.
  3. Step 2 (code): Compute per-SKU trailing twelve-month demand, months of cover, last movement date, and days since last movement against the previous calendar month as the anchor.
  4. Step 3 (code): Classify each SKU as Healthy / Slow / Dead / Obsolete / 'New / Unreviewed' in order (first match wins; the 'New / Unreviewed' bucket catches SKUs with no movements yet whose first_received_at is within the dead threshold of review_anchor_date or null) and assign a proposed action per classification, with the carrying value tested against the write-off floor and the 'New / Unreviewed' bucket never proposed for write-off.
  5. Step 4 (integration): Append one row per non-Healthy SKU to the 'Stock Health' tab keyed on (review_month, sku), skipping any row that already exists to preserve buyer edits on a re-run.
  6. Step 5 (integration): Render the review document as a Google Doc in the 'Stock Health' Drive folder with totals, the ten worst Dead carrying-value items, and the Slow items above twice the threshold.
  7. Step 6 (integration): Draft a Gmail to the finance lead with the buyer copied, linking the document and summarising totals; save as a draft.
  8. Step 7 (integration): At 08:00 the same morning, post the one-message summary in #stock-health on Slack.

Integrations Used

  • Google Sheets — the Stock, Stock Movements, Stock Health Settings, and Stock Health tabs
  • Google Docs — renders the monthly review document the finance lead reads from
  • Google Drive — stores the review documents in the Stock Health folder for the audit trail
  • Gmail — drafts the FD-and-buyer email summarising totals with the document linked
  • Slack — the #stock-health monthly summary

Who This Is For

The finance lead and the buyer at a small manufacturer or distributor — anywhere with a few hundred to a few thousand SKUs where stock-on-hand carries real working capital and nobody has time for a proper quarterly cycle count exercise, but a monthly health read is the right rhythm to catch the slow lines before they become dead and the dead lines before they become a yearly write-off surprise.

Time & Cost Saved

The manual version is roughly half a day of the buyer's time once a quarter and a similar amount of FD time reviewing the list, which is why most small manufacturers do it once a year rather than once a quarter and only because the auditor is asking. This workflow turns it into ten minutes a month for the buyer reading the Slack summary and another ten for the FD reading the review document, and a far quicker conversation when a SKU does need writing off because the carrying value, the days dormant, and the proposed action are all on the same row.