We do some on-the-fly optimizations as well (like compiling into CUDA graphs or fusing together calls) which ends up resulting (for some inference engines) faster token throughput too.
Used to do groceries with a regular bike and two ortlieb panniers (you can leave the top open to use their full capacity)
For extra space a front "Porteur style" rack is nice (you can carry a pizza or takeout), or a rear rack with a set of lower mounting rails allows carrying stuff ontop of your rack without interfering as much with the panniers.
some people also really like the topeak rail system, which has for example a little wheely cart you can pull around the store with you, the "Topeak TrolleyTote"
Over the summer I bought a used (not electric) bakfiets on craigslist (and only recently did a mid-drive electric conversion) it's been really great for doing more with a bike because it doesn't take as much "how am I going to carry this home" planning. I've picked up groceries, dog food, filing cabinets, my wife, my dog, friends, lumber, tools, etc. It's quite an amazing bike format.
Not OP but I have essentially the same bike (Packa) with kid bars on the back. I throw a big Home Depot plastic storage crate into the bars, then 4 bags of groceries go into the crate. 6+ if you stack and bungee them. Plus another bag in the front basket.
If the kids want to go to the store then the crate goes on the bike trailer.
I don't have a cargo bike, but you can fit a surprising amount of crap in a milk crate strapped to a bike rack. Especially if you have a pannier on the side (they even make some grocery tote bag style panniers)
We don't run any batch jobs - Retake streams changes in real time via CDC (change data capture). The only batch job you would need to run is to populate an index when it's first created.