How to Run a Stocktake Faster With AI and a Phone Scanner

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Run a Stocktake Faster With AI and a Phone Scanner.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Run a Stocktake Faster With AI and a Phone Scanner.

Scan barcodes with a phone app instead of writing tallies, count by zone in pairs who cannot see the system quantity, and stop deliveries and order picking at a fixed cut-off. Then have AI compare the count with your system, group variances by likely cause and list what to recount. Scanning removes the typing; the AI check cuts the investigating.

The hours in a slow stocktake are rarely spent counting. They go on writing numbers down, typing them in, and then chasing variances that turn out to be a case counted as a bottle, two vintages sharing a barcode, or a delivery nobody booked in. A phone scanner fixes the first two jobs. The AI step is useful for the third, because miscounts leave recognisable patterns: variances that are exact multiples of six, equal and opposite variances on sibling products, or a shortfall that matches an open order. Spotting those before you adjust stock is what makes the count trustworthy.

Follow me on Instagram@sagnikteaches

The week before: prep that saves the most time on the day

An hour or two of preparation removes most count-day stalls. Work through this list in the week before.

Connect on LinkedInSagnik Bhattacharya
  • Find items without barcodes. Export your product list and filter for a blank barcode field. Print labels for them, or assign internal codes. Every unscannable item becomes a manual search on count day.
  • Split shared barcodes. Wine producers often keep the same barcode from one vintage to the next. If your system has separate products for the 2021 and 2022 vintage, scanning will land on whichever it finds first. Give each vintage its own shelf label with an internal code, or set the app to ask which variant when a barcode matches more than one product.
  • Decide the counting unit. If a product is sold by the bottle but stored in cases of six or twelve, decide whether counters enter bottles or cases, and write it on the zone sheet. This single rule prevents the largest variances you will see.
  • Map zones. Draw the shop, back store and cellar as zones by physical layout (shelves, racks, bays), not alphabetically. Label each zone. Assign each to a counting pair.
  • Clear the paperwork. Book in every delivery that has arrived, process pending returns, and get online orders to a clear status (either fully picked and shipped, or not started).
  • Check the kit. Charge phones, bring power banks, and test the app in the cellar: basements and cold rooms often have no signal, so check whether your app works offline.

Choosing the scanning app

The right app is usually the one attached to the system that already holds your stock figures, because it avoids an import step. Options for a small shop:

Subscribe on YouTube@codingliquids
OptionHow counting worksUseful limits and detailsSuits
Shopify app inventory scannerPhone camera scans a barcode; you adjust or set the on-hand quantity for the chosen locationiOS and Android; warns when a barcode matches several products or noneShopify shops counting directly into live stock
Shopify POS Quick CountScan or search on a POS device and enter on-hand quantities per sessionUp to 1,000 variants per session; submit before starting the next zoneShops using Shopify POS; zone-by-zone counts
SortlyStand-alone inventory app with in-app barcode and QR scanningItem and user limits by plan (Free 100 items and 1 user; Ultra 2,000 items and 5 users); offline mobile access on paid plansBusinesses without a stock system, or with stock in several places
Any scanner app that exports CSVScan and type counts; export a file of barcode and quantityYou import or compare the file yourselfBusinesses whose stock system has no mobile app
A Bluetooth barcode scannerPairs with the phone or POS device and scans faster than a cameraWorth it once you count more than a few hundred itemsLarge catalogues and regular counts

If you used Shopify's Stocky app for stocktakes, note that it stopped working on 31 August 2026; counting now happens in Shopify admin and POS, and Shopify points merchants to Sidekick, its AI assistant, for reorder suggestions. Shopify's own planning guidance is a useful yardstick for time: it suggests a catalogue under 500 variants takes one person about two to four hours, while one over 5,000 variants needs several days counted by zone and three or more people.

Photo-counting apps such as CountThings count uniform items from a picture (manual counting is free; automatic counting is a paid subscription). They work on things like boxes of identical cans on a pallet seen from above. They are not reliable for bottles on a wine rack, where necks overlap and labels face different ways, so test on your own stock before relying on one.

