First, let me congratulate you on your journey so far. Appreciate the efforts you guys have put in developing this model.
My understanding - Your Target customers would be People who are busy (Working people, parents, etc...) Since time is of the essence for them, it would be difficult for them even to scan a bill why make them even scan a bill?- (While this should be one of the options you can have in your APP)
Below are few thoughts that you can research on (I am sorry if I am being repetitive and if you have already investigated and eliminated these options)
Customers use Credit cards, Loyalty cards, Mobile Apps (provided by retailers) and online ordering system. (Or Cash Purchases)
If you can partner with the retailers or loyalty card providers, you will get skew level information (What they purchased, etc..) Through this, you can also identify the expiry date of the products and send users the necessary alerts.
You can do the same thing with people who are using Apps or website to order. The problem - Retailers are hesitant to share the sales information -
The Solution that I see is -
1]. Form Strategic Alliances. - This is your best bet
2]. You can have your algorithms run on the retailers' systems. This way they do not have to share the data with you. You can protect your code by providing them with an executable or just by calling it via a Webservice.