Q3 Warehouse Inventory Count — Discrepancies & Fixes

Reconciled review of the 10,000-unit cycle count: what didn't match, why, and the fix for each category.

Mixed audience — ops reads the impact, the floor team reads the fix.

SourceWMS exportPeriodQ3 2026SiteDC-WestOwnerInventory Ops

OverviewReconciled review of the 10,000-unit Q3 cycle count.

Count date
2026-07-09 14:22 UTC
Units expected
10,000
Method
full cycle count
Mode
strict
Matched cleanly
8,50085.0%▲ +3%
Floor — fixable
1,10011.0%
Miscounts + mislabeled bins we can correct.
Floor
Vendor — escalate
4004.0%▼ −90
Vendor
Count status
HEALTHY
Total units
10,000
Matched cleanly8,500 units
Floor-fixable1,100
Vendor400

The count reconciles exactly: every unit lands in one bucket and the counts sum to the expected total. Reconciliation is a hard gate — a page that does not balance will not build. The old bin > 12 scan rule is under review; see the method.

Percentages are of the 10,000-unit total. Counts were verified against the shelf, not estimated.

Count pipeline

1Scan 2Reconcile 3FlagSystem 4Fix 5Recount
back to Scan

Discrepancy resolution across teams

Detect
Investigate
Resolve
Escalate
Floor
System
Vendor
1Recount bin
2bRe-label
2aCheck scan log
3Reconcile
4Escalate short-ship
In-house
Vendor claim
donecurrenttodoblockeddeferred
Action needed before the next count
The bin > 12 scan rule skipped 260 valid units in overflow aisles. Confirm the rule with the site lead before re-counting.
Counts below are per distinct discrepancy class, not per unit.

Discrepancies & fixes

Legend — badges used on this page
FloorFixable on the floor before the next count.
SystemDefect in the scanning/labeling pipeline.
VendorDepends on the vendor to resolve.
DiscrepancyRiskUnitsWhat the problem isProposed fix
Floor — fixable1,100
Double-counted units
Floor
Skipped, bin > 12260
Same-window re-scan340
6006.0% of total The same pallet is scanned twice when a picker re-enters an aisle within the count window. De-duplicate on the pallet ID (pallet_id) before totalling; keep the most recent scan.
Mislabeled bin codes
System
5005.0% of total Scanner assumed 5-digit bin codes; 9-digit codes were truncated and failed the lookup. Widen the scanner to accept 9-digit codes; re-scan the 500 truncated bins from the raw log.
Vendor — escalation400
Short shipment
Vendor
4004.0% of total The vendor's ASN listed 400 units that never arrived on the dock, so they can't be counted. Escalated to the vendor (ticket OPS-1234); hold the line until a corrected ASN arrives.
Correctly counted — no action0
— none —
Discrepancies by owner:Floor1System1Vendor1

Reconciles: 1,500 + 8,500 matched cleanly = 10,000.

Count progress

Zone A
100.0%Zone B
92.0%Zone C
85.0%Overflow
4.0%
Affects:inventoryscan-appDC-West

Verification

Follow-up checklist

Owner
Inventory Ops — @site-lead signs off each fix.
Rollback
Re-disable the scan flag; the widened bins fall back to the 5-digit read.
For the read-out
Lead with the reconciliation gate — it is the one number leadership tracks.

Rollout

Method

Counts come from the scan-stage audit log, grouped by discrepancy reason. The reconciliation query and the de-dup fix are below.

reconciliation.sql
SELECT reason, count(*) AS n
FROM count_audit
WHERE cycle_id = 'Q3-2026'
GROUP BY reason
ORDER BY n DESC;
dedupe.ts · tiebreak fix
function pickWinner(a, b) {  return a.code.localeCompare(b.code);  if (isPlaceholder(a) !== isPlaceholder(b))    return isPlaceholder(a) ? 1 : -1;  return a.code.localeCompare(b.code);}
Discrepancy volume by zone
Fig 1 — discrepancy volume by zone (embedded as a data: URI; skaldr embeds images, it does not generate charts).
These bins are aggregate lots — we can't split AGG-07 into individual SKUs from the dock scan alone.
Floor lead, ticket OPS-1234

At a glance

Matched cleanly
8,50085.0%
Needs work
1,50015.0%
Reading this section
The cards on the left summarise; the panels below break down count progress and checks side by side.
Zone C
88.0%
  • Reconciliation gate passes.
  • Awaiting OPS-1234.
Appendix — discrepancy-reason raw countsupdated 18 Jul 2026
  • Double-count (same-window re-scan): 340
  • Double-count (bin > 12 skip): 260
  • Mislabeled bin code (9-digit truncation): 500
  • Short shipment (vendor): 400

Raw counts are pre-aggregation and exclude the 8,500 cleanly-matched units.

Counts at a glance

Clean vs discrepant units by zone
01.25k2.5k3.75k5kZone AZone BZone CZone D
CleanDiscrepant
Open discrepancies over the count window
05001k1.5k2kDay 1Day 2Day 3Day 4Day 5
Open
How discrepancies resolved
2,060TOTAL
Fixed on floor 44%System defect 37%Vendor 19%

Count methods compared

Full cycleSamplingContinuous
Catches every bin
Efforthighlowmedium
Reconciles exactly
Disrupts picking

Readiness by zone

Floor
743.8%
System
212.5%
Vendor
212.5%
Awaiting the vendor's corrected ASN.
ScannedReconciledRe-labeledSigned off
Zone AFloorFloorFloorFloor
Zone BFloorFloorSystem
Zone CFloorSystemn/a
OverflowVendorVendor

Where the count comes from

Handheld scansper-aisle, live
Fixed-reader gates
Manual recountoverflow aisles only
Reconciled count

How to run the recount

1Freeze the aisle and pull the expected listbefore any scanning

Lock the aisle in the WMS so no picks land mid-count, then export the expected units.

  • One row per bin, with the expected quantity.
  • Flag overflow bins (bin > 12) — they take the manual path.
2Scan every bin twice, reconcile on the pallet ID

Two independent passes; de-duplicate on pallet_id so a same-window re-scan can't double-count.

reconcile
counted = dedupe(scans, key="pallet_id")
assert sum(counted) == expected
3Escalate anything that still won't balance
A residual gap is a vendor short-ship, not a miscount — open a ticket, don't force the numbers.

Sources

Method definitions follow the warehouse counting SOP [1]; the discrepancy thresholds come from the Q2 reconciliation audit [2].

  1. 1Warehouse Counting SOP, rev. 7 — §3 Cycle vs sampling.
  2. 2Q2 Reconciliation Audit, p. 12.
Generated with skaldr