What Is Cart Assignment?
Before a single pick happens, every order must be assigned to a cart. The cart determines how many orders get picked together, what physical container they go in, and which packing lane they end up at. Getting the cart right is the foundation — if an order is on the wrong cart, everything downstream is wrong.
Why this comes first: Our Part 2 optimization algorithms batch orders within the same cart type. If an order is classified into the wrong cart type, it gets grouped with the wrong orders — and all improvement numbers become unreliable. Cart assignment must be confirmed before optimization results can be trusted.
Cart Types & Capacities
LifeSeasons uses six cart types. Confirmed capacities come from the operations meeting. Estimated capacities are our best guess and need to be confirmed.
Auto-Bagger Exclusions — Confirmed List
These SKUs cannot go through the auto-bagger (too large, boxed, or crushable). They must be routed to blue or red carts instead of green. Confirmed by Ben:
Sherry's Current Assignment Process
Sherry runs through these filters every morning in order. Each step pulls a group of orders and assigns them to a cart type. Whatever remains after all filters goes through size-based rules at the end.
Sherry also tries to create full carts wherever possible — a partial cart is inefficient because a worker walks the same distance for fewer orders. At end of day, leftover orders may go on any available cart rather than waiting.
What We've Classified From the Data
Using the rules above (with estimated thresholds where values aren't confirmed), we classified all 930 usable orders from the ~10-day sample:
Important caveat: Pack-one detection is a proxy — we check if an order picks from exactly one shelf location. The real rule is whether every bottle is the same product, which is not always the same. Green cart thresholds and all estimated capacities need validation from LifeSeasons before this classification is reliable.
What We Have ✔ vs What We're Missing
| What We Have (Solid) | Status |
|---|---|
| Blue cart threshold (28 bottles) | Confirmed by LifeSeasons |
| Red cart threshold (10 bins) | Confirmed by LifeSeasons |
| Auto-bagger SKU exclusions (272, 284, 503, 307, 317, 369) | Confirmed by Ben |
| D2C priority detection (hyphenated order number) | Confirmed — matches CustomField4=OrderLogix in data |
| Brand separation (HC / NGVC / LS never mixed) | Confirmed |
| Green cart blocks auto-bagger-excluded SKUs | Implemented correctly |
| What We Don't Have (Gaps) | Impact |
|---|---|
| Mailer channel criteria (NQ prefix, SKU 9085 / 505) | Not testable — none in 10k sample. NeuroQ orders may be misclassified as green/blue. |
| Green cart capacity | We use 20 (estimated). If it's 15 or 25, batching is wrong. |
| Pack-one capacity | We use 20 (estimated). Same issue. |
| Pack-one = “same product” check | We proxy via “1 shelf location.” An order with 2 products at the same location would be misclassified. |
| Green = “2–3 items” vs “2–3 locations” | 4 items at 2 locations: we say green, Sherry might say blue. |
| Yellow cart rules | Sherry mentioned it — no criteria given. We don't use it. |
| SLA timestamp (order creation time) | We capture pick time, not creation time — can't enforce the 3 pm same-day cutoff. |
| SKU 505 confirmation | Ben said 505 goes to mailer, but 503 is on the exclusion list — same product family may need separate handling. |
Brand Breakdown
Detected from item number prefixes — no guessing. Orders from different brands are never grouped into the same batch.
HC. In our sample all are wholesale (UPS Ground). Ben listed HC as a D2C channel — needs clarification (see Q3 below).PL-NGVC. Natural Grocers Vitamin Cottage. Stored on Speed Cell 3. Never mixed with HC.Priority Breakdown
4046858-3990825). All carry OrderLogix in CustomField4 in current data. Need updated export with Shopify store names.Questions for LifeSeasons
-
1Can the export include the order creation time?
Ben confirmed that D2C orders placed before 3 pm ship same day; after 3 pm they ship next business day. Right now the export only has the pick time — when a picker scanned the item — which can be hours after the order was placed. Without creation time, we cannot separate “must go out today” orders from “can go tomorrow” orders, which affects how we prioritize batches.
-
2Can you send a more recent data export?
Ben mentioned that D2C orders can be identified by the Shopify store name in CustomField4 (LifeSeasons Shopify, NeuroQ Shopify, My Best Heart Shopify, etc.). The current sample is from 2021 and shows
OrderLogixinstead — the store-level breakdown is not there. A more recent export would let us identify D2C orders by the exact store rather than just the order number format. -
3Are Health Concerns (HC) orders D2C or wholesale?
Ben listed “Health Concerns” as one of the D2C Shopify stores. But every order with an HC-prefix item number in our data is shipped wholesale via UPS Ground. It is possible that “Health Concerns” the Shopify store and HC-prefix items are two separate things. We need to know whether HC orders should ever be treated as urgent D2C, or always as standard wholesale.
-
4Is SKU 505 excluded from the auto-bagger?
Ben’s confirmed exclusion list is: 272, 284, 503, 307, 317, 369. The operations meeting also mentioned SKU 505 (My Best Heart) as too crushable for the auto-bagger. If 505 should be on the exclusion list, any order containing it must be routed away from the green cart. Right now we are not excluding it.
-
5What is the exact rule for assigning an order to a mailer cart?
We know mailer carts handle bulk single-item orders for NeuroQ, Symmetry, and My Best Heart. But we do not know the exact trigger — is it the order number prefix (NQ…), specific SKUs (9085, 505, 9136–9138), a minimum order quantity, or some combination? None of these orders appear in the current 10k sample, so we cannot validate the routing without a data export that includes them.
-
6How many orders fit on a pack-one cart, and how many on a green cart?
Blue cart (28 orders) and red cart (10 bins) are confirmed. For pack-one and green we do not have a confirmed number, so we are using 20 as a placeholder. The capacity directly controls how many orders get grouped into each batch — if the real number is different, our batch sizes are wrong.
-
7What is the exact rule that separates a green cart order from a blue cart order?
The meeting described green as “2–3 items.” It is unclear whether “items” means distinct products, individual bottles, or unique shelf locations picked. For example: an order with 4 distinct products totalling 10 bottles — does that go green or blue? Getting this wrong means a meaningful portion of orders land on the wrong cart type entirely.
-
8What is the yellow cart used for?
Sherry mentioned a yellow cart during the operations meeting but no rules or criteria were given for it. We currently do not assign any orders to it. If yellow handles a specific order type, those orders are being misrouted to a different cart right now.
What Is Batch Optimization?
Once orders are assigned to a cart type (Part 1), there is a second decision: within that cart type, which specific orders get grouped into one batch? For example, if you have 100 blue cart orders, you need roughly 4 batches of 28. Which 28 go together in each batch?
Sherry does not currently optimize this. She assigns orders to batches based on what fits — not on which orders are physically closest on the shelves. This is the gap our algorithms fill. Grouping orders that pick from nearby shelf locations means the worker walks a shorter total distance per batch.
Route Cost Model
We do not have the physical warehouse floor plan yet. As a proxy, route cost is:
Known limitation: Pick sequence numbers do not capture cross-aisle travel or real warehouse geometry. The relative ranking of algorithms is reliable. The absolute improvement percentages will change once we have real walking distances from the floor plan.
The 4 Algorithms We Tested
Each algorithm runs independently on orders of the same cart type, brand, and priority. Green cart orders are never mixed with blue cart orders. HC orders are never mixed with NGVC orders.
Jaccard Greedy
- Seed batch with farthest-location order
- Fill by shared location overlap score
- Fast, simple, good comparison baseline
RAG — Routing-Aware Greedy
- Same seed as Jaccard
- Screen top-15 by Jaccard similarity
- Pick the one that adds the least route cost
Clarke-Wright Savings (CW)
- Calculate savings from merging every pair of orders
- Merge highest-savings pairs first
- Industry-standard vehicle routing algorithm
- Best performance across all metrics
CW + Consolidation
- Run CW, then merge small batches to fill carts
- Slightly worse than CW alone with smaller cart sizes
- Not recommended for current capacity profile
Results
All numbers use real LifeSeasons data (930 orders, ~10 days). Per-cart-type capacities applied. Brand and priority grouping enforced. Lower average route cost = less walking = better.
| Method | Avg Route Cost | vs Random | vs WMS | Status |
|---|---|---|---|---|
| Random (no system) | 52,823 | baseline | — | No optimization |
| WMS (current) | 51,901 | +1.7% better | baseline | In production |
| Jaccard Greedy | 38,915 | +26.3% better | +25.0% better | Tested |
| RAG (Routing-Aware Greedy) | 38,915 | +26.3% better | +25.0% better | Tested |
| Clarke-Wright Savings | 31,774 | +39.8% better | +38.8% better | Top Performer |
| CW + Consolidation | 33,884 | +35.9% better | +34.7% better | Tested |
Clarke-Wright is the clear winner — 38.8% better than the current WMS on average route cost. Note that the WMS was free to mix priority 1 and priority 2 orders in the same batch, while our algorithms are constrained to never mix priorities. Despite this handicap, CW still wins by 38.8%, making the result stronger than it appears.
Limitations & What's Next
What We Need for Part 2 to Be Exact
-
1Warehouse Dimensions
- How long is one aisle (shelf row)?
- How wide is the gap between two adjacent aisles?
- Where does a picker start and end their route?
-
2Warehouse Floor Plan or Map
- Even a rough hand-drawn layout would let us calculate real aisle-level distances.
- This is the single most impactful input for making optimization numbers exact and giving LifeSeasons a confirmed dollar figure on labor savings per day.