Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CartonPilot packing benchmark

The inputs, method and raw results behind the savings figures published on cartonpilot.com. Everything here runs against the public CartonPilot API, so you can reproduce the numbers yourself with a free key rather than taking our word for them.

Results

14 representative ecommerce order profiles, packed against the same 7-box corrugated line-up two ways: a standard first-fit packer as the baseline, and cartonpilot-ultra.

Baseline (first-fit) CartonPilot (cartonpilot-ultra) Change
Parcels 25 14 44% fewer
FedEx Ground, zone 5 $426.65 $269.18 36.9% lower
UPS Ground, zone 5 $429.69 $270.62 37.0% lower
Box material $13.36 $12.26 8.2% lower

The saving comes almost entirely from consolidation, not from choosing slightly smaller boxes. Fewer parcels means fewer minimum charges, and the per-parcel minimum is what dominates a small-parcel invoice.

Note that optimized fill rate is lower than the baseline (45.7% vs 52.3%). That is expected and worth understanding: a packer that puts three items into three snug small boxes scores a great fill rate and a terrible invoice. Fill rate is a vanity metric for this problem.

Reproduce it

git clone https://github.com/cartonpilot/benchmark.git
cd benchmark
CARTONPILOT_API_KEY=sk_your_key node run.mjs

Requires Node 18+ and nothing else - no dependencies. Get a free key at cartonpilot.com/register; the free plan covers this run many times over, and every algorithm is available on every plan, so the baseline and the candidate are both reachable from a free key.

Results are written to results/results.json, including per-scenario rows.

Method

  1. Each of the 14 order profiles is sent to POST /api/v1/shipping-optimize twice - once with options.algorithm: "first-fit", once with options.algorithm: "cartonpilot-ultra". Same boxes, same items, same dimDivisor, same rotation setting.
  2. Billable weight per parcel comes back from the API in shipments[].billing.billableWeight, using DIM divisor 139.
  3. Each parcel is priced at published zone 5 Ground list rates by looking its billable weight up in data/rates-zone5.json.
  4. Totals are summed across all 14 profiles.

What is deliberately excluded

These are list rates only. The comparison excludes fuel surcharges, residential and delivery-area surcharges, additional handling, oversize charges, and negotiated discounts. Those move the absolute dollars, and a shipper with a good contract will see smaller absolute numbers.

They do not much change the direction, because most of them are levied per parcel - so a method that ships fewer parcels avoids more of them, not fewer. The honest caveat runs the other way: if your carrier agreement has unusual weight-break pricing, consolidating into one heavier parcel can be worth less than this benchmark suggests. If you want a rate-aware answer for your own contract, use the lowest-invoice-cost objective with a rate card rather than relying on these figures.

Zone 5 is a mid-range domestic zone, chosen as representative. Shorter zones save less in absolute terms; longer zones save more.

Files

Path What it is
data/boxes.json The 7-box corrugated line-up, with landed material cost
data/scenarios.json The 14 order profiles, fully expanded
data/rates-zone5.json Zone 5 Ground list rates by billable weight, 1-150 lbs
run.mjs The runner - calls the public API and prices the outcome
results/results.json Latest run, including per-scenario detail

Rate sources

  • FedEx Standard List Rates, effective Jan 5, 2026
  • UPS Ground Daily Rates (UPS Rate and Service Guide), effective Dec 27, 2025

Caveats worth stating plainly

  • This is a synthetic benchmark on representative profiles, not a customer result. It shows what the solver does on a realistic box catalog and basket mix; it is not a promise about your catalog and your baskets.
  • The baseline is first-fit, which is a fair stand-in for typical "pick the first box it fits in" logic. It is not a strawman one-box-per-item baseline, which would produce far more flattering numbers.
  • Your own numbers depend on your box line-up as much as on the solver. If you stock three box sizes, there is less for any algorithm to find.

To see this on your own orders, run the free audit at cartonpilot.com/audit - no signup, no code.

License

MIT. See LICENSE.

About

Inputs, method and results behind the packing savings figures published on cartonpilot.com. Reproducible against the public API with a free key.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages