AlixPartners Data Challenge: box catalog
A MILP model with OR-Tools and local search that lowers annual logistics cost from $209.3M to $188.4M.
Validated annual saving
$20.9M
Cost drops 9.96%: from $209.3M to $188.4M per year
Box types
204 → 59
Emerges from cost, it isn't a model objective
Validated products
427 / 427
They meet the 4 physical constraints
Pallet utilization
82% → 92–96%
Improves in all 5 plants
The challenge
In the AlixPartners Data Challenge on Kaggle, a fictional company (Bonsai Corp, a frozen-broccoli distributor) spends $209.3M a year shipping 427 products in 204 box types from 5 plants (Buenos Aires, Curitiba, Santiago, Monterrey and Bakersfield). Every time it launched a new product someone designed a custom box for it, and the result is a fragmented catalog.
The cost is made of packaging, which is cheaper the more volume each box type has, and freight, which depends on how many boxes physically fit on a pallet. Optimizing one without looking at the other loses money somewhere.
Diagnosis
- Freight weighs ~86% of total cost ($179.1M of $209.3M); packaging is the remaining 14%.
- 117 of the 204 box types (57%) exist for a single product, even though many products have almost identical volumes.
- Average pallet utilization was 82.2%, with visible room for improvement.
- Box length is almost uniform (350–400 mm, set by the production line) and width and height spread almost continuously between 150 and 350 mm.
How many products share each box type
117 of the 204 types (57%) exist for a single product: the quantitative diagnosis behind the decision to consolidate.
How many products share each box type today (X axis). 117 of the 204 types (57%) exist for a single product.
The four real constraints
No assignment is accepted unless it meets all of them:
- Dimensional fit of ±10% per axis, with box volume greater than or equal to the product's.
- Maximum headspace (6–10% depending on thickness, capped at 40 mm).
- Compression resistance (ECT) under stacked load.
- Minimum internal volume per product.
The solution in three layers
- 1
1 · Candidate box catalog
For each product I enumerated valid dimension combinations within the ±10% band that maximize boxes per pallet: 955 unique candidates, about 55 compatible options per product.
- 2
2 · MILP with CP-SAT (Google OR-Tools)
Assigning the 427 products is formulated as a mixed-integer linear program that minimizes total packaging plus freight cost. Freight is linear; packaging discount tiers, which reprice the whole volume, are linearized with a standard big-M technique. First solve: +9.80% saving.
- 3
3 · Tier-driven Large Neighborhood Search
The full MILP with the 955 candidates is too large. I identified opportunities to cross a discount tier, built a bounded neighborhood, solved a small model and accepted the change only if total cost dropped. After 5 rounds the heuristic converges at +9.9552%.
- 4
Final verification
Before exporting, an independent checker validates the four constraints row by row: 427 of 427 with no failures.
Box–plant combinations by discount tier
Before, 163 combinations operated in the most expensive tier (under 20 thousand units a year, no discount). The LNS shifts volume toward tiers 4 and 5 — the concrete mechanism behind a large part of the packaging saving.
Box–plant combinations per supplier discount tier. Volume shifts toward tiers 4 and 5 (larger discount).
Where the saving comes from
Annual saving by component (how much each one's cost drops), in millions of dollars.
Pallet utilization, by plant
Utilization improves in all five plants without exception: it's the physical metric that explains, plant by plant, where the freight saving comes from.
The results report
I delivered the analysis as a self-contained HTML report aimed at a non-technical client, with the mathematical detail separated into an annex. These are sections of the report (the report itself is in Spanish).
Identified next steps
The result is within 0.2 percentage points of the best theoretical bound identified. To close that gap:
- Evaluate a 4.5 mm board thickness inside the joint optimization: it gives more headspace margin (8% vs. 6%) and could enable more consolidation.
- Extend the optimizer's search horizon to explore more combinations.
- A box design protocol for new launches, with the same exact-cost logic, so the catalog doesn't fragment again.