Pick & Pack
High-density order fulfillment — move orders through To Pick → Picking → Packed → Done with atomic inventory commit.
Overview
Pick & Pack is a high-density operational workstation that turns confirmed purchase orders into completed shipments. Orders move through four explicit fulfillment stages — To Pick → Picking → Packed → Done — with location-optimized pick routes, a packing verification console, and an atomic inventory commit on completion.
Location-Optimized Routes
Pick routes are sorted by Building → Aisle → Shelf so operators walk the shortest path through the warehouse — no backtracking, no missed bins.
Dual Verification
Each item is checked twice: once at the shelf during picking (amber tick), and again at the packing station during verification (violet tick) before the shipment is committed.
Atomic Inventory Commit
Ship & Commit deducts all SKUs in a single transaction. If any SKU lacks sufficient stock, the entire commit is aborted — bins and PO records are left completely untouched.
Guardrails & Toasts
Five distinct validation rules prevent stage-skipping, premature shipping, and insufficient-stock disasters. Each violation surfaces a clear [ERR] toast message.
Quick Start
- Switch to Warehouse mode using the mode switcher in the header.
- Click Pick & Pack in the left sidebar.
- All orders in Confirmed status appear in the leftmost To Pick column.
- Drag a card to the next column, or use the inline quick-action button on the card.
- Open a card in Picking stage, tick each line item as you collect it from its bin.
- When all lines are picked, advance to Packed and verify each item at the packing station.
- When all items are verified, click Ship & Commit. The order's SKUs are atomically deducted from their bin locations and the PO advances to Received.
Four-Stage State Machine
The Pick & Pack workflow is a strict linear state machine. Each stage has a defined meaning, a distinct visual accent color, and a specific set of actions available to the operator.
| Stage | Accent | Meaning | Cards Show |
|---|---|---|---|
| To Pick | Sky | Confirmed orders waiting to be processed by a picker | SKU count, total units, Start Picking button |
| Picking | Amber | Operator currently walking the warehouse floor collecting items | Picked / total progress bar (amber), item checklist in drawer |
| Packed | Violet | All items collected; order at packing station awaiting verification | Verified / total progress bar (violet), verification console in drawer |
| Done | Emerald | Inventory deduction committed; PO advanced to Received | Lock icon, emerald sealed badge, read-only order detail |
The Atomic Commit (Ship & Commit)
Moving a card to Done happens exclusively through the Ship & Commit button — dragging directly to the Done column is blocked. When Ship & Commit is triggered, the system runs a pre-flight check before writing any data:
- Validates every line item has stock available in its resolved bin location.
- Deducts the picked quantity from each
InventoryProduct.quantity. - Appends an out movement log entry for each SKU with the bin coordinate and timestamp.
- Advances
PurchaseOrder.statusfrom Confirmed to Received.
All-or-Nothing Guarantee
If any SKU in the order fails the stock check, the entire commit is aborted. No bin quantities are changed, no movement log entries are written, and the PO status remains Confirmed. The operator sees a specific [ERR] toast naming the problematic SKU and the shortfall quantity. The card remains in the Packed column and the operator can investigate before retrying.
Data Sources
The workstation reads from and writes to three distinct service layers, each with its own JSON store. Changes in Pick & Pack propagate to Inventory in real time on a successful commit.
| Data | Service | Endpoint |
|---|---|---|
| PO numbers, vendor, line items, quantities | purchaseOrderService | /api/data/purchase-orders |
| Live bin coordinates & on-hand quantities | warehouseInventoryService | /api/data/warehouse-inventory |
| Workflow stage, picked/verified flags | pickAndPackService | /api/data/pick-and-pack |
Only Confirmed and Received orders appear in the workstation. Drafts, RFQs, Sent, and Cancelled orders are filtered out automatically.
UI Walkthrough
Stat Tiles
Five summary tiles above the Kanban columns give an instant snapshot of fulfillment health across all active orders.
| Tile | Color | What It Shows |
|---|---|---|
| Backlog | Sky | Number of orders in the To Pick column |
| Active | Amber | Number of orders currently being picked |
| Packed | Violet | Number of orders at the packing station |
| Done | Emerald | Number of completed orders in this session |
| Units in Flight | Primary (indigo) | Total unit count across all non-Done orders |
Order Cards
Each Kanban card shows the essential information an operator needs at a glance, without opening the detail drawer:
- PO Number — displayed in monospace font (e.g.
PO-2026-0042) - Vendor name — who the goods came from
- SKU pill — e.g. 3 SKU, indicating line item count
- Units row — total unit count across all line items
- Progress bar — appears in Picking and Packed stages; color matches the stage accent
- Quick-action button — stage-specific primary action (Start Picking, Move to Pack, etc.)
Moving Cards
Two methods are available for advancing a card to the next stage:
- Drag and drop — drag the card to the target column. The destination column highlights with a primary-tinted ring when the card hovers over it.
- Inline button — the quick-action button on the card face advances it one stage without opening the drawer. Useful when you want rapid progression without inspecting the detail.
Order Detail Drawer
Click any card to open the 360px detail drawer from the right edge. The drawer's content adapts to the current stage.
| Stage | Drawer Mode | Interactive Elements |
|---|---|---|
| To Pick | Order Detail (read-only) | SKU list, quantities, bin locations — view only |
| Picking | Pick Route (interactive) | Sorted checklist: SKU | Bin pin | Qty | ✓ amber toggle per line |
| Packed | Packing Verification | Same columns but ✓ becomes V violet verification toggle per line |
| Done | Order Detail (sealed) | Read-only; shows completed timestamp and commitment confirmation |
The Pick Route checklist sorts items by Building → Aisle → Shelf so the operator walks the most efficient path through the warehouse. Bins are displayed with a pin icon and the full coordinate (e.g. C-A2-S1).
Footer Actions
| Stage | Button | Enabled When |
|---|---|---|
| To Pick | ⚡ Start Picking | Always — no precondition |
| Picking | → Move to Pack | Every line item has been ticked as picked |
| Packed | 🚚 Ship & Commit | Every line item has been verified at the packing station |
| Done | 🔒 Sealed & Committed | Read-only indicator — no action available |
Guardrails
Five validation rules prevent operators from skipping stages or shipping orders with outstanding problems. Each violation surfaces as a [ERR] toast notification.
| Guardrail | Trigger | Toast Message |
|---|---|---|
| No direct leap to Done | Dragging a card directly to the Done column from any stage other than Packed | [ERR] Use Ship & Commit to finalise an order |
| Incomplete picking | Attempting to advance Picking → Packed when one or more lines remain unticked | [ERR] All items must be picked before moving to Pack |
| Unverified line on commit | Clicking Ship & Commit when a packing verification toggle is still unchecked | [ERR] SKU XYZ-123 not verified — cannot ship |
| Insufficient stock | Commit pre-flight finds a bin's on-hand quantity is less than the required pick quantity | [ERR] SKU XYZ-123 short — need 10, on-hand 4 |
| SKU not stocked | Commit pre-flight finds a SKU with no bin location in the warehouse inventory | [ERR] SKU XYZ-123 not stocked in any bin |
Stage-Skipping Is Always Blocked
The state machine does not allow skipping stages in either direction. You cannot drag a To Pick card directly to Packed, and you cannot drag a Picking card back to To Pick without first un-ticking all picked items. Every transition must go through the defined sequence and pass the relevant guardrail checks.
Worked Examples
Example 1 — Complete Pick-Pack-Ship Cycle
- Open the screen — a new Confirmed PO appears in the To Pick column.
- Click the card to open the detail drawer. Review the SKUs, quantities, and bin locations.
- Click Start Picking. The card moves to Picking; the drawer switches to Pick Route mode.
- Walk the warehouse floor in Building → Aisle → Shelf order, ticking ✓ for each collected item.
- All lines ticked → click Move to Pack. The drawer switches to Packing Verification mode.
- At the packing station, click the V button for each item as you verify and box it.
- All items verified → click Ship & Commit. Toast:
[OK] Inventory committed — 25 unit(s) deducted. - The card moves to Done with a sealed badge and an emerald lock icon.
Example 2 — Catching Insufficient Stock
A packer verifies all four SKUs and clicks Ship & Commit. The pre-validation phase finds that SKU-541 has only 3 units on-hand but the order requires 5. The entire transaction is aborted.
- No bins are modified.
- No movement log entries are written.
- The PO status remains Confirmed.
- Toast:
[ERR] SKU SKU-541 short — need 5, on-hand 3.
The operator can then go to Inventory Management to investigate the discrepancy, create an adjustment, and retry the commit once stock is corrected.
Resolving Stock Shortfalls
If a shortfall is found during Ship & Commit, open Inventory Management in a second tab or browser window. Locate the affected SKU by Ctrl+K search, check the movement log for recent picks that may have consumed the stock unexpectedly, and either create a Receipt movement to replenish the bin or an Adjustment to correct an earlier counting error. Return to Pick & Pack and click Ship & Commit again — the commit will proceed if the stock check now passes.
Visual Conventions
Pick & Pack uses a consistent visual language throughout the workstation to help operators work at speed without reading every label.
- Monospace font — PO numbers, SKU codes, bin labels, progress counters, and toast messages all use monospace to distinguish operational data from prose.
- ASCII state markers in toasts:
[ ]unstarted,[~]in progress,[+]packed,[x]done,[OK]success,[ERR]error. - Per-stage accent colors: sky (To Pick), amber (Picking), violet (Packed), emerald (Done). These colors appear on column headers, progress bars, and quick-action buttons consistently.
- Thin 1px progress bars: color-coded by stage, show picked/total or verified/total fraction without taking up card real estate.
Frequently Asked Questions
pick-and-pack.json server-side, not held in memory. You can close the browser, return the next day, reopen the drawer, and the progress is exactly where you left it. The progress bar on the card face also reflects the saved state so supervisors can see the partial progress in the Kanban view.