Cycle-count scheduler for the fresh supermarket count specialist - tier items by value and variance history, print one twenty-item count list per day
Build me a single-file HTML cycle-count scheduling tool for the inventory
count specialist at a fresh-food supermarket. Opens by double-click, works
offline.
Context: we run one full count a month, and by the time variances surface
the trail is cold. We want cycle counting - high-value, high-variance items
counted daily in small batches, cheap items rotated monthly. Which items
sit in which tier, and exactly what to count each day, is this tool's
whole job.
Data entry:
- Paste the item list from a spreadsheet, minimum four columns: item name,
stock quantity or value, historical count-variance count (0 if none),
short-shelf-life yes/no
- Data persists in localStorage; provide plain-text export/import for
machine changes and handovers
Tiering rules (parameters adjustable, ship defaults):
- Tier A (counted daily): any of - stock value in the top 10%; variance
count ≥2; short shelf life AND value in the top 30%
- Tier B (weekly): value in the 10-40% band with fewer than 2 variances
- Tier C (monthly): the rest
- Show tiers as an editable table - I can manually promote or demote any
item. The rule is a default, my floor judgment wins; do not lock it
Daily count sheet:
- "Generate today's sheet" produces: all of Tier A (Tier A is by
definition due today), then Tier B and C items by fair rotation until
the sheet reaches my daily workload setting (default 20 items)
- Rotation must be fair: full Tier B coverage every 7 days, full Tier C
coverage every 30 days - no item getting picked constantly while its
neighbor waits half a year
- The sheet prints cleanly: item, optional shelf-location column, system
on-hand, blank counted column, blank variance column for handwriting
- After counting, I key actual counts into the page; the tool computes
variances and accumulates them into each item's variance count; hitting
the threshold auto-promotes the item. That loop is the point of this
tool: items that count badly get counted more
Hard requirements:
- Single file, no build step, no external CDN or fonts
- No accounts, no multi-store, no scanner integration - one person, one
store, one file. Do not drift toward "platform"
- No preloaded "sample items" - start empty with a paste-format guide on
first screen
- Variances get counted and trigger promotion only. Do not generate
"variance cause analysis" - causes come from a human walking the
receiving/write-off/transfer paper trail. If the tool invents one for
me, I stop trusting every number it computes
Why it is written this way
The real problem with monthly counts is lateness: learning on the 30th that beef is twenty kilos short means the trail died weeks ago. Cycle counting compresses discovery to daily, but its own burden is scheduling - which items count daily, how rotation stays fair - and that rots within a week when run by hand. This tool does exactly that one job and nothing else.
Auto-promotion on variance count is the core loop: the value of cycle counting is not the counting, it is "items that count badly get counted more." Variance history filters problem items out on its own - baking that rule into the tool beats relying on anyone's memory, because people remember last month's incident, while the tool remembers everything.
Two things the coding agent must be blocked from. First, sample data: a fake item list inflates the user's read of the tiering and leaves phantom items in localStorage. Second, "variance cause analysis": anything the tool generates there is invented - real causes come from walking the document trail. One invented answer and the user stops trusting every number the tool computes; this prohibition protects the credibility of everything else.
Manual promote/demote stays available because tiering rules are defaults, not truth: an item spiked in price, a supplier swap raised substitution risk - the floor knows what the data doesn't. Lock the rules and users drift back to spreadsheets, and then none of this happened.
Variables
| Variable | Notes |
|---|---|
| Tier thresholds | Top 10% value / 2 variances / top 30% short-shelf - all adjustable per store |
| Daily workload | Default 20 items; sets how many B/C items top up each day |
| Coverage periods | Tier B every 7 days, Tier C every 30 days, adjustable |