Instacart is an online grocery delivery service - users can select the products they want at multiple stores or a single store and have them delivered at their home on a per order fee or annual membership fee.
Instacart operates in an environment where they don’t control or know definitively the amount of inventory a store has on hand at any given time.
As a result of their operational environment, in addition to the drive to maximize basket size and customer satisfaction, they will attempt to substitute an equivalent good if the item a user requests is out of stock.
Instacart’s ability to suggest alternatives has gotten progressively better as the number of orders on the platform has increased and as what is presumably their machine learning technology has gotten better at identifying substitute goods.
However, there are still some edge cases where the machine learning algorithms can produce a poor result.
In the below screenshot, I was recently attempting to order Yellow Onions, 5 of them at $0.79 per pound for an approximate amount of $.19 per onion, for a total of $.95.
Instacart suggested a substitute of a 3lb back of onions for $3.99 - seems reasonable right?
The problem is that the algorithm didn’t adjust the quantity, leaving my substitute as 5 * 3lb Onions, which would be 15 pounds of onions, totaling ~$20.
The substitute here is significantly different than what I originally ordered, and had I not been paying attention, I would have ended up with far too many onions!
The quick remedy here is to check whether the quantity in pounds matches the quantity of the substitution.
Another heuristic for this would be to check the overall price of the order by multiplying quantity order * price. If the difference is significant, that is probably a poor substitution regardless if the weights/item specifics match.