Building a lapsed-account report by hand
The hardest part of a lapsed-account report is the part you do first: saving the files. Everything after that is ordinary spreadsheet work — a lookup, a pivot, a sort. But an export reaches back only as far as the window you pull it for, and a lapsed account is only visible against its own history. A depletion export lists accounts that bought something in the window it covers. An account that bought nothing leaves no row to find. You can only see it by holding this month's file up against the last twelve.
What follows is the whole build, in the order you would actually do it: keep an archive, normalize the account key, collapse everything to one row per account per month, flag the gaps, rank what's left. It takes an afternoon the first time and about twenty minutes a month after that. The formulas are not the work. The work is that the same bar arrives in your files under three different names, and that the whole thing quietly stops getting done in a busy quarter.
Start the archive before anything else
Pull your depletion export on the same day every month and save the raw file untouched. Not a cleaned version, not a copy with your pivot already in it — the file exactly as it came. Name it by period, 2026-08-depletions.csv, and never overwrite. All of your working is done in copies that point back at the archive.
This sounds like housekeeping and it isn't. Every downstream step in this build depends on having a run of consecutive periods to compare. A single gap in the archive breaks the twelve-month history test for every account, and it breaks it silently — the sheet keeps producing numbers, they're just wrong. Which is worse than producing nothing.
Normalize the account key
This is where the build actually gets spent. Before you can say an account stopped ordering, you have to be certain that the thing that appeared in March and the thing that appeared in June are the same bar. Across multiple distributors, they very often don't look it.
The way through is a crosswalk: a separate tab that maps every distributor-plus-account-number pair you have ever seen to a stable account ID you own. Build it once by sorting your stacked history by normalized name and by address, eyeballing the clusters, and assigning IDs. After that, maintenance is small — each month you only review keys that aren't already in the crosswalk. Keep the original name and number on every row. When something looks wrong six months from now, you will want to see what the file actually said.
One row per account per month
With the crosswalk in place, the build itself is mechanical. The goal is a grid: accounts down the side, periods across the top, cases in the cells.
Pick one unit and hold it for the whole sheet. Physical cases and equivalent cases both have their uses, and mixing them halfway down a column produces a report that is confidently wrong. If your portfolio moves kegs alongside packaged goods, settle the conversion before you build anything, write it down next to the sheet, and use the same one every month.
Flag the gaps, then rank them
Two tests, applied in order. First, does the account have a history worth caring about — say, volume in at least six of the last twelve periods, above whatever monthly floor makes a call worth a rep's morning. Second, are the two most recently completed periods both empty. An account that passes both is your flag.
Two periods, not one, and that matters. A single empty month is ordinary: an ordering cadence that runs every six weeks, a distributor cutoff that landed on the wrong side of a month end, a slow January, an order placed on the 2nd instead of the 30th. Chase those and you will burn your credibility with reps inside a month. Two consecutive empty periods against an account that has been ordering in most months is a pattern, and a pattern is worth a phone call.
Then rank. Sort the flagged list by cases taken in the twelve months before the gap opened — not by lifetime volume, which flatters accounts that were big three years ago and have been drifting ever since. Prior volume is a measure of what is at stake and where to spend the week, not a forecast of what will come back. Put the top twenty rows in front of the rep who owns them and stop there. A list of six hundred names gets read once and never again.
How often to run it, and why it stops getting run
Monthly, a few days after the new export lands. The file is monthly, so a weekly rebuild mostly re-reads the same numbers. Refresh it once a month, on a fixed day, right behind the archive pull — then work the flagged list through the weeks that follow.
The recurring cost is smaller than the first build but it is never zero. Two minutes to archive. Ten to stack and refresh the pivot. The rest goes on the crosswalk — reviewing only the account keys you haven't seen before, which is where new venues, renamed venues and re-keyed distributor books all show up wearing the same disguise.
Scale is the quiet problem. In one importer's monthly depletion export that we analyzed, the numbers looked like this:
Thirteen thousand accounts is not a list you eyeball. It is a list you have to trust your keys on, which means the crosswalk has to stay current or the whole report degrades without announcing it.
And that is how the manual version dies. Not from difficulty — the build is genuinely an afternoon. It dies because it is the fifth priority in a quarter with a price increase, a distributor transition and a national account review. The person who built it takes two weeks off. A month gets skipped, then another. The crosswalk goes stale, the twelve-month history test starts failing quietly, and the sheet keeps producing a number that nobody quite trusts any more. The value was never in building it once. It was in running it every month for two years.
Or have it run every night
This is what Sightglass does on the VIP data you already pay for. It reads the depletion feed nightly and keeps every snapshot, so the history accumulates well past any single export's window — the archive step happens whether anyone remembers it or not. It watches for the gaps and hands each rep a short ranked list of their own accounts with the reason stated plainly and the outreach already drafted, to the account and to the distributor. Nothing sends until a person approves it, and approved mail goes from the rep's own mailbox so replies come back to them.
Leaders get the same thing as conclusions rather than a grid: lapsed accounts, distributors that have gone quiet, concentration, territory by territory. It arrives in Slack, an email digest, or the dashboard. And because depletion data lags a day or two, it stays quiet rather than flagging a gap the data can't yet support. Your VIP subscription and your existing reporting stay exactly where they are.