Project

Annual Inventory Lookup Tool

A find-it aid built from the annual inventory count

Once a year the store scans every item and records where it sat. For the rest of the year, the most common use of that count is finding things. A staff member is holding a misplaced item, or standing at an empty shelf, and wants to know where it was counted and whether sales since then explain where it is now. This tool answers that in one search.

At a glance

Role
Designed and built solo
History
A spreadsheet searched with Ctrl+F, then a search bar the next year, then this app, refined over three annual counts
Stack
Next.js, Postgres, the Shopify Admin API and Polaris, on Vercel
Used by
Store staff, often on the floor with an item in hand
Shopify access
Read-only. Count data never leaves the app

01What it does

Search by SKU, barcode, title or zone name. Each item shows three things side by side: how many were scanned and in which zones, how many have sold since the count, and how many Shopify shows on hand now. From those, staff judge which locations are worth checking.

An item found in two zones. Expanding the stray zone shows the titles each copy was shelved between, beside what has sold and what Shopify shows on hand.
  • Every zone, with counts. About one item in five was scanned in more than one zone, and one was found in 32. That split is the strongest sign a copy has been moved, so every zone and its count stays visible instead of being collapsed to one location.
  • What it sat next to. Scan order is shelf order. Expanding a zone shows the scans on either side of each copy, so a stray copy comes with the titles it was shelved between.
  • Search by zone. Typing a zone name lists everything counted there, for the question "what should be on this shelf?"
  • Shopify's own history. Each item carries its adjustment history from Shopify, with the reason, app and staff member behind each change.
The home screen, with the real 2026 count: 30,286 items across 323 zones. Shortcuts jump to items that sold through, never matched the catalog, or show negative on hand.

02How it's built

The count is frozen: uploaded once and never edited. Everything since the count stays live. Shopify pushes sales, returns and stock changes to the app as they happen, and a daily job fills any gap the push missed. When stock is received in ReStocky, it posts the receipt straight into the log.

The scanner leaderboard came from the same raw scan log. It shows who counted what, how fast, and across how many zones.

The scanner leaderboard, built from the same raw scan log: who counted what, how fast, and across how many zones.

03What I left out

It deliberately does no reconciliation. An earlier version compared expected stock against on-hand and flagged discrepancies. On the floor that proved more confusing than useful, so it was removed. The tool shows the facts and leaves the judgement to the person holding the item.

The home screen and leaderboard show the store's real 2026 count, with staff names changed. The item screen shows the tool running on demo data.