I doubt they have it solved, but I also doubt it is so bad that it the software intends for me to get a single USB4 cable in box suitable for a mini-fridge with a single air packing bag.
If I were cording this for amazon, I would start with a known algorithm, something like the skyline texture atlas packing algorithm. Texture atlases are old school ways to send graphics to GPUs and they had to be certain sizes even if what you wanted to draw was much small. Like if you want to draw single letters, for efficiency packing a whole font and related graphics onto a single bitmap and sending it one go was usually more efficient. This has to do with batches once being very expensive and the only way to send stuff over AGP/PCIE to the GPU, I here it is better now but I don't really know.
The skyline algorithm starts by lining up all the biggest textures along one edge, then it works down the size until one edge was full. Then it fills gaps with the largest remaining textures. This sometimes fails because "largest" is fuzzy, both longest single edge and total pixel can lead to quirks so game specific heuristics often need to be used (like creating a point system for "largest" where each item gets 1 point per pixel and 2 points per pixel if one dimension is over X or something). It was called the skyline packer because if you ran it with just colored boxes what it drew often looked like a low res city skyline, if you rotated it or packed along the bottom edge (but you always pack from topleft out because of how RAM and storage are efficiently iterated and prediction hardware, and other details)
Here is a stackexchange post where they discuss "sorting things in scanline order" by which I think they mean height and then they pack the top edge left to right. If they packed bottom first or if you flip/rotate it you might see the skyline effect, if you squint real hard:
https://gamedev.stackexchange.com/questions/2829/texture-pac...
But once that is done for the bottom plane of the box other stuff can be jammed in on top. Also not doing it in... Ruby(?), which is what I think candy Japan used, is likely to help. I like Ruby just fine, but I did a pixel comparisons routine for 1080p screenshots once in it and it took like a minute for one comparison of two images. I wrote a c-extension and that dropped to 1 second. I would guess that modern multithreaded/SIMD C++ or Rust could knock out most Amazon packing sized packing problems exhaustively really fast. Still not a great solution, but 10s per package is likely faster than the human packers can work and I would feel comfortable making such promises to a customer (then hopefully deliver ms length solutions).
And then for bigger problem spaces we can talk Monte Carlo... some other time.