Count day, zone by zone

  1. Cut-off. Pick a time (after closing is easiest) and stop receiving deliveries and picking online orders. Anything that arrives after the cut-off stays in a marked "after count" area.
  2. Pairs, blind. One person scans and enters, the other counts aloud. Neither sees the system quantity. Counters who can see "expected: 36" tend to find 36.
  3. Count every location an item lives in. A popular red may be on the shop floor, in the back store and in an event box. Scanning adds to the running total for that location, so count each location separately rather than trying to add up in your head.
  4. Open, damaged and samples separately. Open tasting bottles and damaged stock go in their own tally so they do not hide inside good stock.
  5. Submit the zone before moving on. Finish, submit or save, and mark the zone done on the map. Half-counted zones are where double-counting happens.
  6. Keep a notes channel. A shared chat or sheet for "barcode not found", "two vintages mixed on shelf 4" and "found 6 bottles of the sparkling in the cellar, not on the system". These notes save an hour of investigation.

A zone sheet, filled in

One sheet per zone, pinned to the shelf end, stops most count-day confusion. The wine merchant's sheet for its back store looked like this halfway through the evening:

ZoneCoversPairUnit ruleStatusNotes
B1Racks 1-4, reds A-MPair 1Bottles; full cases = 6 bottles eachSubmitted 19:40Two vintages mixed on rack 3, split before scanning
B2Racks 5-8, reds N-Z and roséPair 1BottlesCounting
B3Pallet bay: sparkling and gift boxesPair 2Sparkling in cases of 6; gift boxes eachSubmitted 20:05Counted in cases: tell whoever checks variances
B4Spirits cageOwnerBottlesNot startedKey with owner

The note on B3 is the one that mattered: it is exactly the variance the AI check flagged as a likely case-versus-bottle mix-up. When a note like that exists, feed it to the assistant with the files and it will usually connect the two for you.

After the count: an AI variance check before you adjust anything

Export two files: the system stock before the count (product, SKU, barcode, quantity, unit cost) and the counted quantities. Upload both to an assistant that can run calculations on files, such as ChatGPT's data analysis or Claude's analysis tool. Stock files do not usually contain personal data, but they do reveal your costs, so use a plan that does not train on your content.

Attached: system_stock.csv (SKU, Product, Barcode, CaseSize, SystemQty, UnitCost)
and count.csv (SKU, CountedQty, Zone). Quantities are in bottles.

1. Join them on SKU. Calculate variance (counted minus system) in bottles and at cost.
2. Flag any line with a variance over 5% of system quantity OR over $50 at cost.
3. For flagged lines, suggest the most likely cause from this list, with a reason:
   - UNIT: variance is an exact multiple of CaseSize
   - VINTAGE: an equal and opposite variance on a product with the same name,
     different vintage
   - TIMING: I'll attach open_orders.csv and unbooked_deliveries.csv; check them
   - UNKNOWN: none of the above
4. Output a recount list sorted by value at cost, largest first.
5. Show the total variance at cost for all lines and for flagged lines only.

An illustrative extract of what comes back:

Total variance at cost: -2,430.60 across 1,240 SKUs (flagged lines: -2,291.40)

1. Sparkling brut NV          System 48  Counted 8   -40  -1,040.00  UNIT: counted
   in cases? 8 x 6 = 48 would match system
2. Reserva red 2019           System 12  Counted 36  +24    +384.00  VINTAGE: 2020
   Reserva red 2020           System 36  Counted 12  -24    -408.00  same name
3. Pinot Noir 2022            System 30  Counted 12  -18    -306.00  TIMING: 18 bottles
   on 4 open online orders packed before cut-off
4. Dry gin 70cl               System 6   Counted 18  +12    +198.00  TIMING: delivery
   note dated yesterday, not booked in
5. Malbec 2021                System 24  Counted 18   -6     -57.00  UNKNOWN
6. Single malt 12 year        System 9   Counted 6    -3    -135.00  UNKNOWN

The first four explain most of the headline variance without anything having been lost. Recount number 1 in cases. Correct the vintage labels on the shelf for number 2 and move the stock back to the right SKU. Number 3 is sold stock waiting for collection by the courier. Number 4 needs its delivery booked in. What is left is small and real: six bottles of Malbec (the breakage book showed a dropped case end, never entered on the system) and three bottles of single malt nobody can account for, which is worth a closer look at who has access to that shelf.

One thing to check in the AI's work: in this illustration it also suggested UNIT for a −12 variance on a white wine that is only ever counted by the bottle, because 12 happens to be a case size. The recount showed 12 bottles really were missing (a trade order sent without paperwork). Treat every suggested cause as a reason to recount or look, not as a correction to apply.

A wine merchant's count, in numbers

An illustrative independent wine merchant carries about 1,240 SKUs (most wines split by vintage) across a shop floor, a back store and a small cellar, roughly 14,800 bottles in all. Its old stocktake used printed lists and clipboards.

