A non-transitory computer-readable storage medium storing executable computer program instructions, the instructions executable to perform steps of recommending dishes based on a personal food inventory, comprising:
- storing, in a dish database at a personal food inventory system, a plurality of dish records corresponding to dishes, each dish record comprising a plurality of food item identifiers of food items included in the dish;
- storing, in a personal inventory database at the personal food inventory system, a personal food inventory associated with an account for a user of an electronic device, the personal food inventory comprising a plurality of food records, each food record comprising a food item identifier associated with a food item, an inventory quantity of a food item, and information describing the food item, the plurality of food records generated at a food vendor point of sale (POS) device in the form of one or more purchased food lists;
- receiving, from the food vendor POS device and via a computer network, a purchased food list comprising the food item identifier and the quantity of the food item purchased by the user for adding to the personal food inventory;
- updating, by the personal food inventory associated with the account for the user, the personal inventory database with the purchased food list comprising the food item identifier and the quantity of the food item purchased by the user;
- providing to the electronic device an application configured to communicate with the personal food inventory system to access the personal food inventory for the user;
- receiving from the user, via the application, a notification that at least a portion of a food item has been consumed, the notification comprising a food item identifier associated with the food item and a consumption quantity of the food item;
- providing to the user, by the personal food inventory, a notification that the consumption quantity exceeds an inventory quantity associated of the food item;
- storing the consumption quantity in the personal inventory database at the personal food inventory system;
- receiving, via the application, a request from the user for (i) a recommendation for a dish, the dish comprising food items included in the dish;
- and (ii) a criteria to apply to the dish;
- retrieving, from the personal inventory database, food item identifiers from the plurality of food records that correspond to the food items included in the dish;
- determining, by the personal food inventory system, a set of candidate dishes from the dish database based on the retrieved food item identifiers from the personal inventory database that correspond to the food items included in the dish;
- ranking the set of candidate dishes based on the user-provided criteria for the food items associated with the retrieved food item identifiers from the personal inventory database that correspond to food items included in the set of candidate dishes;
- selecting one or more dishes from the set of candidate dishes for display to the user, the selecting based at least in part on the ranking;
- and
- providing by the personal food inventory system to the application on the electronic device an output interface configured to display information describing the selected one or more dishes comprising information describing the absent food item, provided the absent food item is included in the selected one or more dishes.