Maybe they can just give the customer more direct control. It wouldn't require anything complicated: simply allow me to select any substitutes I would be happy to accept. (Make this optional, and leave the current system as the default.)
If they want to make it easier, they can give me the list of items they would consider as substitutes, and allow me to add/remove items. And they can remember the choices I've made in the past.
Instacart nominally does this, and then the shopper went ahead and gave me bad substitutions anyway. I mentioned in another comment here that you're getting real-time notifications about substitutes while they're shopping (there's no real-time inventory available, so they discover an out-of-stock item when they go to grab it). If you don't answer their substitution question quickly enough, they'll just make a decision (skip, pick the sub you asked for, pick a random similar item).
If they want to make it easier, they can give me the list of items they would consider as substitutes, and allow me to add/remove items. And they can remember the choices I've made in the past.