Operations • For independent electronic component distributors and brokers
Excess and Obsolete Stock: The Quiet Money on a Distributor’s Shelf
The ERP knows quantity, cost and age. It does not know demand. Set the shelf against 90 days of requests and three lists fall out: acquire, reprice, stop buying.
By Justin Beegel · · 6 min read
The aging report runs on the first of the month. Nobody reads past page two. Page one is the stock that moved. The rest is thousands of lines at cost, some of it reels bought on a last-time-buy notice three years ago because a customer said the program would need them. The program moved on. The reels did not.
Down the hall, the quoting desk deleted a few dozen requests this week for parts the company does not stock. Some were for a part the company used to carry and stopped buying because it was not moving. It was not moving because the one customer who bought it went quiet. Now six other buyers are asking, in a feed nobody reads for the lines they cannot quote.
Both facts live in the same building. Nobody has set them next to each other.
I will be straight about where I come from. I have never counted a shelf or run an aging report for a living. For almost 18 years I ran a digital agency, and today I use AI to fix real problems inside businesses. What I know is how a decision moves through an office, and how often it does not move because the two facts it needs sit in two different systems. I designed a demand ranking and a market hunt for a parts distributor whose request stream outran what any person could read. The same table that said what to buy said what to reprice and what to let go.
What the ERP knows and what it does not
Your system is good at four things for every line: quantity on hand, what you paid, when it came in, and when it last sold. That is enough to run an aging report and take a write-down. It is not enough to make a decision, because none of those fields say whether anyone wants the part.
Demand lives in the RFQs that came through NetComponents, Brokerforum, IC Source and the shared inbox, including the ones you could not quote. A request is a buyer naming a part, a quantity and a deadline. Counted by part over 90 days, those requests are the demand column the ERP never had.
One ranking, three lists
Count requests by part over the last quarter. Set that count against the shelf. Every part now sits in one of four places.
- Asked for, in stock. The reprice list. If buyers ask often and it still sits, the price is wrong, the condition is unclear, or the listing is not reaching the feed.
- Asked for, not in stock. The acquire list. The market wrote it for you.
- In stock, not asked for. The decision list. Hold, test and resell, or sell to a recovery buyer and walk.
- Not asked for, not in stock. Ignore it. Most parts in the world sit here.
Three of those boxes are lists you act on, and one count feeds all three. It is one table with two columns.
Reading age against requests
Here is the shape of the table, with made-up numbers.
- Part A: 18,000 on hand, 14 months since last sale, 0 requests in 90 days. Candidate for recovery or scrap.
- Part B: 2,400 on hand, 11 months since last sale, 31 requests from 9 buyers. The price or the listing is wrong, not the part. Reprice first, check condition second.
- Part C: 0 on hand, stopped buying two years ago, 22 requests from 6 buyers. Acquire.
- Part D: 600 on hand, no trace, 7 requests from 3 buyers. Test and resell at the tested grade, if the test cost clears.
Two points. Count buyers, not just requests: one buyer asking 30 times is one order waiting for a price, nine buyers asking 31 times is a market. And read age and requests together. Old stock with requests is a pricing problem. Old stock with no requests is an inventory problem.
Last-time buys: bought on a hunch, held on hope
A last-time-buy notice arrives and the clock starts. You buy more than the one customer committed to because the part is going away and someone will need it. Sometimes that is right. Legacy FPGAs, obsolete DRAM and flash, old microcontrollers, and the long tail of defense, aerospace, medical and industrial programs keep needing parts for decades. Sometimes the program ends, the customer redesigns, and you own 20,000 pieces nobody will ask for again.
The fix is not to stop buying on judgment. It is to write the judgment down. At purchase: who is expected to buy this, and what did the request stream say last quarter. Every quarter after: has anyone asked. A last-time buy with no requests in a year is not a strategic reserve. It is a decision you have not made yet.
When to test and resell stock without trace
Some of the oldest stock on the shelf is there because it has no trace and nobody wanted to deal with it. Untraceable stock can be sold after inspection and testing under AS6081, at a discount, and only to buyers whose quality system accepts tested parts.
Made-up example: 600 pieces, 7 requests from 3 buyers this quarter, and the lab quotes a fee for a sample. If the discounted tested price on a realistic quantity clears the test cost with room to spare, test it. If the only requests come from buyers who require full trace, they are not demand for this lot, and testing does not change that. Keep the test report with the stock and state the grade on every quote.
When to sell to a recovery buyer and walk
Some stock is not coming back. The signs:
- No requests in a year, and none for the alternates or superseded numbers either.
- A package that is not worth testing at the price the tested grade would bring.
- A part that only ever sold to one customer who is gone.
Gold-lead ceramic parts have a floor in precious metal recovery. Plastic commodity parts mostly do not. Either way, the decision is the money you get this month against the money you are hoping for next year. Selling to a recovery dealer feels like a loss because you book one. Holding is the same loss, spread thin enough that nobody has to sign for it.
Picture a Monday (made up)
Before. The owner of a 60 person distributor gets the aging report, sees the same lines as last month, and files it. The quoting desk deletes what it cannot quote. The write-down happens in December when the accountant asks.
After. The same owner gets one page: the top 25 parts by buyers asking in the last 90 days, each marked in stock, no stock, or no trace, with age of stock beside it. Four lines are on the shelf and overpriced. Six are not stocked and could be. Two are sitting untested. A second page lists the 25 oldest lines by value with zero requests, and a yes or no on recovery for each. Most lines still say hold. Holding is now a choice.
What has to be in place first
- A stock list from the ERP with quantity, cost, date received, last sale and trace grade per line.
- An export of requests from each marketplace and the shared inbox, going back at least one quarter.
- A trace grade on every line. If you do not know it, that is the first project.
- A test lab or an AS6081 process you trust.
- One person who owns the decision list and signs off on it monthly.
Guardrails worth keeping
- Never reprice a line without checking its condition and trace first.
- Do not sell tested, untraceable stock to a buyer who did not ask for that grade.
- Do not scrap anything that appears in the request stream, or whose alternates do, without a second look.
- Keep the quarterly decision in writing, including the holds.
- Size a last-time buy against written demand, not a conversation.
How you’ll know it’s working
- Turns on the top 25 parts by buyers asking.
- Dead stock, defined as no sale and no request in a year, as a share of shelf value.
- Requests you quoted from stock this quarter versus last.
- Days from a line landing on the decision list to a disposition.
- Recovered value on dispositioned stock against the write-down you would have taken.
Where I’d start
Pull one quarter of requests and your stock list, and build only the “asked for, in stock, not moving” box. It is the smallest list, it needs no buying and no testing, and the first few reprices will tell you whether the counts are right.
The free week on the Hunt page builds the request count as its first step.
Questions owners ask
The ERP already has an aging report. Why isn’t that enough?
Age tells you how long a part has sat. It does not tell you whether anyone wants it. A part that has sat a year with 30 buyers asking is a pricing problem. A part that has sat a year with nobody asking is an inventory problem.
Doesn’t scrapping stock lock in a loss that waiting could avoid?
The loss is already there. Holding spreads it across shelf space, counts, insurance and attention. If nobody has asked for the part or its alternates in a year, waiting is a hope, not a plan. If they have, it belongs on the reprice list, not the scrap pile.
How often should the three lists be rebuilt?
Quarterly for the decision list and last-time-buy reviews. The acquire and reprice lists move faster because the request stream moves weekly, so a monthly refresh is a reasonable rhythm for a distributor with one buyer.
Keep reading
Operations · · 6 min read
A Thousand RFQs a Day and Time to Quote Two Hundred
Which RFQs deserve a quote first: the signals that separate a buyer with a build from a price check, and how AI can order the queue and draft quotes while the desk keeps the judgment calls.
Operations · · 6 min read
Which Sources Actually Ship Good Parts?
How to turn inspection results, test failures, returns, late shipments and paperwork gaps into a source scorecard your buyers actually see before they issue a purchase order.
Operations · · 6 min read
A 5,000-Line Excess List Lands on Friday at 4 PM
Customer excess lists are long, messy and due back fast. Where AI can do the cleaning and matching against your own demand, so the buyer spends the weekend pricing the right lines instead of reading all of them.
Want this thinking applied to your business?
Tell me what is slowing the business down, and I will tell you where I would start.
