We built a 144 cm margarine tower. Then we fixed it.
We gave StoaPack 80 cases of margarine and a standard 120 × 100 cm pallet.
It built a tower. 144 cm tall, on 45% of the pallet. Every case was supported from below, so by the rules we’d written, the plan was valid. It was also the kind of pallet a forklift driver looks at for a long moment before going to find a supervisor.
StoaPack was built for parcels: pick the right box, pick the right warehouse, place every item. A parcel is a box you fill. A pallet is not. A pallet is built in layers, and our engine didn’t know that yet.
So we taught it. Two releases, two days.
Problem one: cases on their side
Margarine tubs ship in cases that say “this side up” for a reason. In our first margarine run, StoaPack laid 16 of 80 cases on their side, because tipping them made the numbers fit.
Keep upright (live 18 October): mark an item "orientation": "upright" and StoaPack only turns it on its base, never on its side. If a case only fits by tipping it, StoaPack reports it as not fitting instead of quietly tipping it.
Same 80 cases afterwards: 0 tipped.
Problem two: towers
Upright fixed the tipping. It didn’t fix the tower.
Pallet mode (live 19 October) builds pallets the way a warehouse team does:
- Full, flat layers of one product, with the most cases the pallet allows in each layer
- Heaviest layers at the bottom
- Leftover cases as one block, centered on top
- Mixed pallets of several products, still in layers
- Up to 1,000 cases in a single request
You turn it on by marking your pallet as a pallet: "kind": "pallet" on the box. Existing requests don’t change.
What it measured
We ran it in production against typical retail case sizes (example sizes, not anyone’s real spec sheet):
| Load | Before | Pallet mode |
|---|---|---|
| Margarine, 80 cases | 144 cm tower on 45% of the pallet | 72 cm: 5 full layers of 15 and 5 centered on top |
| Vegetable oil, 12 × 1 L cases | 16 per layer, 80 per pallet | 17 per layer, 85 per pallet (91% of the space, 986 kg) |
| Bar soap, 80 cases | 150 cm in uneven layers of 6 to 9 | 120 cm: 8 flat layers of 10 |
| Mixed: 30 oil, 30 margarine, 20 soap | Valid, but irregular | One 110 cm pallet, oil at the bottom, every case at least 83% supported |
The oil result is the one we like most. Seventeen is the most of that case that physically fits in one layer of that pallet. It works by turning one row sideways, which is easy to miss when you’re building patterns by hand.

One more case per layer is five more cases per pallet. Across a year of shipments, that’s a lot of pallets you don’t move.
The question manufacturers actually ask
“If we switch to a bigger case, do we get more product on a pallet?”
Not necessarily. We ran the same 1 L bottles in two case formats:
| 12 per case | 15 per case | |
|---|---|---|
| Cases per layer | 17 | 13 |
| Cases per pallet | 85 | 65 |
| Bottles per pallet | 1,020 | 975 |
The smaller case wins by 45 bottles a pallet, about 4% fewer pallets, because its footprint tiles the pallet better. You can run that comparison for any candidate format before anything changes on a filling line.
Rules in plain words
Some rules aren’t about geometry. Write them the way you’d say them:
“Never put soap on the same pallet as food. Oil and margarine are food.”
StoaPack reads that in about 0.6 seconds, turns it into a rule (soap apart from oil and margarine) and puts the soap on its own pallet. If you write a rule it can’t enforce, it refuses the request instead of returning a plan that ignores you.
How we tested it (including the parts we got wrong)
We didn’t take our own word for it.
- An independent checker re-verifies every plan from the raw case positions: no overlaps, weight limits, support under every case, upright cases upright.
- 287 earlier requests replayed against the new version came back identical, apart from the one change we intended. If you already use StoaPack, nothing moved.
Two things went wrong along the way, and both are instructive.
Our own spec was wrong. We wrote that every case in a full layer must be 100% supported. That’s only possible when a layer sits on the same product. Different products don’t line up, so a margarine layer on an oil layer can’t be fully supported (the best is 83%, still comfortably above our 75% minimum). The first build followed our spec faithfully and used a second pallet for a load that fit on one. We fixed the rule, not the engine.
Leftovers opened extra pallets. In 300 generated orders, 9 small mixed orders got an extra pallet because each product left a partial layer and only one could go on top. Each of those fit on one pallet in reality, so we fixed it before release. Now all 9 use one.
What it doesn’t do yet
- Full truckloads in one job. Today you plan a truck in several requests. Batch jobs are in development.
- Stack-weight limits for crushable cases. Next on the list.
- Load stability in transit. StoaPack checks support from below. It doesn’t model a truck taking a corner.
- A guarantee of the absolute fewest pallets. The search is bounded so it answers in about a second. In our tests it matched the best possible layer for every case size we tried, but we’d rather tell you the search is bounded than promise you perfection.
Try it
- Add
"kind": "pallet"to your pallet and send your cases. - A pallet request counts as one request, whether it has 8 cases or 1,000.
- 50 free calls, no card.
Read more at StoaPack, or get in touch if you want to run your own case formats through it. We’ll happily talk about pallets for longer than is strictly reasonable.
Disclaimer
This content is for informational purposes only. Individual results may vary based on your specific circumstances.