StageBefore: paper listsAfter: phone scanning and AI check
Preparation1 hour printing lists2 hours labelling unbarcoded items and splitting vintages (first time only)
Counting3 people for 8 hours = 24 person-hours2 pairs for 4.5 hours = 18 person-hours; about 14 with a Bluetooth scanner the next year
Typing counts into the system6 hoursNone
Finding the cause of variancesAbout 3 hours, often left unfinished20 minutes for the AI check, 90 minutes of targeted recounts
TotalAbout 34 person-hoursAbout 22 person-hours in year one

The time saving is real, but the bigger change was accuracy. The paper count had typically been posted with the variances unexplained, which meant the system drifted further from reality every year. After the AI check, unexplained variance at cost fell to $192 (the Malbec and the whisky), against a headline figure of about $2,430 before investigation. Posting the raw count would have wrongly written off stock worth over $2,000 and left the sparkling wine showing 8 bottles instead of 48, which would then have triggered a panic reorder.

Variances that are not shrinkage

These patterns recur in almost every stocktake. Give the list to the assistant as part of the prompt, and to the recount team as a checklist.

  • Unit of measure. Cases counted as units or units as cases. The variance is an exact multiple of the pack size.
  • Variant swaps. Vintages, sizes or colours sharing a barcode or a shelf. Equal and opposite variances on sibling products.
  • Sold but not shipped. Orders picked before the cut-off but still showing as stock. Match against open orders.
  • Received but not booked. Deliveries on the premises but not on the system. Match against delivery notes dated before the count.
  • Breakages and samples. Recorded in a book or a message but never entered on the system.
  • Counted twice. The same shelf counted by two pairs, or a zone re-scanned without clearing the first attempt. Variances that are exactly double the system quantity are the giveaway.

Receiving is the source of most timing variances, so it pays to make it automatic: whether AI can read delivery notes and update stock covers that. If you still count on paper in part of the building, turning handwritten forms into spreadsheet data with AI shows how to photograph tally sheets and get a clean table out of them, with the checks that catch misread numbers.

Recount rules and sign-off

Write the rules down before count day so nobody argues about them at 10 p.m.

  1. Recount any line flagged by the variance check (over 5 per cent or over $50 at cost, in this example; set your own thresholds).
  2. The recount is done by a different person from the original count, also blind.
  3. If the recount agrees with the first count, accept it. If it agrees with the system, use the system figure and note the miscount. If it gives a third number, count a third time with the owner present.
  4. Resolve timing items (open orders, unbooked deliveries) by processing them, not by adjusting stock.
  5. The owner signs off the final adjustment, with the unexplained variance at cost written on the sign-off sheet.
  6. Only then post the adjustments. In Shopify, the Inventory adjustment changes report lets you review what changed afterwards.

The stock value you sign off feeds your accounts, so time the count to fit the month-end calendar; speeding up month-end close shows where it sits.

Cycle counting so the big count gets smaller

Once the full count is clean, counting a little often keeps it clean with far less effort. A simple scheme for a small shop:

GroupWhich itemsCount how oftenWine merchant example
AThe 20% or so of items that make up most of your stock value, plus anything easy to stealMonthlyPremium sparkling, top reds, single malts: about 180 SKUs, 45 minutes
BSteady sellers of middling valueQuarterlyEveryday reds and whites: about 450 SKUs
CSlow, cheap or bulky itemsTwice a yearMixers, glassware, gift boxes, older vintages

Shopify's guidance suggests another version: count a different zone each week so the whole catalogue is covered over a cycle. Either way, run the same AI variance check on each small count. Recurring causes (the same supplier's deliveries arriving without paperwork, the same shelf mixing vintages) show up within two or three cycles, and fixing them does more for accuracy than any amount of counting.

Clean counts make other jobs possible. Finding dead stock and slow movers with AI depends on accurate quantities, and so does setting reorder points that prevent stockouts. If you are still choosing a stock system, AI inventory tools for small retailers compared covers the options with scanning built in.

Further reads

Sources: Shopify Help Center pages on the Shopify app inventory scanner and on planning an inventory count with Shopify POS (Quick Count, session limits, recount guidance); Sortly pricing page (item and user limits, offline access); CountThings product pages.

Want your next stocktake done in half the time?

On a 1:1 call we'll look at your catalogue, locations and counting method, choose a scanning setup that fits, and build the variance check so count day ends with numbers you trust.

Book a 1:1 call with me