CA3050511C - Future order throttling - Google Patents

Future order throttling Download PDF

Info

Publication number
CA3050511C
CA3050511C CA3050511A CA3050511A CA3050511C CA 3050511 C CA3050511 C CA 3050511C CA 3050511 A CA3050511 A CA 3050511A CA 3050511 A CA3050511 A CA 3050511A CA 3050511 C CA3050511 C CA 3050511C
Authority
CA
Canada
Prior art keywords
order
computer system
fulfillment
provider
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CA3050511A
Other languages
French (fr)
Other versions
CA3050511A1 (en
Inventor
Leona Seaward
Jonathan HAYNES
John THIRLAWAY
Thomas Williams
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Accenture Global Services Ltd
Original Assignee
Accenture Global Services Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/727,519 external-priority patent/US10007947B2/en
Priority claimed from US14/827,153 external-priority patent/US20160353235A1/en
Priority claimed from US14/828,818 external-priority patent/US20160350837A1/en
Application filed by Accenture Global Services Ltd filed Critical Accenture Global Services Ltd
Publication of CA3050511A1 publication Critical patent/CA3050511A1/en
Application granted granted Critical
Publication of CA3050511C publication Critical patent/CA3050511C/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for managing orders. The methods include actions of tracking performance of a fulfillment center in fulfilling orders for items at the fulfillment center, storing historical preparation information that describes historical performance of the fulfillment center, and receiving an order for an item to be fulfilled by the fulfillment center for a fulfillment time. Additional actions include obtaining a portion of the stored historical preparation information that is relevant to fulfillment of the item by the fulfillment time, obtaining current order information that describes other orders to be fulfilled at the fulfillment center, determining whether the fulfillment center can fulfill the order by the fulfillment time based at least on the portion of the stored historical preparation information and the current order information, and providing an indication to a user device that the order cannot be fulfilled.

Description

FUTURE ORDER THROTTLING
[0001]
TECHNICAL FIELD
[0002] This disclosure generally relates to a system architecture.
BACKGROUND
[0003] System architectures may be used to manage orders. In some instances, system architectures may manage orders placed through the Internet.
SUMMARY
[0004] In general, an aspect of the subject matter described in this specification may involve a process for managing orders. The operations include tracking, over time and at a server, performance of a fulfillment center in fulfilling orders for items at the fulfillment center and based on the tracking, storing, in an electronic storage accessible to the server, historical preparation information that describes historical performance of the fulfillment center in fulfilling orders for items at the fulfillment center. Additional actions include receiving, at the server and from a user device associated with a user, an order for an item to be fulfilled by the fulfillment center for a fulfillment time, where the order indicates the item and the fulfillment center fulfills the order by enabling an employee at the fulfillment center to prepare the item for the user and obtaining a portion of the stored historical preparation information for the fulfillment center that describes historical performance of the fulfillment center that is relevant to fulfillment of the item by the fulfillment time. Further actions include obtaining current order information that describes other orders to be fulfilled at the fulfillment center, determining whether the fulfillment center can fulfill the order by the fulfillment time based at least on the portion of the stored historical preparation information for the fulfillment center and the current order information, and in response to determining that the fulfillment center cannot fulfill the order based at least on the portion of the stored historical preparation information for the fulfillment center and the current order information, providing an indication to the user device that the order cannot be fulfilled.
[0005] In another aspect, a method may include one or more of the operations described above. In yet another aspect, a computer-readable storage medium may be operable to cause a processor to perform one or more of the operations described above.
[0006] Implementations may include one or more of the following features. For example, receiving, at the server and from a user device associated with a user, an order for an item to be fulfilled by the fulfillment center for a fulfillment time, where the order indicates the item and the fulfillment center fulfills the order by enabling an employee at the fulfillment center to prepare the item for the user includes receiving an order that indicates the item, the fulfillment center to fulfill the order, and the fulfillment time.
[0007] In certain aspects, receiving, at the server and from a user device associated with a user, an order for an item to be fulfilled by the fulfillment center for a fulfillment time, where the order indicates the item and the fulfillment center fulfills the order by enabling an employee at the fulfillment center to prepare the item for the user includes receiving an order that indicates the item and a location of the user, determining the fulfillment time for the order based at least on the location of the user, and determining the fulfillment center for the order based at least on the location of the user.
8 PCT/1B2016/052145 [0008] In some aspects, obtaining a portion of the stored historical preparation information for the fulfillment center that describes historical performance of the fulfillment center that is relevant to fulfillment of the item by the fulfillment time includes obtaining a portion of the stored historical preparation information for the fulfillment center that describes historical production rates of the item at the fulfillment center.
[0009] In some implementations, obtaining a portion of the stored historical preparation information for the fulfillment center that describes historical performance of the fulfillment center that is relevant to fulfillment of the item by the fulfillment time includes determining a particular employee is working at the fulfillment time and in response to determining the particular employee is working at the fulfillment time, obtaining a portion of the stored historical preparation information for the fulfillment center that describes historical production rates of the item at the fulfillment center by the particular employee.
[0010] In certain aspects, obtaining current order information that describes other orders to be fulfilled at the fulfillment center includes identifying orders for the items at the fulfillment time.
[0011] In some aspects, obtaining current order information that describes other orders to be fulfilled at the fulfillment center includes identifying orders for items at the fulfillment time whose fulfillment delays the fulfillment of the order for the item.
[0012] In some implementations, determining whether the fulfillment center can fulfill the order by the fulfillment time based at least on the portion of the stored historical preparation information for the fulfillment center and the current order information includes generating a production rate estimate for the item based at least on the portion of the stored historical preparation information for the fulfillment center, determining whether a demand for the item indicated by the current order information is less than the production rate estimate for the item, and in response to determining that the demand for the item indicated by the current order information is not less than the production rate estimate for the item, determining that the fulfillment center cannot fulfill the order by the fulfillment time.
[0013] In certain aspects, determining whether the fulfillment center can fulfill the order by the fulfillment time based at least on the portion of the stored historical preparation information for the fulfillment center and the current order information includes determining a contingency amount for contingencies in fulfilling orders and determining whether the fulfillment center can fulfill the order by the fulfillment time based at least on the portion of the stored historical preparation information for the fulfillment center, the current order information, and the contingency amount.
[0014] In general, another aspect of the subject matter described in this specification may involve a process for managing orders. The operations include tracking, over time and at a server, performance of a fulfillment center in fulfilling orders for items at the fulfillment center and user responses to alternate suggestions and based on the tracking, storing, in an electronic storage accessible to the server, historical preparation information that describes historical performance of the fulfillment center in fulfilling orders for items at the fulfillment center. Additional actions include based on the tracking, storing, in the electronic storage accessible to the server, historical user information that indicates a likelihood that a user will accept an alternate suggestion and receiving, at the server and from a user device associated with the user, an order for an item to be fulfilled by the fulfillment center for a fulfillment time, where the order indicates the item and the fulfillment center fulfills the order by enabling an employee at the fulfillment center to prepare the item for the user. Further actions include obtaining a portion of the stored historical preparation information for the fulfillment center that describes historical performance of the fulfillment center that is relevant to fulfillment of the item by the fulfillment time and obtaining current order information that describes other orders to be fulfilled at the fulfillment center. Additional actions include determining, to provide an alternate suggestion based at least on a portion of the stored historical preparation information and the current order information, in response to determining to provide the alternate suggestion, identifying at least one of an alternate item, an alternate fulfillment center, or an alternate time to include in the alternate suggestion based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion, generating the alternate suggestion based on the identification of at least one of the alternate item, the alternate fulfillment center, or the alternate time to include in the alternate suggestion, and providing the alternate suggestion to the user device.
[0015] In another aspect, a method may include one or more of the operations described above. In yet another aspect, a computer-readable storage medium may be operable to cause a processor to perform one or more of the operations described above.
[0016] Implementations may include one or more of the following features. For example, determining, to provide an alternate suggestion based at least on a portion of the stored historical preparation information and the current order information includes determining that the order cannot be fulfilled by the fulfillment center for the fulfillment time.
[0017] In certain aspects, determining, to provide an alternate suggestion based at least on a portion of the stored historical preparation information and the current order information includes determining that the order can be fulfilled by the fulfillment center for the fulfillment time but another order is likely to be placed for the item for the fulfillment time.
[0018] In some aspects, determining, to provide an alternate suggestion based at least on a portion of the stored historical preparation information and the current order information includes determining that the alternate suggestion is likely to result in a better business value for an entity providing the server.
[0019] In some implementations, identifying at least one of an alternate item, an alternate fulfillment center, or an alternate time to include in the alternate suggestion based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion includes determining that the alternate suggestion can be fulfilled.
[0020] In certain aspects, identifying at least one of an alternate item, an alternate fulfillment center, or an alternate time to indude in the alternate suggestion based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion includes determining that the user is likely to be interested in the alternate item based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion and in response to determining that the user is likely to be interested in the alternate item based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion, identifying the alternate item.
[0021] In some aspects, identifying at least one of an alternate item, an alternate fulfillment center, or an alternate time to include in the alternate suggestion based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion includes determining a likely route for the user based at least on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion, determining that the alternate fulfillment center is accessible along the likely route, and in response to determining that the alternate fulfillment center is accessible along the likely route, identifying the alternate fulfillment center.
[0022] In some implementations, identifying at least one of an alternate item, an alternate fulfillment center, or an alternate time to include in the alternate suggestion based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion includes determining an earliest time after the fulfillment time that the order can be fulfilled, determining whether the earliest time satisfies a time threshold with the fulfillment time, and in response to determining that the earliest time satisfies the time threshold with the fulfillment time, identifying the earliest time as the alternate time.
[0023] In certain aspects, generating the alternate suggestion based on the identification of at least one of the alternate item, the alternate fulfillment center, or the alternate time to include in the alternate suggestion includes determining a discount to include in the alternate suggestion and including the discount in the alternate suggestion.
[0024] In some aspects, additional actions include reserving an order for the alternate suggestion for a predetermined time before receiving a response from the user device to the alternate suggestion.
[0025] In some implementations, generating the alternate suggestion based on the identification of at least one of the alternate item, the alternate fulfillment center, or the alternate time to include in the alternate suggestion includes generating, for each of multiple candidate alternate suggestions, outcomes scores that each indicate an estimated value of the candidate alternate suggestion and selecting a predetermined number of the candidate alternate suggestions based at least on the outcome scores.
[0026] In certain aspects, identifying at least one of an alternate item, an alternate fulfillment center, or an alternate time to include in the alternate suggestion based on the stored historical user information that indicates a likelihood that the user will accept the alternate suggestion is further based at least on historical performance of the alternate fulfillment center, current orders for the alternate fulfillment center, historical performance for the alternate item, current orders for the alternate items, or current orders for the alternate time.
[0027] In general, another aspect describes generating and providing order recommendations to mobile computing devices based on a variety of factors, such as the location of the mobile computing device. Order recommendations can be determined and provided on mobile computing devices without users first initiating or otherwise requesting the order recommendations_ For example, a user commuting to work in the morning can receive a notification (e.g., push notification) on his/her mobile computing device suggesting the user place an order for coffee at a coffee shop that is on the users way to work. Such a notification can be determined for the user based on a variety of factors, such as the user's current location (e.g., location along his/her commute to work), the location of the coffee shop (e.g., located along the users route), the time of day (e.g., morning), and/or the user's order history (e.g., frequently ordering coffee in the morning, frequently ordering from the coffee shop).
[0028] In one implementation, a computer-implemented method includes receiving, at a computer system, location information that identifies, at least, a current location of a mobile computing device that is associated with a user;
accessing, by the computer system, order history information for the user, wherein the order history information identifies, at least, (i) previous food orders that were placed by the user, (ii) providers that fulfilled the previous orders, and (iii) items that were included in the previous orders; identifying, by the computer system, candidate providers based on the current location of the mobile computing device; determining, by the computer system, one or more confidence values that indicate extents to which the user is likely to be interested in ordering one or more of food items from one or more of the candidate providers, the one or more confidence values being determined based, at least in part, on (i) the current location of the mobile computing device, (ii) the order history information, and (iii) the candidate providers; selecting, by the computer system, a food suggestion to be fulfilled by a particular candidate provider and provided to the user based, at least in part, on the one or more confidence values; and providing, by the computer system and to the mobile computing device, a notification of the food suggestion that suggests the user place an order with the particular candidate provider.
[0029] Such a computer-implemented method can optionally include one or more of the following features. The computer-implemented method can further indude receiving, at the computer system and from the mobile computing device, a request to place the order with the particular candidate provider in response to the notification; and initiating, by the computer system, fulfillment of the order by the particular candidate provider, wherein the initiating causes the order to be provided to the particular candidate provider. The computer-implemented method can further include providing, by the computer system and to the mobile computing device, another notification confirming that the order has been received and is being fulfilled by the particular candidate provider. The computer-implemented method can further include receiving, at the computer system, information indicating that the order has been fulfilled and is available for pickup at the particular candidate provider; and providing, by the computer system and to the mobile computing device, another notification indicating that the order has been fulfilled and is available for pickup at the particular candidate provider.
[0030] The location information can further identify a route along which the mobile computing device is travelling, and the computer-implemented method can further include determining, by the computer system, a destination location to which the mobile computing device is likely travelling based, at least in part, on the current location of the mobile computing device and the route. The candidate providers can additionally be identified as being located within a threshold distance of either the destination location or points along portions of the route that have not yet been reached by the mobile computing device. The location information can further identify a current elevation of the mobile computing device, and the candidate providers can be identified as being within a threshold distance of the mobile computing device at the current elevation and the current location.
[0031] The computer-implemented method can further include determining, by the computer system, a current time of day. The order history information can further identify previous times at which the previous orders that were placed by the user, and the one or more confidence values can be determined further based on a comparison of the current time of day and the previous times. The computer-implemented method can further include accessing, by the computer system, preference information that identifies one or more preferences for the user. The order history information can further indude information that identifies whether the previous food orders are included in the one or more preferences, and the one or more confidence values can be determined further based on a comparison of the preference information and the previous food order. The computer-implemented method can further include identifying, by the computer system, one or more current external factors for the user. The order history information can further identify previous external factors when the previous orders that were placed by the user, and the one or more confidence values can be determined further based on a comparison of the current external factors and the previous external factors.
The current external factors and the previous external factors can include one or more of:
weather, traffic, the users schedule, and the users activity level as indicated by data collected from one or more activity tracking devices.
[0032] The computer-implemented method can further include identifying, by the computer system, a current speed at which the mobile computing device is travelling. The candidate providers can be further identified based on the current speed. The particular candidate provider can be one of the providers that fulfilled the previous orders. The particular candidate provider can be different from each of the providers that fulfilled the previous orders. The particular candidate provider can be part of a chain of providers, and one or more other providers that are also part of the chain of providers are included in the providers that fulfilled the previous orders.
The order history information for the user can further identify previous orders that the user placed but did not pick up. The order history information for the user can further identify previously declined order suggestions that included notifications with order suggestions sent to the mobile computing device and declined by the user, and previously accepted order suggestions that included notifications with order suggestions sent to the mobile computing device and accepted by the user. The notification can be a push notification.
[0033] In another implementation, a computer-implemented method includes providing, by a mobile computing device and to a computer system, location information that identifies a current location of the mobile computing device; receiving, at the mobile computing device, a push notification that includes (i) a suggested order with the particular candidate provider and (ii) a selectable feature for placing the suggested order, wherein the particular candidate provider was identified based, at least in part, on the current location of the mobile computing device, wherein the push notification is not responsive to a request from the mobile computing device for an order suggestion related to the current location of the mobile computing device; outputting, by the mobile computing device, the push notification; receiving, at the mobile computing device, user input including a selection of the selectable feature for placing the suggested order;
providing, by the mobile computing device and to the computer system, a request to place the suggested order in response to receiving the selection of the selectable feature; and receiving, at the mobile computing device, another notification that the order has been placed with the particular candidate provider.
[0034] Such a computer-implemented method can optionally include one or more of the following features. The computer-implemented method can further include determining, by the mobile computing device, the current location of the mobile computing device; and determining, by the mobile computing device, a current elevation of the mobile computing device. The location information can further identify the current elevation of the mobile computing device.
[0035] In another implementation, a computer system includes one or more interfaces that are programmed to receive location information that identifies current locations of mobile computing devices that are associated with users; a database that is programmed to store order history information for the users, wherein the order history information identifies, at least, (i) previous food orders that were placed by the users, (ii) providers that fulfilled the previous orders, and (iii) items that were included in the previous orders; a provider identification component that is programmed to identify candidate providers based on the current locations of the mobile computing devices; an order prediction module that is programmed to (i) determine one or more confidence values that indicate extents to which the users are likely to be interested in ordering one or more of food items from one or more of the candidate providers, and (ii) select food suggestions to be fulfilled by particular candidate providers to suggest to the users based, at least in part, on the one or more confidence values, wherein the one or more confidence values are determined based, at least in part, on (i) the current locations of the mobile computing devices, (ii) the order history information, and (iii) the candidate providers; and a messaging subsystem that is programmed to provide notifications to the mobile computing devices that suggest the users place orders with the particular candidate providers.
[0036] Certain implementations may provide one or more advantages. For example, orders can be suggested to users without the users requesting the suggestions. For example, a user busy getting ready for work may not think to place an advance order for a food item, such as coffee, with a nearby coffee shop. By suggesting orders to users in advance of the user's requesting the suggestions, users can be prompted to place orders at appropriate times to create more efficiencies and streamline their time.
[0037] In another example, by analyzing previous order and travel histories for users, order suggestions can be tailored so that they are provided when there is a high likelihood that they will be relevant. High confidence thresholds can be used to ensure that users are not flooded with order suggestions, but instead are provided with a discrete number of order suggestions at appropriate times and/or in unobtrusive manners.
[0038] In general, another aspect describes generating intelligent order queueing information to be used by providers, such as restaurants that are processing food orders. Such intelligent order queueing information can include information that takes into account estimated times of arrival for customers, such as customers who will be picking-up the food at a provider's location, as well as the time for fulfilling items included in food orders. For example, a computer system can determine an estimated time of arrival for a customer to arrive at a pizza restaurant (example provider) to pick up a pizza (example food order) as well as the time it takes the pizza restaurant to make the pizza (fulfillment time), and can use that information to provide the pizza restaurant with information, such as timing information, that it can use to determine when to begin preparing the pizza so that it is ready when the customer arrives at the restaurant.
[0039] In one implementation, a computer-implemented method includes receiving, at a computer system and from a mobile computing device, a food order that specifies one or more items to be (i) fulfilled by a particular provider and (ii) picked-up by a user of the mobile computing device; determining, by the computer system, a current location of the mobile computing device; identifying, by the computer system, a location of the particular provider; determining, by the computer system, an estimated time of arrival for the user to travel from the current location of the mobile computing device to the location of the particular provider; identifying, by the computer system, one or more fulfillment time periods for the food order, the one or more fulfillment time periods corresponding to one or more lengths of time for the one or more items to be fulfilled as part of the food order; determining, by the computer system and based, at least in part, on (i) the estimated time of arrival and (ii) the one or more fulfillment time periods, one or more future times at which the particular provider is to begin preparing the one or more items so that the food order will be fulfilled and available for pick-up within a threshold period of time of the user arriving at the particular provider's location;
generating, by the computer system, food order instructions for the particular provider to prepare the food order based, at least in part, on (i) the food order and (ii) the one or more future times; and providing, by the computer system, the food order instructions to a provider computer system associated with the particular provider.
[0040] Such a computer-implemented method can optionally include one or more of the following features. The computer-implemented method can further include selecting, by the computer system, an estimated route that the user will use to travel from the current location of mobile computing device to the location of the particular provider. The estimated time of arrival can be determined based, at least in part, on the estimated route. The computer-implemented method can further include identifying, by the computer system, one or more transit delays along the estimated route. The estimated time of arrival can be determined further based on the one or more transit delays. The computer-implemented method can further include identifying, by the computer system, historical travel times for travelling along some or all of the estimated route. The estimated time of arrival can be determined further based on the historical travel times. The historical travel times can include historical travel times for the user travelling along some or all of the estimated route. The computer-implemented method can further include identifying, by the computer system, a plurality of candidate routes for the user to travel from the current location of the mobile computing device to the location of the particular provider. The estimated route can be selected from among the plurality of candidate routes based on historical travel patterns of the user.
[0041] The computer-implemented method can further include receiving, at the computer system, an updated location of the mobile computing device;
determining, by the computer system, an updated time of arrival for the user at the location of the particular provider based, at least in part, on the updated location; and providing, by the computer system, updated information that identifies the updated time of arrival for the user to the provider computer system associated with the particular provider.
The computer-implemented method can further include determining, by the computer system, whether the updated time of arrival for user to arrive at the particular provider's location has deviated from the estimated time of arrival by more than a threshold amount of time. The updated information can be provided to the provider computer system in response to determining that the updated time of arrival has deviated from the estimated time of arrival by more than the threshold amount of time. The computer-implemented method can further indude determining, by the computer system, whether to suggest another provider fulfill the food order based, at least in part, on the updated location of the mobile computing device and the updated time of arrival at the location of the particular provider; and selecting, by the computer system in response to determining to suggest another provider, an alternate provider for the food order based, at least in part, on (i) a location of the alternate provider, (ii) the updated location of the mobile computing device, and (iii) fulfillment services provided by the alternate provider or an affiliation between the alternate provider and the particular provider.
The updated information can include information that identifies the alternate provider and provides an option to change fulfillment of the food order from the particular provider to the alternate provider.
[0042] The computer-implemented method can further include receiving, at the computer system and from the mobile computing device, a request to change fulfillment of the food order to the alternate provider; providing, by the computer system and to the provider computer system associated with the particular provider, instructions to cancel fulfillment of the food order by the particular provider; and providing, by the computer system and to another provider computer system associated with the alternate provider, information for the food order. The computer-implemented method can further include determining, by the computer system and based on the updated time of arrival, one or more updated future times at which the particular provider is to begin preparing the one or more items so that the food order will be fulfilled and available for pick-up within a threshold period of time of the updated time of arrival; and generating updated food order instructions for the particular provider to prepare the food order based, at least in part, on (i) the food order and (ii) the one or more updated future times. The updated food order can be included in the updated information that is provided to the provider computer system.
[0043] The computer-implemented method can further include determining, by the computer system, whether fulfillment of the food order has already begun based, at least in part, on (i) a current time when the updated location of the mobile computing device is received and (ii) the one or more future times at which the particular provider is to begin preparing the food order; and providing, by the computer system and in response to determining that fulfillment of the food order has already begun, a notification to the mobile computing device that indicates the food order has already begun being fulfilled and an estimated time when the food order will be available. The computer-implemented method can further include determining, by the computer system, whether fulfillment of the food order has already begun based, at least in part, on (i) a current time when the updated location of the mobile computing device is received and (ii) the one or more future times at which the particular provider is to begin preparing the food order; and providing, by the computer system and in response to determining that fulfillment of the food order has not yet begun, instructions to the mobile computing device output one or more selectable features for the user to modify or cancel the food order. The computer-implemented method can further include receiving, at the computer system and from the mobile computing device, one or more modifications to the food order; determining, by the computer system, one or more modified future times for the particular provider to being fulfilling the food order based, at least in part, on the one or more modifications to the food order and the future times;
and providing, by the computer system and to the provider computer system, information that identifies one or more modification to the food order and the one or more modified future times.
[0044] The computer-implemented method can further include accessing, by the computer system, current orders that are pending for fulfillment with the particular provider. The one or more future times can be determined further based on the current orders.
[0045] In another implementation, a computer-implemented method includes outputting, by the mobile computing device, a user interface for placing orders with one or more providers; receiving, through the user interface, input that specifies a food order to be placed with a particular provider, wherein the food order includes one or more items and specifies that a user associated with the mobile computing device will pick-up the food order at the particular provider's location; providing, by the mobile computing device and to a computer system, order information that describes the food order and location information that identifies a current location of the mobile computing device, wherein the computer system is programmed to (i) determine an estimated time when the food order will be available for pick-up based, at least in part, on an estimated time of arrival for the user to travel to the particular provider's location, and (ii) provide the food order to a provider computer system that is associated with the particular provider;
receiving, at the mobile computing device and from the computer system, information that identifies, at least, the estimated time when the food order will be available for pick-up; and outputting, by the mobile computing device and through the user interface, the estimated time when the food order will be available for pick-up.
[0046] Such a computer-implemented method can optionally include one or more of the following features. The computer-implemented method can further include providing, by the mobile computing device and to the computer system, location updates as the mobile computing device travels with the user to the particular provider's location; receiving, by the mobile computing device and from the computer system, status information for pick-up of the food order; and outputting, by the mobile computing device and through the user interface, one or more user interface features based on the status information. The status information can indude information indicating that, as a result of a route being travelled by the user to the particular provider's location, the estimated time of arrival has deviated by at least a threshold amount of time.
The one or more user interface features can be selected based on the estimated time of arrival having deviated by at least the threshold amount of time. The one or more user interface features can include selectable features for modifying or cancelling the food order. The computer-implemented method can further include receiving, through at least a portion of the user interface features, input instructing the food order to be modified or cancelled; and providing, by the mobile computing device and to the computer system, instructions to modify or cancel the food order based on the user input.
[0047] In another implementation, a computer system can include an interface that is programmed to (i) receive, from mobile computing devices, food orders that specify one or more items to be fulfilled by particular providers and picked-up by users of the mobile computing devices, and (ii) provide food order instructions to provider computer systems associated with the particular providers; a location module that is programmed to (i) determine current locations of the mobile computing devices and (ii) identify locations of the particular providers; an arrival estimation module that is programmed to determine estimated times of arrival for the users to travel from the current locations of the mobile computing devices to the locations of the particular providers; and a fulfillment planning subsystem that is programmed to (i) identify, for the food orders, fulfillment time periods that correspond to lengths of time for the items to be fulfilled as part of the food orders, (ii) determine future times at which the particular providers are to begin preparing the items so that the food orders will be fulfilled and available for pick-up within a threshold period of time of the users arriving at the particular providers' locations, and (iii) generate food order instructions for the particular providers based, at least in part, on the food orders and the future times.
The futures times can be determined based, at least in part, on the estimated times of arrival and the fulfillment time periods.
[0047a] In one aspect, there is provided a computer-implemented method comprising: receiving, at a computer system and from a mobile computing device, a food order that specifies one or more items to be (i) fulfilled by a particular provider and (ii) picked-up by a user of the mobile computing device; determining, by the computer system, an estimated time of arrival for the user to travel from a current location of the mobile computing device to a location of the particular provider;
determining, by the computer system, one or more fulfillment time periods for the food order, each of the one or more fulfillment time periods corresponding to a length of time to fulfill a respective item that is included in the food order, wherein determining a fulfillment time period includes: determining a base preparation time to prepare the respective item included in the food order; and modifying the base preparation time based on factors to determine the fulfillment time for the respective item, wherein the factors include a historical order fulfillment time, a historical staffing level at the particular provider, and at least one subsequent additional order that the particular provider expects to receive, in the future, within a threshold amount of time;

determining, by the computer system and based, at least in part, on (i) the estimated time of arrival and (ii) the one or more fulfillment time periods, one or more future times at which the particular provider is to begin preparing the one or more items so that the food order will be fulfilled and available for pick-up within a threshold period of time of the user arriving at the particular provider's location; generating, by the computer system, food order instructions for the particular provider to prepare the food order based, at least in part, on (i) the food order and (ii) the one or more future times;
communicating, by the computer system, the food order instructions to a provider computer system associated with the particular provider to cause the provider computer system to: i) place the one or more items of the food order in at least one queue of a plurality of queues, in a position in the at least one queue that is according Date Recue/Date Received 2021-05-28 to the one or more future times and the one or more fulfillment time periods, wherein at least one of the one or more items is placed, in the at least one queue, ahead of at least one other item for a different food order having a later fulfillment time than the at least one item; and ii) display the food order instructions on a display device of the provider computer system, wherein each of the plurality of queues corresponds to a respective different preparation station that is used for item preparation at the particular provider; receiving, at the computer system, an updated location of the mobile computing device; determining, by the computer system, an updated time of arrival for the user at the location of the particular provider based, at least in part, on the updated location; determining, by the computer system, whether the updated time of arrival for user to arrive at the particular provider' s location has deviated from the estimated time of arrival by more than a threshold amount of time; and providing, by the computer system and in response to determining that the updated time of arrival has deviated from the estimated time of arrival by more than the threshold amount of time, updated information that identifies the updated time of arrival for the user to the provider computer system associated with the particular provider.
[0047b] In another aspect, there is provided a computer-implemented method comprising: outputting, by the mobile computing device, a user interface for placing orders with one or more providers; receiving, through the user interface, input that specifies a food order to be placed with a particular provider, wherein the food order includes one or more items and specifies that a user associated with the mobile computing device will pick-up the food order at the particular provider's location;
providing, by the mobile computing device and to a computer system, order information that describes the food order and location information that identifies a current location of the mobile computing device, wherein the computer system is programmed to (i) determine an estimated time when the food order will be available for pick-up based, at least in part, on an estimated time of arrival for the user to travel to the particular provider's location, the estimated time further based on one or more fulfillment time periods each indicating a length of time to fulfill a respective item included in the food order, and (ii) provide the food order to a provider computer system that is associated with the particular provider, wherein the provider 17a Date Recue/Date Received 2021-05-28 computer system is programmed to: i) place the one or more items of the food order in at least one queue of a plurality of queues, in a position in the at least one queue that is according to the one or more future times and the one or more fulfillment time periods, wherein at least one of the one or more items is placed, in the at least one queue, ahead of at least one other item for a different food order having a later fulfillment time than the at least one item; and ii) display the food order instructions on a display device of the provider computer system, wherein each of the plurality of queues corresponds to a respective different preparation station that is used for item preparation at the particular provider, and wherein determining a fulfillment time period includes: determining a base preparation time to prepare a respective item included in the food order; and modifying the base preparation time based on factors to determine the fulfillment time for the respective item, wherein the factors include a historical order fulfillment time, a historical staffing level at the particular provider, and at least one subsequent additional order that the particular provider expects to receive, in the future, within a threshold amount of time;
receiving, at the mobile computing device and from the computer system, information that identifies, at least, the estimated time when the food order will be available for pick-up;
outputting, by the mobile computing device and through the user interface, the estimated time when the food order will be available for pick-up; providing, by the mobile computing device and to the computer system, location updates as the mobile computing device travels with the user to the particular provider's location; receiving, by the mobile computing device and from the computer system, status information for pick-up of the food order, wherein the status information comprises information indicating that, as a result of a route being travelled by the user to the particular provider's location, the estimated time of arrival has deviated by at least a threshold amount of time;
selecting, by the mobile computing device and based on the information indicating that the estimated time of arrival has deviated by at least a threshold amount of time, one or more selectable user interface features for modifying or cancelling the food order outputting, by the mobile computing device and through the user interface, the one or more selectable user interface features.
17b Date Recue/Date Received 2021-05-28 [0047c] In another aspect, there is provided a computer system comprising:
at least one processor; and a memory communicatively coupled to the at least one processor, the memory storing instructions which, when executed, cause the at least one processor to implement modules comprising: an interface that is programmed to (i) receive, from mobile computing devices, food orders that specify one or more items to be fulfilled by particular providers and picked-up by users of the mobile computing devices, (ii) provide food order instructions to provider computer systems associated with the particular providers; a location module that is programmed to (i) determine current locations of the mobile computing devices and (ii) identify locations of the particular providers; an arrival estimation module that is programmed to determine estimated times of arrival for the users to travel from the current locations of the mobile computing devices to the locations of the particular providers; and a fulfillment planning subsystem that is programmed to (i) determine, for the food orders, fulfillment time periods that correspond to lengths of time for the items to be fulfilled as part of the food orders, (ii) determine future times at which the particular providers are to begin preparing the items so that the food orders will be fulfilled and available for pick-up within a threshold period of time of the users arriving at the particular providers' locations, and (iii) generate food order instructions for the particular providers based, at least in part, on the food orders and the future times, wherein determining a fulfillment time period includes: determining a base preparation time to prepare the respective item included in the food order;
and modifying the base preparation time based on factors to determine the fulfillment time for the respective item, wherein the factors include a historical order fulfillment time, a historical staffing level at the particular provider, and at least one subsequent additional order that the particular provider expects to receive, in the future, within a threshold amount of time; wherein generating the food order instructions for the particular providers includes communicating the food order instructions to a provider computer system associated with the particular providers to cause the provider computer system to: i) place the one or more items of the food order in at least one queue of a plurality of queues, in a position in the at least one queue that is according to the one or more future times and the one or more fulfillment time 17c Date Recue/Date Received 2021-05-28 periods, wherein at least one of the one or more items is placed, in the at least one queue, ahead of at least one other item for a different food order having a later fulfillment time than the at least one item; and ii) display the food order instructions on a display device of the provider computer system, wherein each of the plurality of queues corresponds to a respective different preparation station that is used for item preparation at the particular providers; wherein the futures times are determined based, at least in part, on the estimated times of arrival and the fulfillment time periods, wherein the interface is further programmed to receive updated locations of the mobile computing devices and to provide updated information that identifies updated times of arrival for the users to the provider computer systems associated with the particular providers, wherein the arrival estimation module is further programmed to determine the updated times of arrival for the users based, at least in part, on the updated locations, and wherein the fulfillment planning subsystem is further programmed to determine whether the updated times of arrival for users to have deviated from the estimated times of arrival by more than a threshold amount of time and to instruct the interface to transmit the updated information in response to determining that the updated times of arrival have deviated from the estimated times of arrival by more than the threshold amount of time.
[0048] Certain implementations may provide one or more advantages.
For example, providers can be provided with greater insights about timing for preparing food items, which can help them to improve customer satisfaction, to decrease wasted resources (e.g., employee time, spoiled products, storage space for food orders awaiting customer arrival), and/or to create greater efficiencies.
[0049] The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other potential features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
DESCRIPTION OF DRAWINGS
[0050] FIG. 1 is a block diagram of an example system for managing orders.
17d Date Recue/Date Received 2021-05-28
[0051] FIGs. 2A and 2B illustrate example interfaces used in managing orders.
[0052] FIGs. 3 and 4 are interaction diagrams of managing orders.
[0053] FIGs. 5 and 6 are flowcharts of example processes for managing orders.
[0054] FIGS. 7A-B are conceptual diagrams of an example system for providing order suggestions to mobile computing devices.
[0055] FIG. 8 depicts an example system for providing order suggestions to mobile computing devices.
[0056] FIGS. 9A-B are flowcharts of an example technique for providing order suggestions to mobile computing devices.
[0057] FIG. 10 is a flowchart of an example technique for receiving and processing order suggestions on a mobile computing device.
17e Date Recue/Date Received 2021-05-28
[0058] FIG. 11 is a conceptual diagram of an example system for determining and using intelligent queueing information in the fulfillment of food orders.
[0059] FIG. 12 depicts an example system for providing intelligent queueing information for food orders to provider computer systems.
[0060] FIGS. 13A-D are flowcharts of an example technique for determining and providing intelligent queueing information to provider computer systems.
[0061] FIGS. 14A-B a flowchart of example techniques for using intelligent queueing information to fulfill food orders from a customer device perspective and a provider computer system perspective, respectively.
[0062] FIG. 15 is a block diagram of an example system for real time delivery.
[0063] FIG. 16 illustrates a schematic diagram of an exemplary generic computer system.
[0064] Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTION
[0065] A system may be used to manage orders for items. For example, a system may enable a user to use an application on a mobile device to order coffee from a coffee shop to be ready for pick up when the user arrives at the coffee shop. A server may receive the order from the mobile device and determine whether the coffee shop can fulfill the order. In response to determining that the coffee shop cannot fulfill the order, the server may provide the mobile device an indication that the coffee shop cannot fulfill the order, and may also provide an alternate suggestion to the user. By determining whether the orders may be fulfilled by particular times and providing alternate suggestions, the system may enable users to avoid waiting for orders that would not be able to be fulfilled by particular fulfillment times and enable users to place alternate orders.
[0066] FIG. 1 is a block diagram of an example system 100. Briefly, and as described in further detail below, the system 100 may include a user device 110, a server 120, a historical information database 122, a suggestion rule database 124, a current order database 126, and fulfillment center workstations 130, 140.
[0067] The user device 110 may be a computing device used by a user 112.
For example, the user device 110 may be a smart phone, a tablet computer, a laptop computer, a desktop computer, or another type of computing device. The user device 110 may include a display that provides an interface for the user 112 to place an order with the system 100 and that provides information to the user 112 regarding the order.
For example, the user device 110 may display an interface through which the user 112 may request to provide an order for coffee from fulfillment center A at 9 AM, and in response to which, the user device 110 may display a notification that "Sorry, coffee is not available at 9 AM from fulfillment center A. Would you like to order coffee instead for 9 AM from fulfillment center B a block away?"
[0068] The user device 110 may determine to provide an order for a particular item to the server 120. For example, the user device may determine to provide an order for a cup of coffee. The user device 110 may determine to provide an order for a particular item to the server 120 in response to input from the user 112. For example, the user device 110 may display a graphical user interlace through which the user 112 may select an item to order, a fulfillment center from which to pick up the order, and a time to pick up the order, and interact with a submission element to indicate to the user device 110 to provide the order to the server 120. In another example, the user device 110 may audibly output prompts for the user 112 to use speech to select an item to order, a fulfillment center from which to pick up the order, and a time to pick up the order, and say "submit order" to indicate to the user device 110 to provide the order to the server 120.
[0069] The user device 110 may provide, to the server 120, an order that indicates one or more particular items. For example, an order may indicate that one cup of coffee is ordered. In another example, an order may indicate that two cups of tea and a bagel are ordered. In some implementations, the order may indicate a fulfillment center. For example, the order may indicate fulfillment center A and a current location of the user, and the server 120 may determine a fulfillment time corresponding to when the user 112 is estimated to arrive at fulfillment center A based on the current location of the user.
[0070] In some implementations, the order may indicate a fulfillment time. For example, the order may indicate a fulfillment time and a current location of the user, and the server 120 may determine that the user 112 may reach fulfillment center A
along the user's expected route by the fulfillment time based on the current location of the user.
In some implementations, the order may indicate neither a fulfillment center nor a fulfillment time. For example, the order may indicate that the user 112 would like coffee when the user 112 arrives at the user's office and a current location of the user 112, and the server 120 may determine a fulfillment time based on when the user 112 is estimated to arrive at the office based on the current location of the user 112 and determine a fulfillment center based on a distance of the fulfillment center from the office of the user 112.
[0071] In response to providing an order, the user device 110 may receive a response from the server 120 to the order. In some implementations, the user device 110 may receive an indication that the order can be fulfilled and was successfully placed. For example, the user device 110 may receive an indication confirming that the order was placed and in response display, "Order placed." In some implementations, the user device 110 may receive an indication that the order cannot be fulfilled. For example, the user device 110 may receive an indication that the order cannot be fulfilled and in response display, "Sorry, that order cannot be fulfilled."
[0072] In some implementations, the user device 110 may receive an alternate suggestion. For example, the user device 110 may receive an indication that the order cannot be fulfilled and receive an alternate suggestion and display, "Sorry, coffee is not available at 9 AM from fulfillment center A. Would you like to order coffee instead for 9 AM from fulfillment center B a block away?" In another example, the user device 110 may receive an indication that the order can be fulfilled and receive an alternate suggestion and display, "Coffee is available at 9 AM from fulfillment center A, but a special offer is also available for coffee at 9:10 AM for a 5% discount. Would you like to order coffee instead for 9:10 AM?"
[0073] The user device 110 may receive a response from the user 112 to an alternate suggestion and provide the response to the server 120. For example, the user device 110 may receive user input accepting an alternate suggestion to order coffee from another fulfillment center, and provide a response to the server 120 that the user 112 has selected the alternate suggestion to order coffee from another fulfillment center.
[0074] In some implementations, the user device 110 may receive multiple alternate suggestions, provide multiple options to the user 112 corresponding ta the multiple alternate suggestions, receive a selection of an alternate suggestion, and provide an indication of the selection of the alternate suggestion to the server 120. For example, the user device 110 may receive an alternate suggestion of an alternate item and another alternate suggestion of an alternate fulfillment center, provide two options corresponding to the two alternate suggestions, receive a user selection of the option for the alternate fulfillment center, and provide an indication to the server 120 that the user 112 accepted the alternate suggestion of the alternate fulfillment center.
[0075] The server 120 may be a computing device that manages orders for items. The server 120 may be in communication with the user device 110, the historical information database 122, the suggestion rules database 124, the current order database 126, and the fulfillment center workstations 130, 140 over a network.
For example, the server 120 may use the Internet to communicate with the user device 110 and the fulfillment center workstations 130, 140. In another example, the server 120 may use a local network to communicate with the historical information database 122, the suggestion rule database 124, and the current order database 126.
[0076] The server 120 may track performance of fulfillment centers in fulfilling orders over time, and store historical preparation information in the historical information database 122 that describes the historical performance. For example, the server 120 may receive performance information from the fulfillment center over a span of a month, where the performance information indicates whenever a cup of coffee is produced, and store historical preparation information that indicates that on average, the particular fulfillment center is able to produce ten cups of coffee every ten minutes. In another example, the server 120 may receive performance information from the fulfillment center for a one week period that indicates whenever a cup of coffee is produced, and store historical preparation information that indicates that in the morning the particular fulfillment center is able to produce twelves cups of tea every ten minutes and in the afternoon the particular fulfillment center is able to produce eight cups of tea every ten minutes. In yet another example, the server 120 may receive performance information from the fulfillment center for a half year period that indicates whenever a cup of coffee is produced and what employees are working during that time, and store historical preparation information that indicates that whenever employee A is produdng coffee, employee A is able to produce fifteen cups of coffee every ten minutes, and whenever employee B is producing coffee, employee B is able to produce five cups of coffee every ten minutes.
[0077] The server 120 may track user orders and responses to alternate suggestions over time and store, in the historical information database 122, historical user information that indicates a likelihood that a user will accept an alternate suggestion. For example, the server 120 may track the types of items that that the user 112 orders and store information that indicates alternate items that the user 112 may be likely to desire. In another example, the server 120 may track the fulfillment centers at which the user 112 places orders and store information that indicates alternate fulfillment centers that the user 112 may accept for providing an item. In yet another example, the server 120 may track the alternate suggestions that the user 112 accepts and rejects, and store information that indicates the types of alternate suggestions that the user 112 has accepted or rejected, and amounts of discounts at which the user 112 has accepted or rejected alternate suggestions for different types of alternate suggestions.
[0078] The server 120 may track current orders and store current order information in the current order database 126. The current order information may indicate current orders that are to be fulfilled by fulfillment centers. The current order information may indicate particular orders, where for each order, the current order information indicates one or more particular items, a quantity for each particular item, a fulfillment center to fulfill the order, and a fulfillment time for fulfilling the order.
[0079] The server 120 may receive an order from the user device 110 for an item to be fulfilled by the fulfillment center for a fulfillment time, where the order indicates the item and the fulfillment center fulfills the order by enabling an employee at the fulfillment center to prepare the item for the user 112. As described above, the order the server 120 receives from the user device 110 may indicate one or more of a fulfillment center or a fulfillment time, or the server 120 may determine one or more of a fulfillment center or a fulfillment time based on a current location of the user 112 indicated by the order.
[0080] In response to receiving an order from the user device 110, the server 120 may determine whether the fulfillment center can fulfill the order by the fulfillment time. For example, in response to receiving an order for coffee at 9 AM by fulfillment center A, the server 120 may determine that fulfillment center A cannot fulfill the order.
In another example, in response to receiving an order for coffee at 9 AM by fulfillment center A, the server 120 may determine that fulfillment center A can fulfill the order.
[0081] The server 120 may determine whether the fulfillment center can fulfill the order by the fulfillment time based at least on current order information and a portion of the stored historical preparation information for the fulfillment center.
For example, the server 120 may determine that an order for coffee at 9 AM by fulfillment center A
can be fulfilled based on current order information that indicates that only nine cups of coffee have been ordered for 9 AM and a portion of stored historical preparation information for fulfilment center A that indicates that fulfillment center A
can produce ten cups of coffee at 9 AM. In another example, the server 120 may determine that an order for coffee at 9 AM by fulfillment center A cannot be fulfilled based on current order information that indicates that ten cups of coffee have been ordered for 9 AM
and a portion of stored historical preparation information for fulfilment center A
that indicates that fulfillment center A can produce ten cups of coffee at 9 AM. In yet another example, the server 120 may determine that an order for coffee at 9 AM for fulfillment center A cannot be fulfilled based on current order information that indicates that seven cups of coffee and two cups of espresso have been ordered for 9 AM and a portion of stored historical preparation information for fulfilment center A that indicates that fulfillment center A can only produce a combined total of nine cups for coffee and espresso at 9 AM.
[0082] The server 120 may determine whether the fulfillment center can fulfill the order by the fulfillment time based at least on determining that a demand for the item indicated by the current order information is not less than a production rate estimate for the item. For example, the server 120 may determine that the fulfillment center cannot fulfill the order based on determining that a demand for coffee indicated by the current order information is ten cups, which is not less than a production rate estimate of ten cups for coffee. In another example, the server 120 may determine that the fulfillment center can fulfill the order based on determining that a demand for coffee indicated by the current order information is eight cups, which is less than a production rate estimate of nine cups for coffee.
[0083] The server 120 may determine the demand for the item based on determining a quantity of the item ordered from the fulfillment center for a particular time. For example, the server 120 may determine that the current order information indicates that eight cups of coffee have been ordered for 9 AM at fulfillment center A, and in response, determine that the demand for coffee for 9 AM at fulfillment center A is eight cups. In another example, the server 120 may determine that the current order information indicates that ten cups of coffee have been ordered for 9 AM at fulfillment center A, and in response, determine that the demand for coffee for 9 AM at fulfillment center A is ten cups.
[0084] The server 120 may determine a production rate estimate for an item based on a portion of the stored historical preparation information for the fulfillment center. For example, the server 120 may determine from the stored historical preparation information for fulfillment center A that fulfillment center A
typically produces ten cups of coffee, and in response, determine that the production rate estimate for coffee for fulfillment center A is ten cups per every ten minutes. In another example, the server 120 may determine from the stored historical preparation information for fulfillment center A that fulfillment center A typically produces eight cups of coffee at 9 AM, and in response, determine that the production rate estimate for coffee for fulfillment center A is eight cups at 9 AM. In yet another example, the server 120 may determine from the stored historical preparation information for fulfillment center A that fulfillment center A typically produces fifteen cups of coffee every ten minutes when employee A is working and that employee A is working at 9 AM, and in response, determine that the production rate estimate for coffee when the order is to be fulfilled is fifteen cups every ten minutes.
[0085] The server 120 may obtain current order information that describes other orders to be fulfilled at the fulfillment center based on identifying orders for items at the fulfillment time whose fulfillment delays the fulfillment of the order for the item. For example, the server 120 may analyze stored historical preparation information to determine that for each cup of tea that a fulfillment center produces, the fulfillment of a cup of coffee is delayed. The server 120 may store information indicating these associations between items whose fulfillment causes a delay in the other and an amount of the delay the items cause on the other items. Accordingly, in response to receiving an order for a particular item, the server 120 may determine the other types of items that may delay the fulfillment of the particular item based on the stored associations, and obtain current order information that describes orders for the item at the particular time and orders at the particular time for the other item types that may delay the fulfillment of the item.
[0086] The server 120 may obtain a portion of the stored historical preparation information, from the historical information database 122 for the fulfillment center, that describes historical performance of the fulfillment center that is relevant to fulfillment of the item by the fulfillment time. For example, for an order for coffee from fulfillment center A at 9 AM, the server 120 may obtain stored historical preparation information from the historical information database 122 for past orders for coffee from fulfillment center A. In another example, for an order for tea from fulfillment center A
at 9 AM, the server 120 may obtain stored historical preparation information from the historical information database 122 for past orders for tea at 9 AM from fulfillment center A. In yet another example, for an order for tea from fulfillment center A at 9 AM, the server 120 may determine that employee A is working, and may obtain stored historical preparation information from the historical information database 122 for past orders for tea when employee A is working at fulfillment center A.
[0087] In some implementations, the server 120 may determine whether the fulfillment center can fulfill the order by the fulfillment time based at least on a contingency amount. For example, the server 120 may determine that a fulfillment center can produce ten cups of coffee at 9 AM, there are already orders for a total of nine cups of coffee at 9 AM, and there is a contingency amount of one cup of coffee per ten cups of coffee, and in response, determine that the order cannot be fulfilled.
[0088] A contingency amount may be a buffer for contingencies in fulfilling orders. For example, contingencies may include mistakes in fulfilling an order. The contingency amount may be preset by an administrator or dynamically determined by the server 120 based on historical preparation information stored in the historical information database 122. For example, the server 120 may determine that the historical preparation information indicates that out of the past week, one out of every ten cups of coffee had a mistake, and in response, determine to set a contingency amount of one cup per every ten cups of coffee.
[0089] In some implementations, the server 120 may determine whether the fulfillment center can fulfill the order by the fulfillment time based at least on inventory of the fulfillment center. For example, the server 120 may determine that a fulfillment center's inventory management system indicates that the fulfillment center has eight hundred bagels to sell that day, determine that orders for six hundred bagels have been placed for users, and in response, determine that bagels are still available for sale from the fulfillment center at any desired time that day. In another example, the server 120 may determine that a fulfillment center's inventory management system indicates that the fulfillment center has eight hundred bagels to sell that day, determine that orders for eight hundred bagels have been placed for users, and in response, determine that bagels are not available for sale from the fulfillment center at any desired time that day.
[0090] In some implementations, the server 120 may determine whether the fulfillment center can fulfill the order by the fulfillment time based on scheduled shipments to the fulfillment center. For example, the server 120 may determine that fulfillment center A has orders for fulfillment before 10 AM for all remaining apples at fulfillment center A, but that fulfillment center A will have two hundred additional apples arriving at 11 AM, and in response, determine that apples are available for sale after 11 AM.
[0091] In some implementations, the server 120 may determine whether the fulfillment center can fulfill the order by the fulfillment time based on an estimated preparation time for handling shipments received by the fulfillment center.
For example, the server 120 may determine that fulfillment center A has orders for fulfillment before AM for all remaining apples at fulfillment center A, but that fulfillment center A will have two hundred additional apples arriving at 11 AM and that it will take approximately one hour for the fulfillment center A to handle the shipment and have the apples ready for sale, and in response, determine that apples are available for sale after 12 PM, one hour after when the shipment arrives.
[0092] In some implementations, the server 120 may update current order information stored in the current order database 126 based on monitoring estimated time of arrivals of users. For example, the server 120 may determine that an order of coffee is originally scheduled so that the coffee is ready at 9:00 AM for a user, but the location of the user's device indicates that the user 112 is traveling slower than expected and will likely not arrive until 9:10. In the example, in response to the determination, the server 120 may determine that the coffee should instead be picked up at 9: 10AM and that now only nine cups of coffee have been scheduled for pick up at 9:00 AM. The server 120 may schedule the future slot, e.g., 9: 10AM, for the order before releasing the existing slot, e.g., 9:00 AM. This may ensure that the order always has a slot in which to be produced and delivered.
[0093] The server 120 may determine a location of users based on information obtained from the user device 110. For example, server 120 may have access to global positioning satellite (GPS) sensor information of the user device 110 and obtain a latitude and longitude of the user device 110. In another example, the server 120 may have access to a location of the user device 110 estimated based on available wireless networks or available wireless towers.
[0094] The server 120 may determine an estimated time of arrival of the user based on a location of the user device 110 of the user 112. For example, the server 120 may determine that from the current location of the user device 110, based on historical information for the user 112 stored in the historical information database 122, the user 112 typically takes twenty minutes to get to the user's office. In another example, the server 120 may determine that from the current location of the user device 110, the next subway train to the user's office is delayed so that it arrives in thirty minutes and that based on current calculated transit times, the user 112 likely won't get to work until forty minutes.
[0095] The server 120 may calculate an estimated time of arrival of a user given a location based on estimated transit times. The server 120 may estimate transit times based on determining the estimated path the user 112 will take to get to the user's destination, and the estimated time it will take for the user 112 to reach the user's destination using the estimated path. For example, the server 120 may determine that the user 112 is traveling by foot, and from the current location the user 112 is likely to take the path to the destination that results in the least distance traveled by foot, and calculate the estimated time for someone walking at the user's pace to travel the distance for the path. In another example, the server 120 may determine that the user 112 is traveling by foot, and from the current location to the destination the user 112 is likely to take the path that the user 112 typically takes when traveling by foot from the current location to the user's destination, and calculate the estimated time for someone walking at the user's current walking pace to travel the distance for the path. In yet another example, the server 120 may determine that the user 112 typically takes an amount of time to the destination, and therefore use that as the estimated time, rather than a typical time for any person.
[0096] In response to determining that the fulfillment center cannot fulfill the order, the server 120 may provide an indication to the user device 110 that the order cannot be fulfilled. For example, in response to determining that the server 120 cannot fulfill an order for coffee at 9 AM from fulfillment center A, the server 120 may provide an indication to the user device 110 that includes "Sorry, coffee is not available at 9 AM
from fulfillment center A." In some implementations, the server 120 may include an indication of why the order cannot be fulfilled. For example, the server 120 may include in the indication "Because fulfillment center A has run out of cups" or "Because fulfillment center A cannot produce an additional cup of coffee at 9 AM."
[0097] In some implementations, the server 120 may prevent a user from requesting that the user device 110 place an order that cannot be fulfilled.
For example, before the server 120 receives an order for coffee at 9 AM from fulfillment center A from the user device 110, the server 120 may determine that an order for coffee at 9 AM from fulfillment center A cannot be fulfilled, and provide an indication that such an order cannot be fulfilled to the user device 110 so that the user device 110 prevents the user 112 from requesting an order for coffee at 9 AM from fulfillment center A. In a more particular example, in response to the server 120 providing an indication that an order cannot be fulfilled, the user device 110 may disable and gray out coffee when a user selects 9 AM and fulfillment center A, may disable and gray out 9 AM when the user 112 selects coffee and fulfillment center A, or may disable and gray out fulfillment center A when the user 112 selects coffee and 9 AM. In another example, the user device 110 may display "Sold Out" or another error message to prevent the user 112 from requesting an order that cannot be fulfilled.
[0098] In some implementations, in response to determining that an order cannot be fulfilled, the server 120 may determine to provide an alternate suggestion.
For example, in response to receiving an order for coffee at 9 AM from fulfillment center A, the server 120 may provide the notification, "You're estimated to arrive at fulfillment center A at 9:00 AM, but coffee is not available from fulfillment center A
until 9:10 AM.
Would you like to order coffee for 9:10 AM?" In another example, in response to determining that an order cannot be fulfilled before the user 112 attempts to place an order, e.g., when a user requests to view available items for order at 9 AM
from fulfillment center A, the server 120 may provide a notification for the user device 110 to display next to the item, "This item is sold out by fulfillment center A, but is available from fulfillment center B. Would you like to order for pickup at fulfillment center B?" In yet another example, in response to determining that an order cannot be fulfilled, the server 120 may provide a notification to the user device 110 to display "You're estimated to arrive at fulfillment center A at 9:00 AM but coffee is not available until 9:20 AM. Would you like to instead order tea for 9:00 AM?"
[0099] In some implementations, the server 120 may determine to provide an alternate suggestion even if an order can be fulfilled. For example, the server 120 may determine that providing an alternate suggestion is likely to result in a better business value for an entity fulfilling the order or managing the server 120. In a particular example, the server 120 may determine that the user 112 may agree to an alternate suggestion for an alternate item with a one-time discount, and that if the user 112 continues to order the alternate item in the future instead of the original item, it will result in a greater profit for the entity. In another particular example, the server 120 may determine that another order for the same item and for the same fulfillment time is likely to be received based on historical order information stored in the historical information database 122, and determine to provide an alternate suggestion based on determining that the particular user is more likely to accept an alternate suggestion than either a typical user or a particular person likely to place the other order.
[00100] In response to determining to provide the alternate suggestion, the server 120 may identify at least one of an alternate item, an alternate fulfillment center, or an alternate time to include in the alternate suggestion based on the stored historical user information that indicates a likelihood that the user 112 will accept the alternate suggestion. For example, the server 120 may determine to identify tea as an alternate item to coffee based on the stored historical user information that indicates a high likelihood that the user 112 will accept tea instead of coffee, identify fulfillment center B
as an alternate fulfillment center to fulfillment center A based on the stored historical user information that indicates a high likelihood that the user 112 will accept coffee from fulfillment center B instead of fulfillment center A, or identify 9:10 AM as an alternate time to 9:00 AM based on the stored historical user information that indicates a high likelihood that the user 112 will arcept the alternate time of 9:10 AM instead of 9:00 AM.
[00101] In providing alternate suggestions, the server 120 may obtain one or more suggestion rules from the suggestion rule database 124. For example, the suggestion rules may specify particular ways of identifying alternate items, alternate fulfillment centers, or alternate times, as described below.
[00102] In identifying an alternate item, the server 120 may determine that the user 112 is likely to be interested in the alternate item based on the stored historical user information that indicates a likelihood that the user 112 will accept the alternate suggestion, and in response, identify the alternate item. For example, in identifying tea instead of coffee, the server 120 may determine a frequency at which the user ordered tea, a frequency at which the user 112 previously ordered tea from fulfillment center A, or a frequency at which other users, that previously ordered coffee, previously ordered tea.
[00103] The server 120 may determine that items more frequently ordered by the user 112, as indicated by the stored historical user information, are more likely to be of interest as an alternate item. In another example, in identifying tea instead of coffee, the server 120 may determine a frequency at which the user 112 previously accepted alternate suggestions for tea instead of coffee or a frequency at which other users previously accepted alternate suggestions for tea instead of coffee. The server 120 may determine that items more frequently accepted as an alternate item, as indicated by the stored historical user information, are more likely to be of interest as an alternate item. In some implementations, the server 120 may determine that the user 112 is likely to be interested in the alternate item based on the stored historical user information particular to a time of day. For example, the server 120 may determine that the specific user has previously purchased an alternative item at a similar time of day, and therefore suggest that item as an alternate item.
[00104] Additionally or alternatively, the server 120 may identify an alternate item based on determining another item from the fulfillment center is similar to the item.
For example, in response to determining that coffee cannot be provided by fulfillment center A at 9:00 AM, the server 120 may determine that fulfillment center A
also offers tea, that tea is similar to coffee, and that tea is available for 9:00 AM, and in response, determine to provide a suggestion of ordering tea instead from fulfillment center A. The server 120 may determine items from a fulfillment center are similar based on data explicitly indicating similarity between items. For example, the server 120 may determine tea is similar to coffee based on data that explicitly indicates that both tea and coffee are hot beverages that include caffeine.
[00105] In identifying an alternate fulfillment center, the server 120 may determine that the user 112 is likely to be interested in the alternate fulfillment center based on the stored historical user information that indicates a likelihood that the user 112 will accept the alternate suggestion, and in response, identify the alternate fulfillment center. For example, in identifying fulfillment center B instead of fulfillment center A, the server 120 may determine a frequency at which the user 112 orders from fulfillment center B, a frequency at which the user 112 previously ordered coffee from fulfillment center B, or the frequency at which the user 112 previously accepted alternate suggestions for fulfillment center B instead of fulfillment center A. The server 120 may determine that fulfillment centers more frequently ordered from by the user 112 or more frequently accepted as an alternate fulfillment center, as indicated by the stored historical user information, are more likely to be of interest as an alternate fulfillment center to the user.
[00106] In identifying an alternate fulfillment center, the server 120 may determine other fulfillment centers that may fulfill an order for the item.
For example, in response to determining that coffee cannot be provided by fulfillment center A
when the user 112 is scheduled to arrive at fulfillment center A at 9:00 AM, the server 120 may determine that fulfillment center B is available to provide coffee at 9:00 AM
and that fulfillment center B is only a block from fulfillment center A, and in response, determine to identify fulfillment center B as an alternate fulfillment center.
[00107] The server 120 may determine other fulfillment centers that may fulfill an order based on determining an item from a fulfillment center is similar to an item from an alternate fulfillment centers. For example, the server 120 may determine that coffee from fulfillment center A is similar to coffee from fulfillment center B. The server 120 may determine another fulfillment center offers an item similar to the item unavailable from the fulfillment center based on data describing the item. For example, the server 120 may determine that both items are titled "Coffee." In another example, the server 120 may access data that explicitly indicates that the item coffee from fulfillment center A and fulfilment center B are similar. In yet another example, the server 120 may determine that fulfillment center A and fulfillment center B are from the same provider, e.g., chain or company, and in response, determine items from fulfillment center A and fulfillment center B with similar names are similar items.
[00108] In some implementations, the server 120 may determine the alternate fulfillment center based on determining whether the item can be ordered from an alternative location which is on the way between the user's current location and their final destination. The alternative location may be a different fulfillment center from the same provider, or an alternative provider. The server 120 may take into account the location of access to the alternative location, including altitude of the alternative location in comparison to the users route.
[00109] For example, the server 120 may not identify a fulfillment center above an underground transport route the user 112 is using, but may identify a fulfillment center within a station of the underground transport route at the beginning or final station, including any stages where the user 112 may be swapping modes of transport and therefore travelling within close proximity. In another example, the server 120 may determine a likely route for the user 112 based at least on the stored historical user information that indicates a likelihood that the user 112 will accept the alternate suggestion, determine that the alternate fulfillment center is accessible along the likely route, and in response to determining that the alternate fulfillment center is accessible along the likely route, identifying the alternate fulfillment center.
[00110] In identifying an alternate time, the server 120 may determine a time that the order may be fulfilled by the fulfillment center. For example, in response to determining that coffee cannot be provided by fulfillment center A at 9:00 AM, the server 120 may determine that the earliest coffee is available after 9:00 AM is 9:10 AM. The server 120 may determine the time that the order may be fulfilled by the fulfillment center based on determining the next time that the fulfillment center will have the item available to provide. For example, the server 120 may determine that fulfillment center A may provide up to ten cups of coffee at 9:10 AM, that only nine cups of coffee have been ordered for 9:10 AM, and in response, determine that the earliest time that the order may be fulfilled by the fulfillment center is 9:10 AM.
[00111] In some implementations, the server 120 may further determine to identify an alternate time based on determining the earliest time that the order may be fulfilled by a fulfillment center satisfies a time threshold, and in response, identifying the earliest time as an alternate time. For example, the server 120 may determine that the earliest time the coffee is available is 9:10 AM, which is less than a thirty minute time threshold than the original fulfillment time of 9:00 AM, and in response, identify 9:10 as an alternate time. In another example, the server 120 may determine that the earliest time the coffee is available is 10:00 AM, which is more than a fifteen minute time threshold after original fulfillment time of 9:00 AM, and in response, determine not to identify 10:00 AM as an alternate time.
[00112] In some implementations, the server 120 may include an incentive in association with an alternate suggestion. For example, the server 120 may include a discount of 10% for a suggestion for an alternate item when the original order can be fulfilled. In another example, the server 120 may include a discount of 5% for a suggestion for an alternate fulfillment center that is a block from the original fulfillment center when the original order cannot be fulfilled.
[00113] The server 120 may determine the incentive to include with the alternate suggestion based on a likelihood that the user 112 will accept the alternate suggestion with the incentive and a value of the order with the incentive. For example, the server 120 may analyze historical user information stored in the historical information database 122 to determine a likelihood that a particular incentive will cause a user to accept an alternate suggestion and determine whether the increase in the likelihood offsets a cost of the incentive. In a particular example, the server 120 may determine that a 5% discount increases a rate of acceptance of an alternate time less than fifteen minutes by 50% for a particular user, and in response, determine to provide the 5% discount. In another particular example, the server 120 may determine that a 10% discount increases a rate of acceptance of an alternate item by 5% for a particular user, and in response, determine not to provide the 10% discount.
[00114] In some implementations, the server 120 may provide multiple alternate suggestions to the user device 110. For example, in response to determining that an order of coffee for 9 AM from fulfilment center A cannot be fulfilled, the server 120 may provide suggestions to the user device 110 of ordering tea instead of coffee, ordering coffee from fulfillment center B, and ordering coffee for 9:10 AM.
[00115] The server 120 may determine the multiple alternate suggestions to provide the user device 110 based on selecting a predetermined number of candidate alternate suggestions as the multiple alternate suggestions. For example, the server 120 may generate ten candidate multiple suggestions, and determine to select three of the candidate alternate suggestions as the multiple suggestions.
[00116] The server 120 may select the candidate alternate suggestions based on outcome scores of each candidate alternate suggestion that indicate an estimated value of the candidate alternate suggestion. For example, the server 120 may determine that a suggestion for an alternate time that is long after the original time may have a low likelihood of acceptance based on historical information for the user, thus has a low outcome score. In another example, the server 120 may determine that a suggestion for an alternate item has a moderate likelihood of acceptance based on historical information for the user 112 but will result in much greater profits, thus has a high outcome score.
[00117] In some implementations, in providing alternate suggestions, the server 120 may place a hold according to the alternate suggestion. A hold may be an order that is either later canceled or confirmed. For example, in response to determining to provide an alternate suggestion for coffee at 9 AM from fulfillment center B, the server 120 may place a hold for coffee at 9 AM for fulfillment center B for a hold time of thirty seconds. If the server 120 receives a response from the user device 110 indicating that the alternate suggestion is accepted, the server 120 may confirm the hold so that the order is fulfilled. If the server 120 receives a response from the user device indicating that the alternate suggestion is not accepted or the hold time elapses before a response is received from the user device 110, the server 120 may cancel the hold.
[00118] The fulfillment center workstations 130, 140 may receive orders from the server 120 and provide performance information to the server 120. For example, the fulfillment center workstation 130 may receive an order for coffee at 9 AM
from the server 120 and provide information to the server 120 indicating when the order was received, when the order was completed, and who completed the order.
[00119] The fulfillment center workstations 130, 140 may be located on the premises of the fulfillment center and used by employees of the fulfillment center. For example, a fulfillment center workstation of a coffee shop may be located in a kitchen of the coffee shop and used by baristas to determine what coffees to make and when to make the coffees. In another example, fulfillment center workstations of a pizza provider may be located in delivery vehicles of the pizza provider and used by pizza deliverers to determine where to deliver each pizza or a delivery route for the pizzas.
The delivery route may be dynamically planned based on types of orders and locations to which the orders will be delivered. In yet another example, a fulfillment center workstation may be used by a cashier of a coffee shop to place additional orders for customers within the coffee shop or determine whether a customer is the correct customer to receive coffee that is ordered for pickup at the coffee shop.
[00120] The fulfillment center workstations 130, 140 may provide information to employees of the fulfillment center to fulfill orders. For example, a particular fulfillment center workstation of a coffee shop may display an order number, a type of coffee ordered, a customer name for the order, a place of delivery for the order, and a time of delivery for the order.
[00121] The fulfillment center workstations 130, 140 may obtain the information to provide employees of the fulfillment center from the orders received from the server 120. For example, the orders received from the server 120 may include data that indicates an order number, a type of coffee ordered, a customer name for the order, a place of delivery for the order, and a time of delivery for the order. In some implementations, the fulfillment center workstations 130, 140 may prioritize the fulfillment of orders. For example, the fulfillment center workstations 130, 140 may prioritize the fulfillment of orders based on when the orders are to be provided to the users.
[00122] Different configurations of the system 100 may be used where functionality of the user device 110, the server 120, the historical information database 122, the suggestion rule database 124, the current order database 126, and the fulfillment center workstations 130, 140 may be combined, further separated, distributed, or interchanged. The system 100 may be implemented in a single device or distributed across multiple devices.
[00123] FIG. 2A is an example interface 210 used in managing orders. The interface 210 may be displayed on a user device. The interface 210 includes a notification 220 that an order cannot be fulfilled and multiple alternate suggestions 230, 232, 234, 236. The notification 220 is "Sorry, coffee is not available at 9:00 AM from Fulfillment Center A." The alternate suggestions include "Order tea instead for 9 AM
from Fulfillment Center A" 230, "Order coffee for 9 AM from Fulfillment Center B, which is a block away instead" 232, "Order coffee for 9:10 AM instead from Fulfillment Center A" and "Cancel" 236. In some implementations, the interface 210 may indicate whether the suggestion is for an alternate item, an alternate fulfillment center, or an alternate time. For example, the multiple alternate suggestions 230, 232, 234 include the word "instead" immediately following what is alternated. In another example, the interface 210 may color code the multiple alternate suggestions by the type of alternate, e.g., suggestions for alternate items may be outlined in orange and suggestions for alternate times may be outlined in green, or may bold or italicize the portion of the alternate suggestion that is alternate, e.g., tea, fulfillment center B, and 9:10 AM may be bolded.
[00124] FIG. 2B is an example interface 250 used in managing orders. The interface 250 may be displayed on a user device. The interface 250 may include a notification 260 that an order can be fulfilled but a special offer is available and multiple alternate suggestions 270, 272, 274, 276. The notification 260 is "Coffee is available at 9:00 AM from Fulfillment Center A, but a special offer is available." The alternate suggestions indude "Order tea instead for 9 AM from Fulfillment Center A with a 10%
discount" 270, "Order coffee for 9 AM from Fulfillment Center B a block away instead with a 15% discount" 272, "Order coffee for 9:10 AM instead from Fulfillment Center A"
with a 5% discount" 274 and "Place original order" 276. In some implementations, the interface 250 may, similarly to interface 210, indicate whether the suggestion is for an alternate item, an alternate fulfillment center, or an alternate time.
[00125] FIG. 3 is an interaction diagram 300 of an example interaction of sharing information. The following describes the interaction as being performed by components of the system 100 that are described with reference to FIG. 1.
However, the interaction may be performed by other systems or system configurations.
[00126] Initially, the fulfillment center workstation 130 provides performance information to the server (302). For example, multiple fulfillment centers may provide the server 120 information regarding what employees are working, the inventory of items available at the fulfillment centers, the orders placed at the fulfillment centers, and when orders are fulfilled at the fulfillment center.
[00127] The server 120 tracks the performance information of the fulfillment centers and stores, in a historical information database, historical preparation information that describes historical performance of the fulfillment center in fulfilling orders for items at the fulfillment center (304). For example, the server 120 may track performance of the fulfillment center over a month and store historical preparation information that describes the dates and times for each pizza that was prepared at the fulfillment center for the month.
[00128] The user device 110 later determines to provide an order to the server 120 (306). For example, the user device 110 may receive user input requesting that the user device 110 provide the server 120 an order for a small cheese pizza for pickup at 12 PM at fulfillment center B.
[00129] The user device 110 provides an order to the server 120 (308). For example, the user device 110 may provide an order to the server 120 that indicates an item of a small cheese pizza, a fulfillment time of 12 PM, and fulfillment center B to fulfill the order. In another example, the user device 110 may provide an order to the server 120 that indicates an item of a small cheese pizza, a current location of the user, and an indication that the user is traveling to fulfillment center B to pick up the pizza.
[00130] The server 120 receives the order and obtains relevant historical preparation information (310). For example, the server 120 may receive an order for a small cheese pizza at 12 PM from fulfillment center B, and in response, obtain a portion of stored historical preparation information from the historical information database 122, where the portion corresponds to historical preparation information for orders at fulfillment center B for small cheese pizzas. In another example, the server 120 may receive an order for a small cheese pizza at 12 PM from fulfillment center B, and in response, obtain a portion of stored historical preparation information from the historical information database 122, where the portion corresponds to historical preparation information for orders at fulfillment center B for small cheese pizzas for the current day of the week at 12 PM.
[00131] The server 120 obtains current order information (312). For example, the server 120 may receive an order for a small cheese pizza at 12 PM from fulfillment center B, and then obtain, from the current order database 126, orders for small cheese pizzas that are to be fulfilled by fulfillment center B at 12 PM. In another example, the server 120 may receive an order for a small cheese pizza at 12 PM from fulfillment center B, and then obtain, from the current order database 126, orders for baked items that are to be fulfilled by fulfillment center B at 12 PM.
[00132] The server 120 determines orders that cannot be fulfilled (314). For example, the server 120 may determine that an order for a small cheese pizza at 12 PM
from fulfillment center B cannot be fulfilled based at least on an obtained portion of the stored historical preparation information that indicates that fulfillment center B can only produce five pizzas at 12 PM and obtained current order information that indicates that five pizzas are already ordered for 12 PM from fulfillment center B.
[00133] The server 120 provides an indication that the order cannot be fulfilled to the user device 110 (316). For example, the server 120 may provide the user device an indication of "Sorry, your order for a small cheese pizza at 12 PM from fulfillment center B cannot be fulfilled as fulfillment center B cannot produce any more pizzas for 12 PM."
[00134] FIG. 4 is an interaction diagram 400 of an example interaction of sharing information. The following describes the interaction as being performed by components of the system 100 that are described with reference to FIG. 1.
However, the interaction may be performed by other systems or system configurations.
[00135] Initially, the fulfillment center workstation 130 may provide performance information to the server (402). For example, multiple fulfillment centers may provide the server 120 information regarding what employees are working, the inventory of items available at the fulfillment centers, the orders placed at the fulfillment centers, and when orders are fulfilled at the fulfillment center.
[00136] The server 120 tracks the performance information of the fulfillment centers and stores, in a historical information database, historical preparation information that describes historical performance of the fulfillment center in fulfilling orders for items at the fulfillment center (404). For example, the server 120 may track performance of the fulfillment center over a month and store historical preparation information that describes the dates and times that each cup of coffee was prepared at the fulfillment center for the month.
[00137] The server 120 receives user responses to alternate suggestions (406).

For example, the server 120 may receive responses from the user indicating when a user accepted alternate suggestions of tea instead of coffee and when a user rejected alternate suggestions of tea instead of coffee.
[00138] The user device 110 later determines to provide an order to the server 120 (406). For example, the user device 110 may receive user input requesting that the user device 110 provide the server 120 an order for a cup of coffee for pickup at 9 AM
at fulfillment center A.
[00139] The user device 110 provides an order to the server 120 (412). For example, the user device 110 may provide an order to the server 120 that indicates an item of a cup of coffee, a fulfillment time of 9 AM, and fulfillment center A
to fulfill the order. In another example, the user device 110 may provide an order to the server 120 that indicates an item of a cup of coffee, a current location of the user, fulfillment center A, and an indication that the user is traveling to fulfillment center A to pick up the cup of coffee.
[00140] The server 120 receives the order and obtains relevant historical preparation information (414). For example, the server 120 may receive an order fora cup of coffee at 9 AM from fulfillment center A, and in response, obtain a portion of stored historical preparation information from the historical information database 122, where the portion corresponds to historical preparation information for orders at fulfillment center A for coffee. In another example, the server 120 may receive an order for a cup of coffee at 9 AM from fulfillment center A, and in response, obtain a portion of stored historical preparation information from the historical information database 122, where the portion corresponds to historical preparation information for orders at fulfillment center A for cups of coffee for the current day of the week at 9 AM.
[00141] The server 120 obtains current order information (416). For example, the server 120 may receive an order for a cup of coffee at 9 AM from fulfillment center A, and then obtain, from the current order database 126, orders for cups of coffee that are to be fulfilled by fulfillment center A at 9 AM. In another example, the server 120 may receive an order for a cup of coffee at 9 AM from fulfillment center A, and then obtain, from the current order database 126, orders for hot beverages that are to be fulfilled by fulfillment center A at 9 AM.
[00142] The server 120 determines to provide an alternate suggestion (418).
For example, the server 120 may determine that the order cannot be fulfilled and in response, identifies an alternate item, alternate fulfillment center, or alternate time. In another example, the server 120 may determine that the order can be fulfilled but that an alternate suggestion may result in a more valuable outcome.
[00143] The server 120 generates the alternate suggestion (420). For example, the server 120 may generate the alternate suggestion, "Order tea instead for 9 AM from fulfillment center A." In another example, the server 120 may generate the alternate suggestion, "Order coffee instead for 9 AM from fulfillment center B a block away with a 15% discount."
[00144] The server 120 provides the alternate suggestion to the user device 110 (422). For example, the server 120 may provide the alternate suggestion "Order tea instead for 9 AM from fulfillment center A" to the user device 110.
[00145] FIG. 5 is a flowchart of an example process 500 for managing orders.
The following describes the process 500 as being performed by components of the system 100 that are described with reference to FIG. 1. However, the process 500 may be performed by other systems or system configurations.
[00146] The server 120 tracks performance of a fulfillment center (510). For example, the server 120 may track the time it takes for fulfillment center B
to fulfill different orders.
[00147] The server 120 stores historical preparation information (520). For example, the server 120 stores historical preparation information that describes when each order was received, what each order was for, and how long fulfillment center B
took to complete each order.
[00148] The server 120 receives an order for an item to be fulfilled by the fulfillment center for a fulfillment time (530). For example, the server 120 receives from user device 110 an order for coffee to be fulfilled by fulfillment center B
for 9 AM. In another example, the server 120 receives from the user device 110 an order that indicates coffee, a current location of the user, and a destination of the user, and the server 120 determines fulfilment centers accessible along the route of the user and the times that the user will pass by the fulfillment centers.
[00149] The server 120 may obtain a portion of the stored historical preparation information (540). For example, the server 120 may obtain an order for coffee to be fulfilled by fulfillment center B for 9 AM, and in response, obtain a portion of stored historical preparation information for coffee previously fulfilled by fulfillment center B for 9 AM. In another example, the server 120 may obtain an order for coffee, determine fulfillment centers accessible to a user along a user's route and times that the user will be near each fulfillment center, and in response, obtain a portion of stored historical preparation information for coffee previously prepared by the fulfillment centers at the times that the user will be near the fulfillment centers.
[00150] The server 120 may obtain current order information (550). For example, the server 120 may obtain a list of orders to be fulfilled by fulfillment center B.
In another example, the server 120 may obtain a list of orders for fulfillment centers that the user will be near where the orders are for times that the user will be near the corresponding fulfillment centers.
[00151] The server 120 may determine whether a fulfillment center can fulfill the order by the fulfillment time (560). For example, the server 120 may determine that fulfillment center B cannot fulfill the order for coffee at 9 AM based at least on the portion of stored historical preparation information indicating nine cups of coffee can be provided by fulfillment center B at 9 AM and current order information indicating that nine cups of coffee have already been ordered from fulfillment center B at 9 AM. In another example, the server 120 may determine that an order for coffee at 9 AM
cannot be fulfilled based at least on the portion of stored historical preparation information indicating a number of cups of coffee that can be produced by different fulfillment centers along a user's route, and current order information indicating a number of cups of coffee ordered from the fulfillment centers.
[00152] FIG. 6 is a flowchart of an example process 600 for managing orders.
The following describes the process 600 as being performed by components of the system 100 that are described with reference to FIG. 1. However, the process 600 may be performed by other systems or system configurations.
[00153] The server 120 tracks performance of a fulfillment center and user responses to alternate suggestions (610). For example, the server 120 may track that it takes fulfillment center B ten minutes to prepare grilled cheese sandwich, and the user has accepted an alternate suggestion of a cheeseburger instead of a grilled cheese sandwich, and has rejected alternate suggestions of jam and toast instead of a grilled cheese sandwich.
[00154] The server 120 stores historical preparation information and historical user information (620). For example, the server 120 stores historical preparation information that describes that on average fulfillment center B takes ten minutes to prepare a grilled cheese sandwich, and stores historical user information that indicates that the user has accepted a cheeseburger as an alternate item to a grilled cheese sandwich and has rejected alternate suggestions of jam and toast instead of a grilled cheese sandwich.
[00155] The server 120 receives an order for an item to be fulfilled by the fulfillment center for a fulfillment time (630). For example, the server 120 receives from user device 110 an order for a grilled cheese sandwich to be fulfilled by fulfillment center B for 11 AM.
[00156] The server 120 obtains a portion of the stored historical preparation information (640). For example, the server 120 may obtain an order for a grilled cheese sandwich to be fulfilled by fulfillment center B for 11 AM, and in response, obtain a portion of stored historical preparation information that indicates that the fulfillment center B takes about ten minutes to prepare a grilled cheese sandwich.
[00157] The server 120 obtains current order information (650). For example, the server 120 may obtain a list of orders to be fulfilled by fulfillment center B. In another example, the server 120 may obtain a list of orders for grilled cheese sandwiches to be fulfilled by fulfillment center B. In yet another example, the server 120 may obtain a list of orders for grilled cheese sandwiches to be fulfilled by fulfillment center B at 11 AM.
[00158] The server 120 determines to provide an alternate suggestion (660).
For example, the server 120 may determine that the order for a grilled cheese sandwich to be fulfilled by fulfillment center B for 11 AM can not be fulfilled. In another example, the server 120 may determine that the order for a grilled cheese sandwich to be fulfilled by fulfillment center B for 11 AM can be fulfilled, but the user is likely to accept an alternate suggestion of a later fulfillment time of 11:30 AM, that otherwise another user would not be able to order a grilled cheese sandwich for 11 AM, that another user is likely to order a grilled cheese sandwich for 11 AM, and that the other user is not likely to accept an alternate suggestion.
[00159] The server 120 identifies at least one of an alternate item, an alternate fulfillment center, or an alternate time (670). For example, the server 120 may determine from stored historical user information to identify a cheeseburger as an alternate item to a grilled cheese sandwich based on determining that the user has previously ordered a cheeseburger. In another example, the server 120 may determine from stored historical user information to identify a cheeseburger as an alternate item to a grilled cheese sandwich based on determining that the user has previously accepted an alternate suggestion of a cheeseburger instead of a grilled cheese sandwich. In yet another example, the server 120 may determine from stored historical user information to identify a cheeseburger as an alternate item to a grilled cheese sandwich based on determining that the user has not previously rejected an alternate suggestion of a cheeseburger instead of a grilled cheese sandwich.
[00160] The server 120 generates an alternate suggestion based on the identification (680). For example, in response to identifying a cheeseburger as an alternate item to a grilled cheese sandwich, the server 120 may generate an alternate suggestion of "Sorry a grilled cheese sandwich is not available from fulfillment center B
for 11 AM. Would you like to instead order a cheeseburger?"
[00161] The server 120 provides the alternate suggestion to the user device (690). For example, server 120 provides the alternate suggestion "Sorry a grilled cheese sandwich is not available from fulfillment center B for 11 AM. Would you like to instead order a cheeseburger?" to the user device 110.
[00162] FIGS. 7A-B are conceptual diagrams of an example system 700 for providing order suggestions to mobile computing devices. The example system includes an example mobile computing device 702 that can receive order suggestions from an example computer system 704.
[001631 The mobile computing device 702 can be any of a variety of appropriate mobile computing devices, such as smartphones, tablet computing devices, personal digital assistants (PDA), media players, laptops, wearable computing devices (e.g., GOOGLE GLASS, MICROSOFT HOLOLENS), navigational computing devices (e.g., automobile navigational systems), and/or other appropriate mobile computing devices. The computer system 704 can be any of a variety of appropriate computer systems, such as server systems, cloud-based computer systems, and/or any other appropriate collection of one or more computing devices. The mobile computing device 702 and the computer system 704 can communicate over one or more communication networks, such as the internet, wireless networks (e.g., Wi-Fi networks, mobile data networks), local area networks (LAN), wide area network (WAN), virtual private networks (VP N), or any combination thereof.
[00164] Referring to FIG. 7A, an example map 706 is depicted showing a current location 708 of the mobile computing device 702 as it travels along portions 710a-b of a route in an area with blocks 712a-f. The mobile computing device 702 is depicted as having already completed a first portion 710a of the route and intending to proceed along a second portion 710b of the route. Example providers 714a-d (e.g., restaurants, coffee shops, fast food chains, retailers) are depicted at various locations in the blocks 712a-f. For instance, the provider 714a is depicted as being located in the NE corner of block 712e, the provider 714b is depicted as being located in the SE
corner of block 712c, the provider 714c is depicted as being located in the SW
corner of block 712f, and the provider 714d is depicted as being located in the NW
corner of block 712a.
[00165] As indicated by example step A (716), the mobile computing device 702 can determine its geographic location information, which can include information that identifies the current location 708 of the mobile computing device 702.
The mobile computing device 702 can use any of a variety of appropriate techniques to determine its geographic location, such as GPS techniques, Wi-Fi signals, cellular triangulation, beacon signals, user input, or any combination thereof. The location information that is determined by the mobile computing device 702 can be any of a variety of information that can, with at least a minimum level of granularity, identify the location 708, such as GPS coordinates, the identities of nearby computing devices (e.g., Wi-Fi routers, cell towers), and/or a physical address of the location 708 (e.g., street address, zip code, city).
[00166] In some implementations, the location 708 of the mobile computing device 702 is determined by a system that is remote from the mobile computing device 702, such as a data or cellular network provider that is able to triangulate the location 708 through the use of a grid of transceivers located near or around the location 708.

[00167] The mobile computing device 702 can provide the location information to the computer system 704, as indicated by step B (718). The mobile computing device 702 can provide the location information periodically (e.g., every minute, every 5 minutes, every 15 minutes, whenever the location changes by more than a threshold amount) to the computer system 704 and without explicit direction from a user of the mobile computing device 702, such as part of a background process/service running on the mobile computing device 702. The mobile computing device 702 may verify that a user of the mobile computing device 702 has previously consented the mobile computing device 702 periodically sharing the location information with the computer system 704 so as to protect the user's privacy.
[00168] In response to receiving the location information, the mobile computing device 702 can access historical order information for the user and/or the mobile computing device 702, as indicated by step C (720). The computer system 704 can access one or more historical data sources, which may be locally maintained by the computer system 704 and/or remotely accessed by the computer system 704. For example, the computer system 704 can maintain a local data repository 722 of historical order data for the user of the mobile computing device 702, such as records of orders processed by the computer system 704 and/or affiliates/partners of the computer system 704, and/or records of orders provided by the mobile computing device 702 to the computer system 704. However, this may be an incomplete picture of the orders placed by the user and/or the mobile computing device 702. Other third party sources of historical order information for the user and/or the mobile computing device 702 can be accessed by the computer system 704, such as records for customer loyalty programs, credit card records, and/or other appropriate sources of order information. A
user of the mobile computing device 702 may authorize some or all of the order records being stored and/or accessed by the computer system 704.
[00169] The historical order information can include a variety of details regarding previous orders by the user and/or the mobile computing device 702, such as providers at which the orders were made (e.g., provider name, provider location, provider type, provider affiliation with chains and/or other providers), items that were ordered (e.g., types of items, particular food items ordered, particular consumer goods ordered), time and date information on which the orders were made (e.g., time of day, day of the week, date), manners in which the order was fulfilled (e.g., pickup, delivery), how the user initiated the order (e.g., in-person order, order using the mobile computing device 702, order initiated from order suggestion by the computer system 704), and/or other appropriate details.
[00170] The computer system 704 can access the historical order information to determine behavior patterns and preferences for the user of the mobile computing device 702, which can be used to determine whether, when, and/or what type of order suggestion to provide to the user. For example, the historical order information can be used to determine that the user of the mobile computing device 702 has a 75%
likelihood of getting coffee from a coffee shop in his/her way into work on Mondays and Wednesdays. A variety of techniques can be used to glean such patterns and user preferences, such as processing the historical order information using machine learning algorithms (e.g., neural networks, clustering, regressions).
[00171] The computer system 704 can identify providers that are located near the location 708 of the mobile computing device 702 and/or locations along the route 710a-b of the mobile computing device 702, as indicated by step D (723). The computer system 704 can access a repository of provider information, which can include location information for the providers. For mobile providers, such as food truck providers that are in different locations each day, the provider information can be updated dynamically based on data feeds for providers, such as TWITTER feeds for food truck vendors. Distances (e.g., absolute, distances along roads) between the location 708 of the mobile computing device 702 (and/or locations along the route 710a-b, including starting locations and/or end locations) and the providers can be determined by the computer system 704, and providers that are within a threshold distance of one or more of these locations can be selected.
[00172] Although not depicted, the computer system 704 can also maintain information on historical routes that are traveled by the user and/or the mobile computing device 702, and can use that information to determine patterns of travel behavior for the user to predict the second portion 710b of the route that is yet to be travelled by the mobile computing device 702. The historical route information can be maintained by the computer system 704, the mobile computing device 702, and/or other third party services that the user of the mobile computing device 702 has consented to.
For example, the computer system 704 can determine that on weekdays (M-F) the user typically travels from his/her home to work along a particular route between 8:00 am ¨
8:30 am. The computer system 704 can use any of a variety of appropriate techniques to detect such travel patterns, such as processing the historical route information using machine learning algorithms (e.g., neural networks, clustering, regressions).
[00173] In the depicted example, the computer system 704 can identify the providers 714a-d as being nearby and can designate them as candidate providers for a possible order suggestion to be provided to the mobile computing device 702.
[00174] The computer system 704 can use the historical order information and the nearby (candidate) providers to determine possible orders to suggest to the user of the mobile computing device 702, as indicated by step E (724). For example, the computer system 704 can identify items that are offered by the providers 714a-d that the user may be interested in ordering based on a variety of factors, such as the historical order information and/or other appropriate factors (e.g., location 708, time of day, route 710a-b, provider preference, item preference, external factors like weather).
The computer system 704 can determine confidence values for each of the candidate orders based on such factors. A candidate order with high confidence value can indicate a high likelihood that the user will be interested in placing the order, whereas a candidate order with a low confidence value can indicate a low likelihood that the order will be placed. In general, orders with high confidence values correlate closely with previous orders placed by the user and/or the mobile computing device 702 along one or more dimensions (e.g., location, time of day, item ordered, route, provider identity).
[00175] A table 726 is depicted showing example results from such determination of candidate orders by the computer system 704. In the table 726, the computer system 704 identifies a first example candidate order to suggest to the computing device 702 as induding coffee fulfilled by the provider 714a, a second example candidate order including a sandwich fulfilled by the provider 714b, a third example candidate order including a soda fulfilled by the provider 714c, and a fourth example candidate order including breakfast fulfilled by the provider 714d.
The computer system 704 in this example determines the first example candidate order as having the highest confidence value (90%) based, for example, on the provider 714a being located along the portion 710b of the route that the user has not yet completed, the provider 714a being a provider that the user has ordered from previously, and the item that is available at the provider 714a being something that the user is likely to be interested in presently ordering. The confidence value for the second and third candidate orders with providers 714b-c are determined to be mid-level confidence values (100% and 50%, respectively) that can be based on, for example, the providers 714b-c being located along or near the portion 710b of the route, but the food items (sandwich and soda) and/or providers 714b-c not matching well with the user's likely preferences within the present context (e.g., time of day, day of week, location 708, route 710a-b, external factors, provider identity/type). The confidence value for the fourth candidate order with the provider 714d is determined to be the lowest based, for example, on the provider 714d being located along/near the completed portion 710a of the route ¨ meaning that the user would have to backtrack to go to the provider 714a, which would likely be undesirable.
[00176] Although the examples described above include a single item for each candidate provider, other implementations in which multiple items are considered for each candidate provider are also possible. Similarly, other implementations in which no particular items are considered for suggested orders with the candidate providers are also possible.
[00177] The computer system 704 can select a particular candidate order (e.g., provider, provider and item, item) to suggest to the mobile computing device 702, as indicated by step F (728). Such a selection can be based, at least in part, on the confidence values determined by the computer system 704. For example, the computer system 704 can select the candidate order for provider 714a.
[00178] As indicated by step G (730), the computer system 704 can generate a notification 732 for the suggested order to the mobile computing device 702.
In this example, the notification 732 includes information identifying the provider 714a and the food item (coffee). The notification 732 can be any of a variety of appropriate notifications, such as push notifications, text messages, email messages, social network messages, social network posts, voice messages, video messages, and/or other appropriate messages. Although the example here uses food items (e.g., food, beverages) as examples, the system 700 can be applied to other items (e.g., clothing, consumer goods) and with regard to other providers (e.g., retailers).
[00179] The timing for delivery of the notification 732 can be considered by the computer system 704 relative to a variety of factors, such as the estimated time for the provider 714a to prepare the items so that it is available to the user when he/she arrives at the provider 714a, the distance between the current location 708 of the device 702 and the provider 714a's location, and/or factors that may affect the user's arrival at the provider 714a's location (e.g., traffic, inclement weather, available parking, transit schedules and delays). For example, the computer system 704 can deliver the notification 732 to the mobile computing device 702 so that the item can be made available within a window of time in which the user would be expected to arrive at the provider 714a.
[00180] The mobile computing device 702 can receive the notification 732 with the suggested order and can output the notification 732, as indicated by step H (734).
The notification 732 can be output in any of a variety of appropriate ways, such as visually/graphically on a display of the device 702 and/or audibly through speakers accessible to the device 702. An example user interface 736 outputting the notification 732 is depicted. In the example interface 736, suggested order information 738a-b identifying the suggested food item (738a) and the suggested provider (738b) is output, and selectable features 740a-c for the user to initiate actions with regard to the suggested order are output. For instance, the user can select a first selectable feature 740a to place the suggested order, a second selectable feature 740b to indicate that the suggested order was helpful but that the user is not currently interested, and a third selectable feature 740c to indicate that the suggested order (and/or similar suggested orders) should never again be provided on the mobile computing device 702.
[00181] Referring to FIG. 7B, example input for the feature 740a (place order selectable feature) is received by the mobile computing device 702 indicating that the user desires that the suggested order be placed with the provider 714a, as indicated by step I (742). In response to receiving the input, the mobile computing device 702 can provide an order request to the computer system 704, as indicated by step J
(744). The order request can specify the suggested provider 714a and/or the suggested item. The user may be able to deviate from/modify the suggested order using the interface 736, such as switching the suggested order from coffee to tea.
[00182] The computer system 704 can receive the order and initiate fulfilment, as indicated by step K (746). Fulfilment can include processing payment information for the order and/or transmitting the information on the order to a computer system that is associated with the provider 714a. For example, the computer system 704 can provide information for the order to a provider computer system 750 that is associated with the provider 714a, as indicated by step L (748). The provider computer system 750 can manage a variety of details for the provider 714a, such as order processing, inventory management, staffing, payment processing, point of sale terminals, and/or other appropriate features. The provider computer system 750 can enter the order into an order queue for fulfilment by the provider 714a, as indicated by step M (752), and can provide acknowledgement and status information for the order to the computer system 704, as indicated by step N (754). The provider computer system 750 can periodically provide status updates on the order to the computer system 704, such as every seconds, every minute, and/or every time the fulfilment process progresses to a new stage of fulfillment (e.g., building pizza, putting pizza in oven, baking, ready for pickup).
[00183] The computer system 704 can receive the status acknowledgement and status information, and can store information about the order in the historical order data repository 722, as indicated by step 0 (756). These order records can be used to suggest future orders to the user and/or the mobile computing device 702.
[00184] The computer system 704 can provide status information on the order's fulfillment to the mobile computing device 702, as indicated by step P (758).
The mobile computing device 702 can receive and output the order status information, as indicated by step Q (760). For instance, the mobile computing device 702 can output the example user interface 762 that includes information 764 on the status of the order (e.g., acknowledgement that fulfillment has begun, estimated time order will be ready) and selectable features 766a-b for the user to cancel the order (766a) and/or to further modify the order 766b. Selection of either of the features 766a-b can cause the computing device 702 to send updates to the order (cancel, modify) to the computer system 704, which can store the updates in the data repository 722 and can rely the updates to the provider computer system 750.
[00185] FIG. 8 depicts an example system 800 for providing order suggestions to mobile computing devices. The example system 800 can be similar to the system 700 described above with regard to FIGS. 7A-B. The system 800 includes a mobile computing device 802 that receives order suggestions from a computer system over a communications network 806. The mobile computing device 802 and/or the computer system 804 can be similar to the computer system 704.
[00186] The mobile computing device 802 can be similar to the mobile computing device 702 and can be any of a variety of appropriate mobile computing devices, such as a smartphone, a tablet computing device, and/or wearable computing device. The mobile computing device 802 includes a location module 808 that is programmed to determine a current location for the mobile computing device 802. The location module 808 can include and/or access components, such as GPS and/or VVi-Fi components. Locations identified by the location module 808 can be transmitted to the computer system 804 and can be used by the computer system 804 to determine whether to provide order suggestions to the mobile computing device 802.
[00187] The mobile computing device 802 also includes a messaging subsystem 810 that can be programmed to send, receive, output, and/or create messages on the mobile computing device 802. For instance, the messaging subsystem 810 can be text messaging application and/or a push notification subsystem that are running on the mobile computing device 802.
[00188] The mobile computing device 802 can additionally include an order application 812 that is programmed to manage suggested and/or placed orders on the mobile computing device 802. For example, the order application 812 can be, for instance, a mobile app that is programmed to obtain be launched when notifications with suggested orders are received, to output user interfaces on the mobile computing device 802 for a user to view and select responses to the suggested orders, and to transmit order information to the computer system 804. The order application 812 can use an input subsystem 814 and an output subsystem 816 that are part of the mobile computing device 802 to output suggested order (and placed order) information, and to receive user input. The input subsystem 814 can include any of a variety of components through which a user can provide input, such as touchscreens, keyboards, physical buttons, cameras, microphones, accelerometers, gyroscopes, magnetometers, and/or other appropriate input devices. The output subsystem 816 can include any of a variety of components through which a user can provide output, such as displays, speakers, haptic feedback devices, and/or other appropriate output devices.
[00189] The mobile computing device 802 can locally store information that may be used to provide suggested orders, such as historical order information and/or location history information 820. The historical order information 818 can be a log of orders that were placed using the order application 812, other applications, and/or orders that were placed by a user without use of the mobile computing device 802 (e.g., orders placed in person at a provider location, orders placed by phone and/or text message). The location history information 820 can be a log of locations that the mobile computing device 802 has been, including information that can be used to determine routes that the mobile computing device 802 has traveled. With the user's consent, the information 818 and/or 802 can be provided to and used by the computer system 804.
[00190] The mobile computing device 802 includes an input/output (I/O) interface 822 that is configured to transmit and receive information over the network 806. The I/O interface 822 can be any of a variety of appropriate interfaces, such as wired and/or wireless communication interfaces. The network 806 can be any of a variety appropriate communication networks, such as the Internet, wireless networks, wired networks, or any combination thereof.
[00191] The computer system 804 includes a provider identification component 824 that is programmed to identify candidate providers for suggested orders for the mobile computing device 802. For example, the provider identification component 824 can use the location information determined by the location module 808, historical travel information for the mobile computing device 802, and/or provider location information to identify candidate providers to suggest to the mobile computing device 802.
[00192] The computer system 804 additionally includes an order prediction module 826 that is programmed to determine orders to suggest to the user based on confidence values/scores for candidate orders. The order prediction module 826 can use candidate providers identified by the provider identification component 824 to identify orders that may be of interest to a user of the mobile computing device 802.
The order prediction module 826 can make such determinations based on a variety of factors, as discussed above with regard to FIG. 7A. For instance, the order prediction module 826 can use order history information 832 and/or location history information 834 for the mobile computing device 802 and its user to identify providers and candidate items that closely match one or more dimensions of a current context for the mobile computing device 802 and/or the user of the mobile computing device 802, such as the location and/or route of the mobile computing device 802, previous orders that were placed by the mobile computing device 802 (e.g., providers, item ordered, provider type), time and date information (e.g., time of day, day of the week, time of year), and/or external factors (e.g., current weather, traffic).
[00193] The computer system 804 additionally includes a messaging subsystem 828 through which the computer system 804 can transmit notifications for suggested orders. The messaging subsystem 828 can include any of a variety of appropriate messaging systems, such as text messaging platforms, push notification platforms, and/or other appropriate messaging platforms. The computer system can further include an order processing module 830 that can process orders that are placed by the mobile computing device 802, such as suggested orders that the user of the mobile computing device 802 decides to place.
[00194] The order history information 832 and location history information 834 can be included in databases (and/or other data storage systems) that are maintained and/or accessible to the computer system 804. For example, the order history information 832 can include information that is stored as part of the computer system 804 and can also include information that is stored by a third party that provides the computer system 804 with arrPss to the information.
[00195] The computer system 804 also includes an I/O interface 836 that transmit and receive information over the network 806.
[00196] The system 800 can additionally include a provider computer system 838 that can be similar to the provider computer system 750. The provider computer system 838 includes an order management module 840 that is programmed to receive orders, manage the fulfilment of orders (e.g., place in appropriate queues for completion of the order), and communicate status information regarding the orders. The provider computer system additionally includes an I/O interface 842 that can be similar to the I/O
interfaces 822 and 836.
[00197] Although one of each of the entities 802, 804, and 838 is described, the system 800 can include multiples of each of the entities 802, 804, and 838.
Additionally, the modules and components described for the entities 802, 804, and 838 can be implemented in any of a variety of ways, such as through software (e.g., applications, operating system process), hardware (e.g., application specific integrated circuit (ASIC)), firmware, or any combination thereof.
[00198] FIGS. 9A-B are flowcharts of an example technique 900 for providing order suggestions to mobile computing devices. The example technique 900 can be performed by any of a variety of appropriate computer systems and/or computing devices, such as the computer system 704 and/or the computer system 804. In some implementations, the example technique 900 may additionally be performed locally by a mobile computing device, such as the mobile computing devices 702 and/or 802.
[00199] Location information can be received for a mobile computing device (902). For example, the location information can be received by the computer system 804 and can include a variety of details regarding the mobile computing device 802, such as the current location of the mobile computing device 802, a direction/heading for the mobile computing device 802, a rate of speed at which the mobile computing device 802 is travelling, other devices and/or structures that are located nearby the mobile computing device 802, and/or an elevation of the mobile computing device 802 (e.g., floor, distance above or below ground).
[00200] One or more starting locations, destination locations, and/or routes along which the user is travelling or is likely to be travelling within a threshold period of time (e.g., within 5 minutes, 10 minutes, 15 minutes) can be determined based, at least in part, on the received location information and/or historical location information for the mobile computing device (904). For example, the provider identification component 824 of the computer system 804 can identify patterns of movement for the mobile computing device 802 and can compare the patterns to a current context for the mobile computing device 824, which can include the location information (e.g., current location, elevation, direction, speed), the time of day (e.g., morning, afternoon, evening, night), the day of the week (e.g., weekday vs. weekend day), the time of year (e.g., fall, winter, spring, summer), traffic conditions, and/or other appropriate factors. The provider identification component 824 can determine the strength of patterns to determine how well they will indicate future behavior of the user of the mobile computing device 802. For instance, the strength of patterns can be based on the frequency with which the behavior was observed, the frequency with which the user did not adhere to the pattern in spite of the same or similar context existing for the user, and/or how recently the user adhered to the pattern. The provider identification component 824 can use the strength values to determine confidence levels for starting locations, destination locations, and/or routes that are determined for the user and the mobile computing device 802 based on patterns matching (with at least a threshold level of similarity) the current context for the mobile computing device 802.
[00201] For example, assume that the provider identification component 824 identifies a strong pattern for the mobile computing device 802 that include travelling along a subway route on weekday mornings (with little deviation in behavior on weekday mornings), which can be indicated by the mobile computing device 802 travelling between locations along the subway route and being at a below ground elevation. The provider identification component 824 can use this pattern (detected from, for example, historical location information) to determine, with a high level of confidence, a destination location and route for the mobile computing device 802 when it is detected to be at a location along the subway route and at an elevation below ground.
[00202] Locations and routes can be determined with a variety of scales of granularity. For example, the provider identification component 824 may determine locations and routes within a matter of feet or meters, city blocks, neighborhoods, cities, and/or other appropriate levels of granularity. The provider identification component 824 can use zones (e.g., bounded geographic areas) to approximate the location and movements of the mobile computing device 802.

[00203] Order history information for the user can be accessed (906). For example, the order prediction module 826 can access information from the order history information data source 832 and/or can receive order history information from the local order history information 818 on the mobile computing device 802. The order history information can be used by the order prediction module 826 to identify candidate providers and orders that, given the current context for the mobile computing device 802 (e.g., location, time of day), the user of the mobile computing device 802 has at least a threshold likelihood of being interested in and placing.
[00204] The order prediction module 826 can use the order history information to identify order patterns and the strength of those detected patterns, using similar techniques to those described above with regard to determining starting locations, destination locations, and/or routes. For instance, the order prediction module 826 can use the order history to determine order patterns based on a variety of factors, such as the time and date information for orders (e.g., time of day, day of week, time of year), providers with which the orders were placed, provider locations, provider types (e.g., coffee shop, retail, fast food, sit-down restaurant), items that were ordered (e.g., specific food menu items, particular clothing items), types of items that were ordered (e.g., food, dothing), and/or other appropriate factors. The order prediction module 826 can also determine strengths of order patterns to determine how well they will indicate future order behavior of the user of the mobile computing device 802. For instance, the strength of order patterns can be based on the frequency with which the order behavior was observed, the frequency with which the user did not adhere to the order pattern in spite of the same or similar context existing for the user, and/or how recently the user adhered to the order pattern. The order prediction module 826 can use the strength values to determine confidence levels for suggested orders that are determined for the user and the mobile computing device 802 based on order patterns matching (with at least a threshold level of similarity) the current context for the mobile computing device 802.
[00205] The order patterns detected by the order prediction module 826 can have varying levels of detail and can be abstracted/generalized with regard to one or more dimensions of the patterns. Order patterns can be determined to associate specific and/or generic order dimensions. For example, the order prediction module 826 may determine that the user of the mobile computing device 802 has a pattern of ordering coffee (example specific food item) from coffee shops (generic provider type) between 8:00 am ¨ 8:30 am (example specific time window) regardless of the specific provider that is used (orders placed across many different providers). In another example, the order prediction module 826 may determine that the user has a pattern of ordering food items (generic item type) from a particular restaurant (example specific provider) on Fridays (example specific day of the week). In another example, the order prediction module 826 can determine that the user has a pattern of ordering pizza (example specific food item) from a chain of pizza restaurants (example specific provider group).
[00206] External factors for the user and/or the mobile computing device can be identified (908). External factors can indude anything that could potentially influence the user's behavior, such as events going on around or near the mobile computing device (e.g., traffic, weather events) and/or things going on in the user's professional and/or personal life (e.g., events, schedule, exercise, entertainment).
External factors can be determined in any of a variety of appropriate ways, such as through accessing information services (e.g., weather information, traffic information, social network services) from third party computer systems and/or obtaining information from a user's mobile computing device. For example, the computer system 804 can determine external factors for the mobile computing device 802 by accessing information from third party systems and/or obtaining information from the mobile computing device 802, which may obtain the information from communication with third party systems (e.g., social network computer systems, email systems, calendar systems), user input, and/or communication with peripheral devices (e.g., fitness tracker computing devices).
Consent form a user of the mobile computing device 802 may be needed before the computer system 804 is provided with or access to any personal information for the user.
[00207] Current time and date information can be determined (910). For example, the computer system 804 can determine a current time of day, day of the week, month, time of year (e.g., season), and/or other appropriate information related to the current time or date.
[00208] Candidate providers can be identified based on any of a variety of factors, such as the location information, the determined likely destination location and/or route of travel, the order history information, external factors, and/or time/date information (912). For example, the provider identification component 824 can apply information indicating the current context of the mobile computing device 802 (e.g., location information, external factors, time/date information) to the behavior patterns for the user and the mobile computing device 802, such as the travel patterns and order patterns, to identify candidate providers with which the user may have at least a threshold likelihood of placing an order within a threshold period of time (e.g., within the next 5 minutes, 10 minutes, hour, day).
[00209] For instance, the provider identification component 824 can initially identify providers based on the travel patterns for the user by identifying providers that are located within a threshold distance of one or more of: the current location of the mobile computing device 802, a starting location for the mobile computing device 802, a destination location for the mobile computing device 802, and locations along one or more routes from the starting location to the destination location. The provider identification component 824 can cull this set of providers to a group of candidate providers based on order patterns. For example, if the user has a pattern of ordering coffee on weekday mornings from a particular chain of coffee shops and the current time/date information indicates that it is a weekday morning, the provider identification component 824 can reduce the set of candidate providers to those that are part of the particular chain of coffee shops.
[00210] Possible orders from the candidate providers can be identified for the user (914). For example, the order prediction module 826 can compare information about items provided at the candidate providers (e.g., menu of food items, product listing) with the order patterns (and contextual information for the mobile computing device 802) to identify one or more possible items to include in a suggested order to the mobile computing device 802. For example, if the order patterns determined by the computer system 804 indicate that within the current context (e.g., weekday morning) the user typically orders coffee, the order prediction module 826 can identify possible orders with candidate providers who offer coffee on their menus. Candidate orders may include information providers and/or items to be included with the suggested order.
[00211] Confidence values can be determined for the candidate providers and/or the candidate orders (916). For example, the order prediction module 826 can score candidate providers and/or candidate orders based on the likelihood that the user of the mobile computing device 802 will be interested in placing the suggested order.
The confidence values can be based, at least in part, on the strengths for corresponding behavior patterns that were used to identify the candidate providers and/or candidate orders. The confidence values can additionally/alternatively be based, at least in part, on how closely a current context for the mobile computing device matches the behavior patterns. For example, the computer system 804 can determine a high confidence value for a candidate order that was derived from an order pattern that the user has closely adhered to (e.g., pattern of frequent orders by the user) and that the mobile computing device 802 closely matching the order pattern (e.g., location and time of day match with pattern).
[00212] A particular order can be selected from among the candidate orders to provide to the user of the mobile computing device (918). For example, the order prediction module 826 can rank the candidate orders based on their determined confidence values/scores and can select one or more of the orders having the greatest confidence values/scores to provide to the mobile computing device 802.
[00213] In some implementations, the order prediction module 826 can override and/or modify a ranking of candidate orders based on confidence values/scores.
For example, the order prediction module 826 may override/modify the rankings when there is a strong correlations between one or more details of a candidate order and a current context for the mobile computing device 802, such as the mobile computing device 802 being located at a particular location. For instance, the order prediction module 826 can select a candidate order based on the current location of the mobile computing device 802 being a particular location that has a high correlation with a particular provider and/or a particular item in spite of other factors, such as the time of day, indicating that the candidate order may not be the best order to suggest to the user.

[00214] In some implementations, the order prediction module 826 can override and/or modify the rankings for candidate orders based on previous responses from the user of the mobile computing device 802 (and/or other users of other mobile computing devices). For example, the order prediction module 826 can increase the ranking of a candidate order that has been previously suggested on the mobile computing device 802 and that the user accepted (placed the suggested order). In another example, the order prediction module 826 can decrease the ranking of previously provided candidate orders that the user of the mobile computing device 802 ignored or otherwise dismissed.
[00215] In some implementations, the order prediction module 826 can override and/or modify the rankings of candidate orders based on incentives and/or promotions that are being offered by candidate providers. For example, a provider may be willing to offer significant discounts to users who, based on their order history, have never or infrequently visited the providers location. Such incentivized discounts can be of interest to users, who would be more willing to deviate from their behavior pattern for a significant discount. The order prediction module 826 can take into account such incentive/promotional offers and can adjust the rankings for candidate offers (increase the rankings) based on the associated inventive/promotion. For instance, a greater discount on items that are of interest to the user can increase the ranking of a candidate order more than a smaller discount on items that are not likely to be of interest to the user. Similarly, discounts from providers that are located near the current location, destination location, starting location, and/or locations along a route for the mobile computing device 802 can increase the rankings of candidate orders more than discounts from providers that are located further away from one or more of those locations. The order prediction module 826 may also take into account previous user behavior (e.g., placed order, ignored order suggestion) in response to such promotions/incentives being provided as suggested orders.
[00216] Referring to FIG. 9B, a notification can be provided to the mobile computing device with the particular order that was selected (920). For example, the messaging subsystem 828 of the computer system 804 can transmit the selected order to the mobile computing device 802 over the network 806. The message can be transmitted in any of a variety of ways, such as push notifications, emails, text messages, voice messages, and/or other appropriate formats.
[00217] A request to place the particular order can be received from the mobile computing device (922), which can cause fulfillment of the order to be initiated (924).
For example, the order processing module 830 of the computer system 804 can receive the request for the order to be placed and can initiate the order by transmitting information for the order to the provider computer system 838. The order processing module 830 can receive an acknowledgement of the order and status information from the provider computer system 838, and can provide another notification to the mobile computing device 802 indicating that the order is in the process of being fulfilled (926).
The other notification can include information indicating, for example, a status of the order and an estimated time when the order will be ready.
[00218] Information can be received indicating that the order has been fulfilled (928). For example, the order processing module 830 can receive information from the order management module 840 of the provider computer system 838 indicating that the order is ready. In response to receiving the information, a further notification can be provided to the mobile computing device indicating that the order is available (930). For example, the order processing module 830 can use the messaging subsystem 828 to transmit another message to the mobile computing device 802 indicating that the order is available, for instance, for pickup.
[00219] FIG. 10 is a flowchart of an example technique 1000 for receiving and processing order suggestions on a mobile computing device. The example technique 1000 can be performed by any of a variety of appropriate mobile computing devices, such as the mobile computing device 702 and/or the mobile computing device 802.
[00220] A determination can be made of the current location and/or elevation of a mobile computing device (1002). For example, the location module 808 can determine a variety of details regarding the location of the mobile computing device 802, such as the current location, the direction/heading, and/or speed. The location module 808 can additional determine an elevation of the mobile computing device 802, such as through the use of short and medium range wireless signals (e.g., Wi-Fl signals, BLUETOOTH signals) that are detected by the computing device 802.

[00221] Information identifying the current location (and other location and elevation details) can be provided to a computer system (1004). For example, the location module 808 of the mobile computing device 802 can provide the location information to the computer system 804. The location information may be provided based on prior user consent (e.g., consent to a user license agreement), but may not be provided in response to direct user input. For example, a background process may run on the mobile computing device 802 and periodically provide the location information to the system 804 without being specifically prompted to (not in response to) input from a user of the mobile computing device 802.
[00222] A notification can be received with a suggested order for an item from a nearby provider (1006). For example, the messaging subsystem 810 of the mobile computing device 802 can receive a notification from the computer system 804.
The notification can be received without the mobile computing device 802 having received user input specifically requesting the notification or the suggested order.
The notification can be output by the mobile computing device (1008). For example, the order application 812 can use one or more components of the output subsystem 816 to output the notification for the suggested order, as depicted, for example, in FIG. 7A.
[00223] User input can be received selecting a feature to place the suggested order (1010), in response to which a request for the order can be provided to the computer system (1012). For example, input can be received on the mobile computing device 802 through the input subsystem 814, in response to which the order application 812 can provide a request for the order to the computer system 804.
[00224] Another notification indicating ae status of the order can be received (1014) and output on the mobile computing device (1016). For example, the messaging subsystem 810 can receive another notification from the computer system 804 indicating the status of the order (e.g., in process, fulfilled, ready for pickup) and can be output to the user using the output subsystem 816.
[00225] FIG. 11 is a conceptual diagram of an example system 1100 for determining and using intelligent queueing information in the fulfillment of food orders.
The example system 1100 includes an example mobile computing device 1102 that can provide food orders to a computer system 1104, which can determine intelligent queueing information that can be used by an example provider computer system 1106.
[00226] The mobile computing device 1102 can be any of a variety of appropriate mobile computing devices, such as smartphones, tablet computing devices, personal digital assistants (PDA), media players, laptops, wearable computing devices (e.g., GOOGLE GLASS, MICROSOFT HOLOLENS), navigational computing devices (e.g., automobile navigational systems), and/or other appropriate mobile computing devices. The computer system 1104 can be any of a variety of appropriate computer systems, such as server systems, cloud-based computer systems, and/or any other appropriate collection of one or more computing devices. The provider computer system 1106 can be any of a variety of appropriate computer devices and/or systems, and can be similar to the mobile computing device 1102 and/or the computer system 1104. In some implementations, the provider computer system 1106 can include one or more computing devices that are used by a provider to take, fulfill, and manage orders, such as point of sale (POS) terminals, devices for tracking and displaying orders for workers, inventory management systems, and/or other appropriate computing devices.
The provider system 1106 can additionally be part of a network of affiliated provider systems, such as providers that are part of a franchise of providers. The provider computer system 1150 can manage a variety of details for assodated providers, such as order processing, inventory management, staffing, payment processing, point of sale terminals, and/or other appropriate features.
[00227] The mobile computing device 1102, the computer system 1104, and the provider computer system 1106 can communicate over one or more communication networks, such as the internet, wireless networks (e.g., VVi-Fi networks, mobile data networks), local area networks (LAN), wide area network (WAN), virtual private networks (VPN), or any combination thereof.
[00228] An example map 1108 is depicted showing a current location 1110 of the mobile computing device 1102 as it travels along portions a route 1112 in an area with blocks 1114a-n. An example provider 1114m (e.g., restaurants, coffee shops, fast food chains, retailers) is depicted as being at location 1116 of block 1114m.
As indicated by example step A (1118), the mobile computing device 1102 can provide an example food order 1120 to the computer system 1104. As depicted, the example food order 1120 includes example items A and B. The food order 1120 can be provided by the mobile computing device 1102 in response to user input received by the mobile computing device 1102, such as the user entering an order through an application (e.g., mobile app, web browser, web-based application) that is running on the mobile computing device 1102.
[00229] The computer system 1104 can receive the food order 1120 and can perform operations to determine intelligent queue information for the order 1120. For example, the computer system 1104 can determine an estimated time of arrival for the mobile computing device 1102 (and/or a user of the mobile computing device 1102), as indicated by step B (1124). The computer system 1104 can determine the estimated time of arrival based on a variety of factors, such as the current location 1110 of the mobile computing device 1102, the location 1116 of the provider that is going to fulfill the food order 1120, an estimated route 1112 along which the mobile computing device 1102 is likely to travel to the provider's location 1116, an estimated time for the user of the mobile computing device 1102 to travel to the location 1116 along the route 1112, current and/or estimated transit delays 1122 (e.g., traffic, mass transit delays, weather events) along the route 1112, historical travel times for users (e.g., user of the mobile computing device 1102, other users) along the route 1112, historical routes travelled by the user of the mobile computing device 1102, time of day, day of the week, information for the user of the mobile computing device 1102 (e.g., electronic calendar, social media content, electronic messages), and/or other appropriate factors.
[00230] For example, the computer system 1102 can use the current location 1110 of the mobile computing device 1102, the location 1116 of the provider to determine that the mobile computing device 1102, and historical travel patterns for the user (e.g., user generally drives car at the current time of day, user prefers city streets to highways, user has previously travelled between the locations 1110 and 1116 using the route 1112) is likely (e.g., at least threshold probability, route with top ranked probability) to travel along the route 1112. The computer system 1102 can then determine a base travel time between the locations 1110 and 1116 along the route 1112. Such a determination can be based on characteristics for the route 1112 (e.g., speed limits, number of stop lights, number of stop signs) and/or historical travel times along the route 1112 (e.g., historical travel times for the user, historical travel times at a similar time of day and day of the week, historical travel times using the same or similar mode of transportation, historical travel times under similar travel conditions). The computer system 1104 can augment the base travel time based on events that are occurring along the route 1112 that may affect, positively or negatively, the travel time along the route 1112, such as traffic delays, light traffic conditions, weather delays, and/or mass transit (e.g., bus, subway) delays. For instance, in the depicted example the computer system 1102 can determine a base travel time for the mobile computing device 1102 of 15 minutes, but may increase the travel time by 5 minutes based on the transit delay 1122 that is depicted along the route 1112, to generate the example estimated time of arrival 1126.
[002311 A variety of data sources can be accessed by the computer system 1104 to estimate the time of arrival for the mobile computing device 1102, such as electronic map and route data sources, traffic data sources, location data sources, historical location and travel data sources, weather data sources, user information sources, and/or other appropriate data sources. Such data sources may be maintained by the computer system 1104, the mobile computing device 1102, and/or other third party computer systems. A user of the mobile computing device 1102 may need to grant permission to the computer system 1104 to access one or more of the data sources.
[002321 For example, in some implementations the mobile computing device 1102 can determine its current geographic location and provide it to the computer system 1104 in association with the food order 1120. A user of the mobile computing device 1102 may need to have authorized (e.g., standing authorization, one-off authorization) the transmission of the location information to the computer system 1104.
The mobile computing device 1102 can use any of a variety of appropriate techniques to determine its geographic location, such as GPS techniques, VVi-Fi signals, cellular triangulation, beacon signals, user input, or any combination thereof. The location information that is determined by the mobile computing device 1102 can be any of a variety of information that can, with at least a minimum level of granularity, identify the location 1110, such as GPS coordinates, the identities of nearby computing devices (e.g., VVi-Fi routers, cell towers), and/or a physical address of the location 1110 (e.g., street address, zip code, city).
[00233] In some implementations, the location 1110 of the mobile computing device 1102 is determined by a system that is remote from the mobile computing device 1102, such as a data or cellular network provider that is able to triangulate the location 1110 through the use of a grid of transceivers located near or around the location 1110.
A user of the mobile computing device 1102 may provide authorization for the computer system 1104 to have access to this location information that is determined by a remote system.
[00234] The computer system 1104 can additionally determine other intelligent queue information. For example, the computer system 1104 can determine details regarding fulfillment of the items in the order 1120, as indicated by step C
(1128), such as timing when the provider should begin preparing food order 1120 and/or its component parts (e.g., items A and B) so that the food order 1120 is ready when the user of the mobile computing device 1102 arrives at the provider's location 1116. The computer system 1104 can determine fulfillment details based on any of a variety of factors, such as the estimated time of arrival 1126, estimated lengths of time that it will take the provider to prepare the food order 1120 and/or its component parts (e.g., items A and B), the provider's current order queue that is being fulfilled by the provider, estimated/expected additional orders that the provider will receive with a threshold amount of time, historical food order fulfillment times, historical staffing levels at the provider as correlated with historical food order fulfillment times, current staffing levels at the provider, and/or other appropriate factors.
[00235] For example, the computer system 1104 can take determine a base time to prepare each of the items in the food order 1120 and can augment that base time in response to factors that would increase or decrease the amount of time required for the provider to fulfill the food order. For instance, the provider can have a list of standard fulfillment times for each of the items that the provider offers and the provider can provide the computer system 1104 with access to that list. The computer system 1104 can identify fulfillment times for the items included in the food order 1120 and determine a base fulfillment time. The computer system 1104 can then increase or decrease the fulfillment times for the food order 1120 based on any of a variety of factors that may positively or negatively impact fulfillment times, such as current order volume and staffing levels at the provider. The computer system 1104 can determine a single estimated fulfillment time for the food order 1120 and/or individual estimated fulfillment times for each of the items included in the order 1120. For example, fulfillment times of 10 minutes and 15 minutes can be determined for the items A and B, respectively, which can indicate that it is likely to take the provider 10 minutes to fulfill item A and 15 minutes to fulfill item B.
[00236] Any of a variety of data sources can be used by the computer system 1104 to determine the fulfillment times, such as a standard fulfillment time data source, a current order volume data source, a current staffing level data source, and/or other appropriate data sources. The data sources can be maintained by the computer system 1104, the provider computer system 1106, and/or other third party computer systems.
Access to the data sources by the computer system 1104 can be local and/or remote.
[00237] The computer system 1104 can additionally combine the estimated fulfillment times with the estimated time of arrival to identify one or more future times at which the provider should begin preparing the food order 1120. The future times can be determined in a variety of ways. For example, the computer system 1104 subtract the fulfillment times from the estimated time of arrival to determine the future times. Using the example above, that means that fulfillment of item A should be scheduled to begin in minutes (20 minute estimated time of arrival ¨ 10 minute fulfillment time for item A) and that fulfillment of item B should be scheduled to begin in 5 minutes (20 minute estimated time of arrival ¨ 15 minute fulfillment time for item B), as indicated by example future fulfillment times 1130. Such fulfillment times can be correlated to actual times based on the current time. For instance, if the current time is 5:00 pm, then fulfillment of item A can be scheduled for 5:10 pm and fulfillment of item B can be scheduled for 5:05 pm.
[00238] The computer system 1104 can provide the food order along with the fulfillment details (e.g., estimated time of arrival, future times for fulfillment to begin) to the provider computer system 1106, as indicated by step D (132). The provider computer system 1106 is programmed to process the order and fulfillment details, as indicated by step E (134). Processing the order and fulfillment details can include inserting the food order 1120 (and/or its component parts) into one or more appropriate locations in one or more order queues that are used by the provider computer system 1106. For example, the provider may have separate cold and hot food preparation stations that each have different queues, and may have a beverage station that has another separate order fulfillment queue. For example, the computer system 1106 can be programmed to position the items A and B from the food order 1120 at appropriate locations in the queue(s), which may involve placing the items A and B ahead of other items that were received with orders placed before the food order 1120 but which have later fulfillment times.
[00239] An example order queue 1136 is depicted. In this example, a first order with one item (item C) is depicted as being currently undergoing fulfillment for a customer who is already present at the provider's location 1116; the food order 1120 is depicted next with the items A and B along with the estimated time of arrival (20 minutes) and the future preparation times (10 minutes for item A and 5 minutes for item B); and another food order for a customer that is estimated to arrive in 30 minutes for an order that includes item D, for which preparation should begin in 25 minutes.
The food order 1120 can be positioned above the last food order, even though the food order 1120 may have been received after the bottom food order based on the estimated times of arrival and/or the times at which fulfillment should begin. The items in the queue 1136 can be ordered by the provider computer system 1106 in chronological order so that a worker can simply fulfill items in the order presented (and at the times identified) to ensure appropriate and timely fulfillment of the orders. For example, the item B is ordered above the item A within the food order 1120 based on item B needing to begin being fulfilled sooner (in 5 minutes of the current time) than item B (in 10 minutes of the current time).
[00240] In some implementations, the provider computer system 1106 may receive only the estimated time of arrival from the computer system 1104 and may determine the fulfillment details and appropriately order the items within the order queue 1136. In other implementations, the computer system 1106 may order the food orders in the queue 1136 based only on the estimated time of arrival. In some implementations, the provider computer system 1106 may receive both estimated times of arrival and fulfillment details, and may augment the fulfillment details based on information that is accessible to the computer system 1106, such as current order volume and/or current/projected staffing levels at various times.
[00241] The provider computer system 1106 can provide status information for fulfillment of the order to the computer system 1104, as indicated by step F
(138). The status information can include a variety of information regarding fulfillment of the order 1120, such as confirmation that the food order 1120 has been received by the provider, confirmation that the provider has scheduled the food order 1120 for fulfill at the estimated time of arrival for the user of the mobile computing device 1102, and/or information on future times when fulfillment is scheduled to begin (e.g., as determined and/or modified by the computer system 1106).
[00242] The computer system 1104 can receive the status information, store it, and provide it to the mobile computing device 1102, as indicated by step G
(140).
[00243] The mobile computing device 1102 can receive the status information and can output it, as indicated by step H (142). For example, the mobile computing device 1102 can output a user interface 1144 that can include the status information as well as one or more control features through which a user can further modify/cancel details regarding the order 1120. For instance, the interface 1144 includes first information 1146 indicating that the food order 1120 has been received by the provider, second information 1148 indicating the estimated time when the user will arrive at the provider's location 1116, a first user control feature 1150 that a user can select to change/designate a time of arrival at the provider's location 1116 (e.g., override the automatically determined estimated time of arrival), third information 1152 indicating when preparation of the items in the food order 1120 is scheduled to begin (and/or indicating whether preparation/fulfillment has begun), a second control feature 1154 that a user can select to modify the food order 1120, and a third control feature 1156 that a user can select to cancel the food order 1120. Other information and/or control features can also be presented.

[00244] Selection one or more of the control features 1150, 1154, and 1156 can cause the mobile computing device 1102 to transmit a request that corresponds to the selected feature and that is associated with the food order 1120 to the computer system 1104. Such a request can cause the computer system 1104 to re-perform one or more of the steps B-D (1124, 1128, 1132) based on the request, and can cause the provider computer system 1106 to repeat one or more of the steps E-F (134, 1138) based on the request. For example, selection and input of schedule information using the feature 1150 to change the schedule (e.g., make the time of arrival earlier, make the time of arrival later) can be relayed to the computer system 1104, which re-perform step C
(1128) to determine updated fulfillment details based on the arrival time designated by the user of the mobile computing device 1102. This can, in turn, cause the computer system 1104 to provide updated fulfillment details to the computer system 1106, which can use the updated arrival time and updated fulfillment details to appropriately update the order queue 1136 and corresponding fulfillment of the order 1120.
Similarly, selection of the feature 1154 to modify the order (e.g., add items, remove items, change quantities and/or options) can cause the computer system 1104 to re-perform the step C (1128), which can cause the computer system 1106 to re-perform step E (134).

Selection of the feature 1156 can be received by the computer system 1104 and forwarded to the computer system 1106, which can cause the computer system 1106 to remove the food order 1120 from the order queue 1136 and to stop fulfillment of the order 1120.
[00245] In some implementations, the mobile computing device 1102 and/or the computer system 1104 are programmed to restrict schedule changes, order modifications, and/or order cancellations through the control features 1150, 1154, and 1156, respectively, to instances when the provider has not yet begun fulfilling the food order 1120 (or has progressed less than a threshold amount through fulfillment of the food order 1120). In some implementations, use of the control features 1150, 1154, and 1156 that may cause fulfillment of the order to not be completed by the time the user is estimated to arrive at the provider's location 1116, such as moving-up the time of arrival, can cause the mobile computing device 1102 to output a warning in the user interface 1144 regarding the effects of the requested change. A user may be able to dismiss such a warning and proceed, or may be able to cancel the proposed action before it is transmitted to the computer system 1104 and/or the computer system 1106.
[00246] The computer system 1104 can additionally receive location updates for the mobile computing device 1102 as it travels to the provider's location 1116 and, as appropriate, can re-perform steps B-D (1124, 1128, and 1132), which can cause the provider computer system 1106 to re-perform steps E-F (134, 1138). For example, if the computer system 1104 determines that the estimated time of arrival has deviated by at least a threshold amount of time (e.g., changed by more than 1 minute, 2 minutes, 5 minutes, 10 minutes) based on the movement of the mobile computing device 1102 (e.g., not tracking estimated progress along the route 1112, deviation from route 1112), then the computer system 1104 can update the estimated time of arrival (step B, 1124) and the fulfillment details (step C, 1128), which can be provided to the provider computer system 1106 (step D, 1132) and used by the provider computer system to update the order queue 1136 and fulfillment of the food order 1120 (step E, 1134).
Additionally, such detected deviations that are likely to affect fulfillment of the food order 1120 can be relayed by the computer system 1104 to the mobile computing device 1102, such as warnings that the deviation will cause the food order 1120 to be fulfilled at least a threshold amount of time before the user arrives at the location 1112 and/or control features through which the user can cancel the order (e.g., control feature 1156), designate a specific arrival time (e.g., control feature 1150), change from pickup/dine-in to delivery for the food order 1120, and/or select a different provider to fulfill the order (e.g., provider closer to the current location of the mobile computing device 1102).
[00247] Warnings can also be provided to the mobile computing device 1102 when the computer system 1104 determines that the estimated time of arrival is less than the fulfillment time for the food order 1120. Similar warnings/options can be provided to the mobile computing device 1102 as discussed in the previous paragraph in such instances (e.g., cancel order, proceed with order even though food order 1120 will not be ready at arrival, designate specific arrival time, change to delivery, switch providers).
[00248] In some implementations, a user who places the food order 1120 can be different from the user who is associated with the mobile computing device 1102 that is travelling to the provider's location 1116. For example, a user who places the order may be able to provide a unique identifier (e.g., email address, telephone number, social network identifier, username) for another user and/or mobile computing device that will be travelling to the provider's location 1116, and the location of that mobile computing device can be used by the computer system 1104 to determine the estimated time of arrival and fulfillment details.
[00249] FIG. 12 depicts an example system 1200 for providing intelligent queueing information for food orders to provider computer systems. The example system 1200 can be similar to the system 1100 described above with regard to FIG. 11.
The system 1200 includes a mobile computing device 1202 that provides orders to a computer system 1204, which determines fulfillment details and estimated times of arrival, and communicates them to a provider computer system 1206 over a communications network 1207. The mobile computing device 1202 and/or the computer system 1204 can be similar to the mobile computing device 1102 and/or the computer system 1104, respectively.
[00250] The mobile computing device 1202 can be similar to the mobile computing device 1102 and can be any of a variety of appropriate mobile computing devices, such as a smartphone, a tablet computing device, and/or wearable computing device. The mobile computing device 1202 includes a location module 1208 that is programmed to determine a current location for the mobile computing device 1202. The location module 1208 can include and/or access components, such as GPS and/or Wi Fl components. Locations identified by the location module 1208 can be transmitted to the computer system 1204 and can be used by the computer system 1204 to determine whether to provide order suggestions to the mobile computing device 1202.
[00251] The mobile computing device 1202 also includes a messaging subsystem 1210 that can be programmed to send, receive, output, and/or create messages on the mobile computing device 1202. For instance, the messaging subsystem 1210 can be text messaging application and/or a push notification subsystem that are running on the mobile computing device 1202. The computer system 1204 may communicate some order information and/or fulfillment details (e.g., warnings) to the mobile computing device 1202 via text messages.

[00252] The mobile computing device 1202 can additionally include an order application 1212 that is programmed to manage placed orders on the mobile computing device 1202. For example, the order application 1212 can be, for instance, a mobile app that is programmed to receive food orders, transmit them to the computer system 1204, and present status information for the orders, such as in the example user interface 1144. The order application 1212 can use an input subsystem 1214 and an output subsystem 1216 that are part of the mobile computing device 1202 to receive orders and output order information and updates. The input subsystem 1214 can include any of a variety of components through which a user can provide input, such as touchscreens, keyboards, physical buttons, cameras, microphones, accelerometers, gyroscopes, magnetometers, and/or other appropriate input devices. The output subsystem 1216 can include any of a variety of components through which a user can provide output, such as displays, speakers, haptic feedback devices, and/or other appropriate output devices.
[00253] The mobile computing device 1202 can locally store information that may be used to determine and provide intelligent queueing information, such as user information 1218 and/or location history information 1220. The user information 1218 ca include information about a user that may indicate any of a variety of details that may inform routes and/or travel patterns that a user may use, such as social network information (e.g., comments, posts), electronic calendar information, transit purchase history, and/or other appropriate factors. The location history information 1220 can be a log of locations that the mobile computing device 1202 has been, including information that can be used to determine routes that the mobile computing device 1202 has traveled. With the user's consent, the information 1218 and/or 1202 can be provided to and used by the computer system 1204.
[00254] The mobile computing device 1202 includes an input/output (I/O) interface 1222 that is configured to transmit and receive information over the network 1206. The I/O interface 1222 can be any of a variety of appropriate interfaces, such as wired and/or wireless communication interfaces. The network 1207 can be any of a variety appropriate communication networks, such as the intemet, wireless networks, wired networks, or any combination thereof.

[00255] The computer system 1204 includes a location module 1224 that is programmed to determine and track the location of the mobile computing device when orders are submitted and as the mobile computing device 1202 travels to provider locations. The location module 1224 can additionally be programmed to determine routes along which the mobile computing device 1202 is likely to travel, and to detect deviations from the estimated routes and/or progression along those routes.
For example, the location module 1224 can use the location information determined by the location module 1208, historical travel information for the mobile computing device 1202, and/or provider location information to identify candidate routes along which the mobile computing device 1202 is likely to travel to a providers location.
[00256] The computer system 1204 additionally includes an arrival estimation module 1226 that is programmed to determine estimated times when the mobile computing device 1202 will arrive at a providers location (similar to step B, 1124). The arrival estimation module 1226 can use any of a variety of appropriate factors to make such determinations, such as the estimated routes, location history information 1220 for the mobile computing device 1202, historical travel data 1232 (for the user of the mobile computing device 1202 and/or other users), route data 1234, and/or traffic data 1236.
Other data sources and information can also be used, such as time and date information (e.g., time of day, day of the week, time of year), and/or external factors (e.g., current weather).
[00257] The computer system 1204 additionally includes a fulfillment planning subsystem 1228 that is programmed to determine fulfillment details for food orders (similar to step C, 1128). The fulfillment planning subsystem 1228 can determine fulfillment details based on any of a variety of appropriate factors, such as standard fulfillment information for providers 1238 and/or provider data 1240 that can indicate current volumes of orders and/or staffing at providers. Other factors are also possible.
[00258] The computer system 1204 can further include an order processing module 1230 that can process orders that are placed by the mobile computing device 1202, such as orders placed by a user of the mobile computing device 1202 and that are then provided to the provider computer system 1206 with fulfillment details and estimated arrival information. The order processing module 1230 can store and track order data 1242, which may be modified and/or cancelled at a later time by users.
[00259] The computer system 1204 also includes an I/O interface 1244 that transmit and receive information over the network 1206.
[00260] The system 1200 additionally includes a provider computer system 1206 that can be similar to the provider computer system 1106. The provider computer system 1206 includes an order management module 1246 that is programmed to receive orders, manage the fulfilment of orders (e.g., place in appropriate queues for completion of the order, order queues according to fulfillment details and/or estimated times of arrival), and communicate status information regarding the orders.
The provider computer system additionally includes an I/O interface 1248 that can be similar to the I/O interfaces 1222 and 1244.
[00261] Although one of each of the entities 1202, 1204, and 1206 is described, the system 1200 can include multiples of each of the entities 1202, 1204, and 1206.
Additionally, the modules and components described for the entities 1202, 1204, and 1206 can be implemented in any of a variety of ways, such as through software (e.g., applications, operating system process), hardware (e.g., application specific integrated circuit (ASIC)), firmware, or any combination thereof.
[00262] FIGS. 13A-D are flowcharts of an example technique 1300 for determining and providing intelligent queueing information to provider computer systems. The example technique 1300 can be performed by any of a variety of appropriate computer systems and/or computing devices, such as the computer system 1104 and/or the computer system 1204. In some implementations, the example technique 1300 may additionally be performed locally by a mobile computing device, such as the mobile computing devices 1102 and/or 1202.
[00263] Referring to FIG. 13A, food orders can be received (1302). For example, the interface 1244 of the computer system 1204 can receive a food order from the mobile computing device 1202. In response to receiving the food order, a current location of the mobile computing device can be determined (1304), a location of a particular provider identified in the food order can be identified (1306), a plurality candidate routes for travelling between the two locations can be identified (1308), and an estimated route that the user is most likely to use to travel between the locations can be selected (1310). For example, the location module 1224 of the computer system 1204 can determine the locations, identify a number of possible candidate routes that the user could take to travel between the locations, and, based on a variety of factors (e.g., historical travel information for the user, historical travel information for other users), can select a particular route that appears to be the route the user is most likely to take.
[00254] Transit delays can be identified (1312), historical travel times can be identified (1314), and an estimated time of arrival for the user at the location of the particular provider can be determined (1316). For example, the arrival estimation module 1226 of the computer system can access traffic data 1236 and historical travel information 1232 for the estimated route, and can determine an estimated time when the mobile computing device 1202 will arrive at the location of the particular provider.
[00265] Fulfillment time periods can be identified (1318), current orders that are pending with the particular provider can be accessed (1320), and future times at which the provider is to begin fulfilling the order can be determined (1322). For example, the fulfillment planning subsystem 1228 of the computer system 1228 can access fulfillment information 1238 that indicates standard times to fulfill items contained within the order, provider data 1240 that indicates the current status of one or more order queues used by the particular provider, and can determine one or more future times at which items and/or the order in its entirety should be scheduled for fulfillment by the particular provider to ensure that it is available within a threshold period of time of the user arriving at the provider's location.
[00266] Food order instructions can be generated (1324) and provided to a provider computer system (1326). For example, the order processing module 1230 of the computer system 1204 can collect the estimated arrival information and the fulfillment details (e.g., future times) and can provide them to the provider computer system 1206.
[00267] Updated location information for the mobile computing device can be received (1328) and an updated time of arrival can be determined (1330). For example, the location module 1224 of the computer system 1204 can track the progression of the mobile computing device 1202 as it travels to the provider's location and can update the estimated time of arrival based on the progress made toward the provider's location.
Such updated arrival information can be used to determine whether the mobile computing device 1202 is ahead of schedule, on schedule, or behind schedule, and can be used to inform the provider computer system 1206 as to adjustments that should be made to the fulfillment of the food order (e.g., hold on fulfillment for a period of time longer, rush fulfillment of food order), and/or to inform the mobile computing device 1202 its travel progress will have on the order being fulfilled upon arrival at the providers location.
[00268] FIGS. 13B-D depict different portions of the technique 1300 that can be performed alone or together based on the updated time of arrival information.
FIG. 13B
depicts a portion of the technique 1300 that involves providing updated food order instructions. FIG. 13C depicts a portion of the technique 1300 that involves a food order having already begun being fulfilled. FIG. 13D depicts a portion of the technique 1300 that involves selecting an alternate provider to fulfill the food order. The portions of the technique 1300 in FIGS. 13B-D can be performed in various combinations, such as through combining their subparts with each other.
[00269] Referring to FIG. 13B, a determination of whether the updated time deviates by more than a threshold amount (e.g., 1 minute, 2 minutes, 5 minutes) from the original time estimate can be made (1332). For example, the arrival estimation module 1226 can determine whether the updated time of arrival has deviated from the original estimate by a sufficient amount so as to warrant updating the future times and food order instructions provided to the provider computer system 1206. In response to determining that the time of arrival has deviated by at least a threshold amount, a updated future times can be determined (1334), such as by the fulfillment planning subsystem 1228; updated food order instructions can be generated (1336) and provided to the provider computer system (1338), such as by the order processing module 1230.
[00270] Referring to FIG. 13C, a determination can be made as to whether fulfillment of the food order by the provider has begun (1340). For example, the order processing module 1230 can poll the provider computer system 1206 to obtain status information for the order, including information indicating whether fulfillment has begun.

In another example, the order processing module 1230 can determine whether the provider has begun fulfilling the order based on a comparison of the current time and the future times that were determined by the fulfillment planning system 1228 and provided to the provider computer system 1206. In response to determining that the fulfillment has begun, a notification can be provided to the mobile computing device (1342) and/or options to modify/cancel the order can be provided (1344). Steps and/or 1344 may be performed in response to determination that the time of arrival has deviated from the originally estimated time of arrival (e.g., step 1332).
Modification of the order can be received (1346), future times for fulfillment of the modified portions of the order can be determined (1348), and provided to the provider computer system (1350). For example, the fulfillment planning system 1228 can determine updated future times for fulfilling the modified order and the order processing module 1230 can provide the updated future times to the provider computer system 1206.
[00271] Steps 1342-350 can be performed at any of a variety of other parts of the technique 1300. For example, steps 1342-350 may be performed after step 1326.
Other locations for the performance of steps 1342-350 are also possible.
[00272] Referring to FIG. 13D, a determination is made as to whether to suggest another provider to fulfill the order (1352). For example, if the mobile computing device 1202 has deviated so far off course that it is now located closer to a different provider that could fulfill the order (e.g., another restaurant that is part of a chain of restaurants with which the order was placed), the computer system 1204 can determine that it is appropriate to suggest the different provider. An alternate provider can be selected (1354) and information about the alternate provider can be provided to the mobile computing device (1356). In response, a request to change from the particular provider to the alternate provider for fulfilling the order can be received (1358) and instructions can be provided to both the particular provider (1360) and the alternate provider (1362) regarding the change.
[00273] FIGS. 14A-B a flowchart of example techniques 1400 and 1450 for using intelligent queueing information to fulfill food orders from a customer device perspective and a provider computer system perspective, respectively. The example technique 1400 can be performed by any of a variety of appropriate mobile computing devices, such as the mobile computing device 1102 and/or the mobile computing device 1202. The example technique 1450 can be performed by any of a variety of appropriate provider computer systems, such as the provider computer system 1106 and/or the provider computer system 1206.
[00274] Referring to FIG. 14A, a user interface for placing food order can be output (1402), input designating a food order can be received (1404), and order information can be provided to a computer system (1406). For example, the order application 1212 can use the input subsystem 1214 and the output subsystem 1216 to provide a user interface through which items can be selected for a food order and submitted by a user of the mobile computing device 1202. In response to placing the order, information identifying an estimated time when the order will be ready/fulfilled by the provider can be received (1408) and output (1410).
[00275] As the mobile computing device travels to the provider's location, location updates can be provided to the computer system (1412), which can be used by the computer system (e.g., computer system 1204) to determine whether updates to any of the determined estimates are needed. Status information can be received (1414) and output (1416), such as in the example user interface 1144 presented with mobile computing device 1102. Instructions to modify and/or cancel the order can be received (1418) and provided to the computer system (1420).
[00276] Referring to FIG. 14B, order information and fulfillment details can be received (1452). The order information and fulfillment details can be processed to determine appropriate locations in one or more queues for the order and/or items included in the order (1454). For example, the order management module 1246 can determine that the a some items from received order should be positioned near the front of a hot food queue and that the remaining items should be positioned at the back of a cold food queue based on the time of arrival of the customer and/or the future fulfillment times for the items and/or the order as determined by the computer system 1204. The order can be inserted at appropriate locations within the one or more queues (1456) and the display of the queues that is provided by the provider to its workers can be updated (1458). With the order initially processed, the provider computer system can report the status (e.g., order received, slotted into queue(s), fulfillment at estimated arrival on track) to the computer system (1460).
[00277] Updated order and/or fulfillment details can be received (1462). For example, the computer system 1204 can provide updates based on movement of the mobile computing device 1202 (e.g., travelling ahead of schedule, travelling behind schedule) and/or based on explicit input from the user (e.g., designate particular pickup time, modify order). The queue(s) can be updated, as needed, based on the received update information and can be displayed (1464).
[00278] Notification can be received that the order has been fulfilled (1466).

For example, a worker may provide input (e.g., clear out order) that indicates that the order has been fulfilled, and the order management module 1248 can receive the input.
Notification can also be received that the customer has retrieved the order (1468). For example, a point of sale terminal can process payment for the order and provide notification that the order has been picked up by the customer. Status information regarding the fulfillment and/or pickup of the order can be provided to the computer system (1470).
[00279] FIG. 15 is a block diagram of an example system 1500. Briefly, and as described in further detail below, the system 1500 may include a location determinator 1502, smart appliances 1510, a mobile application 1512, a web application 1514, a text or short message service (SMS) application 1516, a voice interface 1518, an ordering backend 1520, call center workstations 1522, local fulfillment center workstations 1530, and a supply chain, finance, or enterprise component 1540. The system 1500 may provide for real time delivery of an item. Real time delivery may include point-to-point delivery of small, tangible, purchased goods within a very short period of time of purchase, e.g., few minutes to a few hours. Purchased goods may include typical packaged goods that do not otherwise require real-time delivery, e.g., consumer electronics or office supplies, goods that degrade over a long period of time, e.g., groceries or flowers, or goods that degrade within a very short period of time, e.g., dry ice, ice cream, hot pizza or a cup of coffee.
[00280] The location determinator 1502 may determine location information for a customer. For example, the location determinator 1502 may determine a customers location based on or more of a service set identifier (SSID) of a nearby detected wireless network, a detected phone mast signal, determined global positioning system (GPS) information, an assigned Internet Protocol (IP) address, a landline location, or a wireless media access control (MAC) address. The location determinator 1502 may provide the location information to the smart appliances 1510, the mobile application 1512, the web application 1514, the text or short message service (SMS) application 1516, and the voice interface 1518. In some implementations, the location determinator 1502 may be included in the user device 110 of FIG. 1.
[00281] The smart appliances 1510, the mobile application 1512, the web application 1514, the text or short message service (SMS) application 1516, and the voice interface 1518 may enable a customer to place an order. For example, one or more of the smart appliances 1510, the mobile application 1512, the web application 1514, the text or short message service (SMS) application 1516, and the voice interface 1518 may enable a customer to place an order for a cheese pizza to be delivered to the customer's home address at 6:00 PM. To enable customers to place orders, the smart appliances 1510, the mobile application 1512, the web application 1514, the text or short message service (SMS) application 1516, and the voice interface 1518 may provide interfaces through which the customer may specify a particular item to order, and a particular location for which the customer would like to obtain the item. For example, the smart appliances 1510, the mobile application 1512, the web application 1514, the text or short message service (SMS) application 1516, and the voice interface 1518 may visually or audibly provide prompts to the customer requesting that the customer specify a particular item to order, a particular location to receive the item, and a particular time to receive the item.
[00282] More specifically, the smart appliances 1510 may be appliances that may be used to place orders. For example, the smart appliances 1510 may include a television that may be used by a customer to place an order for a pizza. The smart appliances 1510 may provide an interface for a customer to place an order. For example, the smart appliance 1510 may include a display that may render an interface for the customer to order a pizza. The smart appliances 1510 may provide orders to an ordering backend 1520. For example, the smart appliances 1510 may provide an order for a pizza through a network to the ordering backend 1520.
[00283] The mobile application 1512 may be an application running on a mobile device that enables a customer to place an order. For example, an application running on a customer's smart phone may enable the customer to place an order for pizza. A
mobile device may include a smart phone, a tablet computer, or some other type of computing device that may be portably used. The mobile application 1512 may provide an interface fora customer to place an order. For example, the mobile application 1512 may display on the mobile device an interface for the customer to order a pizza. The mobile application 1512 may provide orders to an ordering backend 1520. For example, the mobile application 1512 may provide an order for a pizza through a network to the ordering backend 1520. In some implementations, the mobile application 1512 may be an application installed on the user device 110 of FIG. 1.
[00284] The web application 1514 may be an application accessible through a web browser running on a computing device, where the application enables a customer to place an order. For example, a Java application may be rendered by a web browser on a desktop computer and enable a customer to place an order for pizza. A
computing device may include a mobile device, a desktop computer, a laptop computer, or some other type of device that computes. The web application 1514 may provide an interface for a customer to place an order. For example, the web application 1514 may display an interface, in a web browser on a desktop computer, for the customer to order a pizza. The web application 1514 may provide orders to an ordering backend 1520. For example, the web application 1514 may provide an order for a pizza through a network to the ordering backend 1520. In some implementations, the web application 1514 may be accessed by a web browser on the user device 110 of FIG. 1.
[00285] The text or SMS application 1516 may be an application running on a mobile device that enables a customer to place an order by text or SMS. For example, an application running on a customer's smart phone may enable the customer to send a text or SMS message to the ordering backend 1520 to place an order for pizza.
In some implementations, the application may provide a graphical user interface for the user to select a particular item, particular location, and a particular time to receive the item, and generate a SMS message indicating the selections and provide the SMS

message to the ordering backend 1520. In some implementations, the test or SMS

application 1516 may be running on the user device 110 of FIG. 1.
[00286] The voice interface 1518 may be an interface that enables a customer to place an order by voice. For example, the voice interface 1518 may be a telephone that a customer may use to verbally order a pizza. The voice interface 1518 may communicate with the call center workstations 1522. For example, the voice interface 1518 may transmit audio captured by the voice interface 1518 to the call center workstations 1522, and similarly, output audio from the call center workstations 1522.
The voice interface 1518 may additionally or alternatively communicate with a local voice-based order taking component 132 of a local fulfillment center workstation 1530.
For example, the voice interface 1518 may transmit audio captured by the voice interface 1518 to the local voice-based order taking component 132, and similarly, output received audio from the local voice-based order taking component 132.
In some implementations, the voice interface 1518 may be included in the user device 110 of FIG. 1.
[00287] The call center workstations 1522 may receive voice input from the voice interface 1518, generate orders based on the voice input, and provide the orders to the ordering backend 1520. For example, the call center workstations 1522 may audibly output voice input from the interface 1518 to allow customer service representatives to verbally interact with customers, and generate orders for the customers. In some implementations, the call center workstations 1522 may be automated and use speech recognition to generate orders for users. For example, the call center workstations 1522 may execute an Artificial Intelligence customer service agent program that may verbally speak to the customer to take the order and place the order directly for the customer.
[00288] The ordering backend 1520 may be a component that processes orders from customers. For example, the ordering backend may receive orders from the smart appliances 1510, mobile application 1512, web application 1514, text or SMS

application 1516, the voice interface 1518, or the call center workstations 1522. The ordering backend 1520 may process orders based on determining, for each order, one or more local fulfillment center workstations 1530 to receive the order. For example, the ordering backend 1520 may determine that a first order for a pizza should be provided to a first local fulfillment center workstation and a second order for a pizza should be provided to a different, second local fulfillment center workstation. In some implementations, the ordering backend 1520 may be the server 120 of FIG. 1.
[00289] The ordering backend 1520 may determine a local fulfillment center workstation to receive a particular order based on a location which the customer would like to obtain the item ordered. For example, the ordering backend 1520 may determine that a first order indicates the order is to be obtained at a location where the distance from the location to the local fulfillment center is within a distance threshold, and in response, determine to provide the first order to a workstation of the local fulfillment center. In another example, the ordering backend 1520 may determine that a second order is to be obtained at a location where the distance from the location to the local fulfillment center exceeds a distance threshold, and in response, determine the second order should be provided to a workstation of another local fulfillment center.
[00290] Additionally or alternatively, the ordering backend 1520 may determine a local fulfillment center workstation to receive a particular order based on availability of the local fulfillment center to fulfill the order. For example, the ordering backend 1520 may determine that a first order for a pizza can be fulfilled by a local fulfillment center as the local fulfillment center may still have capacity to provide the pizza. In another example, the ordering backend 1520 may determine that a second order for a pizza cannot be fulfilled by a local fulfillment center as the local fulfillment center may not have capacity to provide the pizza.
[00291] In response to determining the local fulfillment center workstations 1530 to receive an order, the ordering backend 1520 may provide the order to the local fulfillment center workstations 1530. For example, in response to determining that a local fulfillment center does deliver to the particular location requested by a customer and has capacity to fulfill an order for pizza, the ordering backend 1520 may determine to provide the order for pizza to the local fulfillment center workstations 1530 of the local fulfillment center.
[00292] In processing the orders, the ordering backend may also process payments for the orders. For example, the ordering backend 1520 may validate whether payment information provided in the order is correct. In another example, the ordering backend 1520 may place charges for orders using payment information provided in the order.
[00293] The ordering backend 1520 may include a bulk order processor 1524.
The bulk order processor 1524 may enable the ordering backend 1520 to perform mass processing of orders. For example, the ordering backend 1520 may receive an extremely large number of orders within a given time frame from the smart appliances 1510, mobile application 1512, web application 1514, text or SMS application 1516, the voice interface 1518, or the call center workstations 1522. Processing such an amount of orders may include determining, for each order, one or more local fulfillment center workstations out of thousands of potential local fulfillment center workstations 1530 to receive the order.
[00294] The ordering backend 1520 may also include a bulk order router 1526. The bulk order router 1526 may enable the ordering backend 1520 to perform mass management of logistics, including delivery scheduling and collection scheduling of received orders. For example, the ordering backend may receive an extremely large number of orders within a given time frame from the smart appliances 1510, mobile application 1512, web application 1514, text or SMS application 1516, the voice interface 1518, or the call center workstations 1522. Managing the delivery scheduling or collection scheduling of such an amount of orders may include determining an order preparation schedule for each local fulfillment center workstation.
[00295] The ordering backend 1520 performs a variety of tasks relating to processing or routing bulk orders, including sorting, assigning, routing, queuing, distributing and scheduling, to name a few. The study, optimization and execution of these tasks requires the uses of techniques and results from well-developed, active areas of scientific research, such as operational research, combinatorial optimization, graph theory (in particular network theory), queuing theory, and transport theory.
Executing or providing optimal solutions to such tasks are proven to be complex and mathematically hard, particularly when considering large-scale systems. For example, e-commerce giant Amazon reported that they received, processed and delivered orders for 426 items per second in the run up to Christmas in 2013, see for example http://articles.latimes.com/2013/dec/26/business/la-fi-tn-amazon-sold-426-items-per-second-cyber-monday-20131226.
[00296] Since scaling is an extremely important factor, particularly in the context of e-commerce, tasks relating to processing or routing bulk orders quickly become extremely difficult, if not impossible, to solve and require powerful computers implementing complex algorithms and elegant mathematical programming techniques, as well as robust hardware architectures that can be parallelized. In some cases, it has even been shown that many tasks relating to the processing or routing of bulk orders are computationally intractable. In fact, the theory of computational complexity has introduced a concept of NP-hardness to classify such computationally intractable tasks.
[00297] For example, consider the intensely studied Traveling Salesman Problem (TSP), an NP-hard problem in combinatorial optimization. In its purest formulation, the TSP may be described as follows: given a list of cities and the distances between each pair of cities, what is the shortest route that visits each city exactly once, and returns to the original city. The TSP may also be modeled and described as a graph problem, wherein the cities are the graph's vertices and the distances between each pair of cities are the lengths of the graph's edges, or formulated as an integer linear program. The TSP has several applications in operational research, including planning and logistics, wherein the concept of a city may represent customers or orders, and the concept of a distance may represent travelling times or incurred costs. In some implementations, additional constraints may be imposed on the TSP, such as limiting an amount of resources or limiting to certain time windows. Finding increasingly efficient solutions to the TSP and other such complex, subtle operational research problems is an active area of scientific research, as evidenced by a plethora of technical textbooks, journals and scientific articles. See, for example "In Pursuit of the Travelling Salesman: Mathematics at the Limits of Computation," William Cook, Princeton University Press, 2011, "Dynamic programming strategies and reduction techniques for the traveling salesman problem with time windows and precedence constraints," L. Bianco, A. Mingozzi, and S.
Ricciardelli, Operations Research, 45 (1997) 365-377 and "Scheduling vehicles from a central depot to a number of delivery points," G. Clarke and J. Wright, Operations Research 12(1964) 568-581.
[00298] Another well-studied, fundamental combinatorial optimization problem in the field of operational research and optimization is the Assignment Problem (AP). In its most general form, the AP may be described as follows: given a number of agents, a number of tasks and a set of incurring costs for each potential agent-task assignment, perform all tasks by assigning one agent to each task, and one task to each agent, such that the total costs incurred is minimized. The AP also has several applications in areas such as planning and logistics. For example, the ordering backend 1520 may interpret the task of processing received orders as an assignment problem, wherein a local fulfillment center workstation can be assigned to deliver an order, incurring some cost. The bulk order processor 1524, for example, may require that all orders are delivered by assigning one local fulfillment center to each order, and one order to each local fulfillment center, in such a way that the total cost of the assignment is minimized. It has been shown that such an assignment problem can be expressed mathematically as a standard linear program, see, for example "Algorithms for the Assignment and Transportation Problems," James Munkres, Journal of the Society for Industrial and Applied Mathematics Vol. 5, No. 1 (Mar., 1957), pp. 32-38.
[00299] Linear programming has been shown to be an extremely powerful, essential optimization technique widely applied in various fields of study such as business studies and economics, as well as industrial areas such as engineering, transportation and manufacturing. The sophisticated mathematical programming techniques used in linear programming have proven essential to the modeling of diverse types of problems in routing, scheduling and assignment, and in turn have led to the creation of powerful computer systems that enable businesses to reduce costs, improve profitability, use resources effectively, reduce risks and provide untold benefits in many other key dimensions. Mathematically, linear programming is a technique for the optimization of a linear objective function, subject to linear equality and linear inequality constraints. While this requirement may seem overly restrictive, many real-world business problems can be formulated in this manner. Today, commercial linear-programming codes are able to solve linear programs with millions of constraints. For example, the commercial, high-performance mathematical programming solver IBM
ILOG CPLEX of IBM is able to solve linear programs with the number of megabytes required for computation approximately equal to the number of constraints divided by 1000, see http://vvww-01.ibm.com/support/docview.wss?uid=swg21399933.
[00300] When dealing with large-scale systems, system components, such as the ordering backend 1520, may employ techniques and results from Queuing Theory ¨ the mathematical study of waiting lines, or queues ¨ in order to model incoming customers or orders and subsequently make business decisions relating to order fulfillment, resource requirements for providing a certain service, expected waiting time in a queue, average time in a queue, expected queue length, expected number of customers in a queue at a given time, and the probability of a system to be in a certain state, such as empty or full. For example, it has been shown that most queues in restaurant operations can be described by an M/M/1 queue, where arrivals are determined by a Poisson process with heavy periods around lunch and dinnertime, and service times have an exponential distribution. In a complex system of multiple M/M/1 queues, or a queue network, deep and sophisticated mathematical techniques such as stochastic calculus may be employed to model or approximate the queuing process. For example, in some implementations a heavy traffic approximation may be used to approximate a queuing process by a reflected Brownian motion, Ornstein-Uhlenbeck process or more general diffusion process. Since queues are basic components to both external and internal business processes, including scheduling and inventory management, understanding the nature of queues and learning how to manage them is one of the most important areas in operational research and management. See, for example, "A Methodology and Implementation for Analytic Modeling in Electronic Commerce Applications," H. Edwards, M. Bauer, H. Luffiyya, Y. Chan, M. Shields and P. Woo, Electronic Commerce Technologies, Lecture notes in computer science, Volume 2040, 2001, pp 148-157 and "Stochastic Models in Queuing Theory", J.
Medhi, Elsevier Academic Press, 2002.
[00301] The local fulfillment center workstations 1530 may receive orders from the ordering backend 1520. For example, a particular local fulfillment center workstation may receive an order for pizza from the ordering backend 1520. The local fulfillment center workstations may be located on the premises of the local fulfillment center and used by agents of the local fulfillment center. For example, a local fulfillment center workstation of a pizza provider may be located in a kitchen of the pizza provider and used by bakers to determine what pizzas to bake and when to bake the pizzas. In another example, local fulfillment center workstations of a pizza provider may be located in delivery vehicles of the pizza provider and used by pizza deliverers to determine where to deliver each pizza or a delivery route for the pizzas. The delivery route may be dynamically planned based on types of orders and locations to which the orders will be delivered. In yet another example, a local fulfillment center workstation may be used by a cashier of a pizza provider and used by the cashier to place additional orders for customers within the restaurant or determine whether a customer is the correct customer to receive a pizza that is ordered for pickup at the restaurant. In some implementations, the local fulfillment center workstations 1530 may be the fulfillment center workstations 130, 140 of FIG. 1.
[00302] The local fulfillment center workstations 1530 may provide information to agents of the local fulfillment center to fulfill orders. For example, a particular local fulfillment center workstation of a pizza provider may display an order number, a type of pizza ordered, a customer name for the order, a place of delivery for the order, and a time of delivery for the order. The local fulfillment center workstations 1530 may obtain the information to provide agents of the local fulfillment center from the orders received from the ordering backend 1520. For example, the orders received from the ordering backend 1520 may include data that indicates an order number, a type of pizza ordered, a customer name for the order, a place of delivery for the order, and a time of delivery for the order. In some implementations, the local fulfillment center workstations 1530 may prioritize the fulfillment of orders. For example, the local fulfillment center workstations 1530 may prioritize the fulfillment of orders based on when the orders are to be provided to the users.
[00303] The local fulfillment center workstations 1530 may include a local, voice-based order taking component 132. For example, the local fulfillment center workstations 1530 may include a telephone-based system with which an employee of the local fulfillment center may speak to the customer. The local, voice-based order taking component 132 may enable customers to place orders directly with the local fulfillment center. For example, the same local fulfillment center workstations 1530 that receive orders from the ordering backend 1520 may also be used to generate orders based on input from customer service agents using the local fulfillment center workstations 1530. In some implementations, the local, voice-based order taking component 132 may be automated and use speech recognition to generate orders for users.
[00304] The local fulfillment center workstations 1530 may additionally or alternatively communicate with a supply chain or finance or enterprise component of a third party. For example, a local fulfillment center workstation may place an order for more flour with a supply chain component of a third party that sells flour for pizza. In another example, a local fulfillment center workstation may communicate with a finance component to place payment charges for orders.
[00305] The local fulfillment center workstations 1530 may automatically determine to communicate with the supply chain or finance or enterprise component.
For example, the local fulfillment center workstations 1530 may automatically determine that the amount of flour in the inventory of the local fulfillment center is below a flour threshold, and in response, place an order for flour to the supply chain component of a pizza flour provider.
[00306] FIG. 16 illustrates a schematic diagram of an exemplary generic computer system. The system 1600 can be used for the operations described in association with the processes 500 and 600 according to some implementations.
The system 1600 may be included in the system 100.

[00307] The system 1600 includes a processor 1610, a memory 1620, a storage device 1630, and an input/output device 1640. Each of the components 1610, 1620, 1630, and 1620 are interconnected using a system bus 1650. The processor 1610 is capable of processing instructions for execution within the system 1600. In one implementation, the processor 1610 is a single-threaded processor. In another implementation, the processor 1610 is a multi-threaded processor. The processor 1610 is capable of processing instructions stored in the memory 1620 or on the storage device 1630 to display graphical information for a user interface on the input/output device 1640.
[00308] The memory 1620 stores information within the system 1600. In one implementation, the memory 1620 is a computer-readable medium. In one implementation, the memory 1620 is a volatile memory unit. In another implementation, the memory 1620 is a non-volatile memory unit.
[00309] The storage device 1630 is capable of providing mass storage for the system 1600. In one implementation, the storage device 1630 is a computer-readable medium. In various different implementations, the storage device 1630 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device.
[00310] The input/output device 1640 provides input/output operations for the system 1600. In one implementation, the input/output device 1640 includes a keyboard and/or pointing device. In another implementation, the input/output device includes a display unit for displaying graphical user interfaces.
[00311] Embodiments of the subject matter, the functional operations and the processes described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible nonvolatile program carrier for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.
[00312] The term "data processing apparatus" encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. In some cases, the one or more programmable computers may be connected by a network to form a distributed computing environment (e.g., a cloud).
[00313] A computer program (which may also be referred to or described as a program, software, a software application, a module, a software module, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

[00314] The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[00315] Computers suitable for the execution of a computer program indude, by way of example, can be based on general or special purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
[00316] Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[00317] To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
[00318] Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks indude a local area network ("LAN") and a wide area network ("WAN"), e.g., the Internet.
[00319] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[00320] While this specification contains many specific implementation details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments.
Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment.
Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.

Claims (20)

CLAIMS:
1. A computer-implemented method comprising:
receiving, at a computer system and from a mobile computing device, a food order that specifies one or more items to be (i) fulfilled by a particular provider and (ii) picked-up by a user of the mobile computing device;
determining, by the computer system, an estimated time of arrival for the user to travel from a current location of the mobile computing device to a location of the particular provider; determining, by the computer system, one or more fulfillment time periods for the food order, each of the one or more fulfillment time periods corresponding to a length of time to fulfill a respective item that is included in the food order, wherein determining a fulfillment time period includes:
determining a base preparation time to prepare the respective item included in the food order; and modifying the base preparation time based on factors to determine the fulfillment time for the respective item, wherein the factors include a historical order fulfillment time, a historical staffing level at the particular provider, and at least one subsequent additional order that the particular provider expects to receive, in the future, within a threshold amount of time;
determining, by the computer system and based, at least in part, on (i) the estimated time of arrival and (ii) the one or more fulfillment time periods, one or more future times at which the particular provider is to begin preparing the one or more items so that the food order will be fulfilled and available for pick-up within a threshold period of time of the user arriving at the particular provider's location;
generating, by the computer system, food order instructions for the particular provider to prepare the food order based, at least in part, on (i) the food order and (ii) the one or more future times;
communicating, by the computer system, the food order instructions to a provider computer system associated with the particular provider to cause the provider computer system to: i) place the one or more items of the food order in at least one queue of a plurality of queues, in a position in the at least one queue that is according to the one or more future times and the one or more fulfillment time periods, wherein at least one of Date Recue/Date Received 2021-05-28 the one or more items is placed, in the at least one queue, ahead of at least one other item for a different food order having a later fulfillment time than the at least one item;
and ii) display the food order instructions on a display device of the provider computer system, wherein each of the plurality of queues corresponds to a respective different preparation station that is used for item preparation at the particular provider;
receiving, at the computer system, an updated location of the mobile computing device;
determining, by the computer system, an updated time of arrival for the user at the location of the particular provider based, at least in part, on the updated location;
determining, by the computer system, whether the updated time of arrival for user to arrive at the particular provider' s location has deviated from the estimated time of arrival by more than a threshold amount of time; and providing, by the computer system and in response to determining that the updated time of arrival has deviated from the estimated time of arrival by more than the threshold amount of time, updated information that identifies the updated time of arrival for the user to the provider computer system associated with the particular provider.
2. The computer-implemented method of claim 1, further comprising:
selecting, by the computer system, an estimated route that the user will use to travel from the current location of mobile computing device to the location of the particular provider, wherein the estimated time of arrival is determined based, at least in part, on the estimated route.
3. The computer-implemented method of claim 2, further comprising:
identifying, by the computer system, one or more transit delays along the estimated route, wherein the estimated time of arrival is determined further based on the one or more transit delays.
4. The computer-implemented method of claim 2, further comprising:

Date Recue/Date Received 2021-05-28 identifying, by the computer system, historical travel times for travelling along some or all of the estimated route, wherein the estimated time of arrival is determined further based on the historical travel times.
5. The computer-implemented method of claim 4, wherein the historical travel times comprise historical travel times for the user travelling along some or all of the estimated route.
6. The computer-implemented method of claim 2, further comprising:
identifying, by the computer system, a plurality of candidate routes for the user to travel from the current location of the mobile computing device to the location of the particular provider, wherein the estimated route is selected from among the plurality of candidate routes based on historical travel patterns of the user.
7. The computer-implemented method of claim 1, further comprising:
determining, by the computer system, whether to suggest another provider fulfill the food order based, at least in part, on the updated location of the mobile computing device and the updated time of arrival at the location of the particular provider; and selecting, by the computer system in response to determining to suggest another provider, an alternate provider for the food order based, at least in part, on (i) a location of the alternate provider, (ii) the updated location of the mobile computing device, and (iii) fulfillment services provided by the alternate provider or an affiliation between the alternate provider and the particular provider;
wherein the updated information includes information that identifies the alternate provider and provides an option to change fulfillment of the food order from the particular provider to the alternate provider.
8. The computer-implemented method of claim 7, further comprising:
receiving, at the computer system and from the mobile computing device, a request to change fulfillment of the food order to the alternate provider;

Date Recue/Date Received 2021-05-28 providing, by the computer system and to the provider computer system associated with the particular provider, instructions to cancel fulfillment of the food order by the particular provider; and providing, by the computer system and to another provider computer system associated with the alternate provider, information for the food order.
9. The computer-implemented method of claim 1, further comprising:
determining, by the computer system and based on the updated time of arrival, one or more updated future times at which the particular provider is to begin preparing the one or more items so that the food order will be fulfilled and available for pick-up within a threshold period of time of the updated time of arrival; and generating updated food order instructions for the particular provider to prepare the food order based, at least in part, on (i) the food order and (ii) the one or more updated future times, wherein the updated food order is included in the updated information that is provided to the provider computer system.
10. The computer-implemented method of claim 1, further comprising:
determining, by the computer system, whether fulfillment of the food order has already begun based, at least in part, on (i) a current time when the updated location of the mobile computing device is received and (ii) the one or more future times at which the particular provider is to begin preparing the food order;
providing, by the computer system and in response to determining that fulfillment of the food order has already begun, a notification to the mobile computing device that indicates the food order has already begun being fulfilled and an estimated time when the food order will be available.
11. The computer-implemented method of claim 1, further comprising:
determining, by the computer system, whether fulfillment of the food order has already begun based, at least in part, on (i) a current time when the updated location of the mobile computing device is received and (ii) the one or more future times at which the particular provider is to begin preparing the food order;

Date Recue/Date Received 2021-05-28 providing, by the computer system and in response to determining that fulfillment of the food order has not yet begun, instructions to the mobile computing device output one or more selectable features for the user to modify or cancel the food order.
12. The computer-implemented method of claim 11, further comprising:
receiving, at the computer system and from the mobile computing device, one or more modifications to the food order;
determining, by the computer system, one or more modified future times for the particular provider to being fulfilling the food order based, at least in part, on the one or more modifications to the food order and the future times; and providing, by the computer system and to the provider computer system, information that identifies one or more modification to the food order and the one or more modified future times.
13. The computer-implemented method of claim 1, further comprising:
accessing, by the computer system, current orders that are pending for fulfillment with the particular provider, wherein the one or more future times are determined further based on the current orders.
14. The computer-implemented method of claim 13, wherein identifying the one or more fulfillment time periods comprises:
identifying one or more base preparation times for the one or more items, the one or more base preparation times comprising one or more times to prepare the one or more items without any provider delay, the one or more base preparation times based at least in part on one or more historical order fulfillment times for the one or more items; and determining, by the computer system, one or more delay times for each of the one or more items based on the current orders that are pending for fulfillment with the particular provider, Date Recue/Date Received 2021-05-28 determining, by the computer system, the one or more fulfillment time periods by modifying the one or more base preparation times based on the one or more delay times.
15. The computer-implemented method of claim 1, further comprising:
determining, by the computer system, whether fulfillment of the food order has progressed at least less than a threshold amount based, at least in part, on (i) a current time when the updated location of the mobile computing device is received and (ii) the one or more future times at which the particular provider is to begin preparing the food order;
providing, by the computer system and in response to determining that fulfillment of the food order has not yet progressed at least the threshold amount, instructions to the mobile computing device output one or more selectable features for the user to modify or cancel the food order.
16. A computer-implemented method comprising:
outputting, by the mobile computing device, a user interface for placing orders with one or more providers;
receiving, through the user interface, input that specifies a food order to be placed with a particular provider, wherein the food order includes one or more items and specifies that a user associated with the mobile computing device will pick-up the food order at the particular provider's location;
providing, by the mobile computing device and to a computer system, order information that describes the food order and location information that identifies a current location of the mobile computing device, wherein the computer system is programmed to (i) determine an estimated time when the food order will be available for pick-up based, at least in part, on an estimated time of arrival for the user to travel to the particular provider's location, the estimated time further based on one or more fulfillment time periods each indicating a length of time to fulfill a respective item included in the food order, and (ii) provide the food order to a provider computer system that is associated with the particular provider, wherein the provider computer system is programmed to: i) place the one or more items of the food order in at least Date Recue/Date Received 2021-05-28 one queue of a plurality of queues, in a position in the at least one queue that is according to the one or more future times and the one or more fulfillment time periods, wherein at least one of the one or more items is placed, in the at least one queue, ahead of at least one other item for a different food order having a later fulfillment time than the at least one item; and ii) display the food order instructions on a display device of the provider computer system, wherein each of the plurality of queues corresponds to a respective different preparation station that is used for item preparation at the particular provider, and wherein determining a fulfillment time period includes:
determining a base preparation time to prepare a respective item included in the food order; and modifying the base preparation time based on factors to determine the fulfillment time for the respective item, wherein the factors include a historical order fulfillment time, a historical staffing level at the particular provider, and at least one subsequent additional order that the particular provider expects to receive, in the future, within a threshold amount of time;
receiving, at the mobile computing device and from the computer system, information that identifies, at least, the estimated time when the food order will be available for pick-up;
outputting, by the mobile computing device and through the user interface, the estimated time when the food order will be available for pick-up, providing, by the mobile computing device and to the computer system, location updates as the mobile computing device travels with the user to the particular provider's location;
receiving, by the mobile computing device and from the computer system, status information for pick-up of the food order, wherein the status information comprises information indicating that, as a result of a route being travelled by the user to the particular provider's location, the estimated time of arrival has deviated by at least a threshold amount of time;
selecting, by the mobile computing device and based on the information indicating that the estimated time of arrival has deviated by at least a threshold Date Recue/Date Received 2021-05-28 amount of time, one or more selectable user interface features for modifying or cancelling the food order outputting, by the mobile computing device and through the user interface, the one or more selectable user interface features.
17. The computer-implemented method of claim 16, further comprising:
receiving, through at least a portion of the user interface features, input instructing the food order to be modified or cancelled;
providing, by the mobile computing device and to the computer system, instructions to modify or cancel the food order based on the user input.
18. The computer-implemented method of claim 16, wherein providing the location updates as the mobile computing device travels with the user to the particular provider's location comprises:
receiving, using a global positioning system (GPS) receiver that is part of the mobile computing device and at recurring intervals of time, wireless signals from a plurality of GPS satellites;
determining, using the GPS receiver, GPS coordinates for the mobile computing device based on the wireless signals received from the plurality of GPS
satellites; and transmitting, by the mobile computing device, the GPS coordinates to the computer system.
19. The computer-implemented method of claim 16, wherein:
outputting the estimated time when the food order will be available for pick-up comprises displaying, on a display of the mobile computing device, (i) first text that identifies the estimated time when the food order will be available for pick-up, (ii) second text that identifies one or more times when preparation of the one or more items in the food order will begin, and (iii) third text that identifies the particular provider; and outputting the one or more selectable user interface features through the user interface comprises displaying, on the display, one or more selectable buttons.

Date Recue/Date Received 2021-05-28
20. A computer system comprising:
at least one processor; and a memory communicatively coupled to the at least one processor, the memory storing instructions which, when executed, cause the at least one processor to implement modules comprising:
an interface that is programmed to (i) receive, from mobile computing devices, food orders that specify one or more items to be fulfilled by particular providers and picked-up by users of the mobile computing devices, (ii) provide food order instructions to provider computer systems associated with the particular providers;
a location module that is programmed to (i) determine current locations of the mobile computing devices and (ii) identify locations of the particular providers;
an arrival estimation module that is programmed to determine estimated times of arrival for the users to travel from the current locations of the mobile computing devices to the locations of the particular providers; and a fulfillment planning subsystem that is programmed to (i) determine, for the food orders, fulfillment time periods that correspond to lengths of time for the items to be fulfilled as part of the food orders, (ii) determine future times at which the particular providers are to begin preparing the items so that the food orders will be fulfilled and available for pick-up within a threshold period of time of the users arriving at the particular providers' locations, and (iii) generate food order instructions for the particular providers based, at least in part, on the food orders and the future times, wherein determining a fulfillment time period includes:
determining a base preparation time to prepare the respective item included in the food order; and modifying the base preparation time based on factors to determine the fulfillment time for the respective item, wherein the factors include a historical order fulfillment time, a historical staffing level at the particular provider, and at least one subsequent additional order that the particular provider expects to receive, in the future, within a threshold amount of time;
wherein generating the food order instructions for the particular providers includes Date Recue/Date Received 2021-05-28 communicating the food order instructions to a provider computer system associated with the particular providers to cause the provider computer system to: i) place the one or more items of the food order in at least one queue of a plurality of queues, in a position in the at least one queue that is according to the one or more future times and the one or more fulfillment time periods, wherein at least one of the one or more items is placed, in the at least one queue, ahead of at least one other item for a different food order having a later fulfillment time than the at least one item; and ii) display the food order instructions on a display device of the provider computer system, wherein each of the plurality of queues corresponds to a respective different preparation station that is used for item preparation at the particular providers;
wherein the futures times are determined based, at least in part, on the estimated times of arrival and the fulfillment time periods, wherein the interface is further programmed to receive updated locations of the mobile computing devices and to provide updated information that identifies updated times of arrival for the users to the provider computer systems associated with the particular providers, wherein the arrival estimation module is further programmed to determine the updated times of arrival for the users based, at least in part, on the updated locations, and wherein the fulfillment planning subsystem is further programmed to determine whether the updated times of arrival for users to have deviated from the estimated times of arrival by more than a threshold amount of time and to instruct the interface to transmit the updated information in response to determining that the updated times of arrival have deviated from the estimated times of arrival by more than the threshold amount of time.

Date Recue/Date Received 2021-05-28
CA3050511A 2015-04-16 2016-04-15 Future order throttling Active CA3050511C (en)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201562148450P 2015-04-16 2015-04-16
US62/148,450 2015-04-16
US201562169325P 2015-06-01 2015-06-01
US201562169474P 2015-06-01 2015-06-01
US14/727,519 US10007947B2 (en) 2015-04-16 2015-06-01 Throttle-triggered suggestions
US14/727,631 2015-06-01
US62/169,474 2015-06-01
US14/727,631 US9858614B2 (en) 2015-04-16 2015-06-01 Future order throttling
US14/727,519 2015-06-01
US62/169,325 2015-06-01
US14/827,153 US20160353235A1 (en) 2015-06-01 2015-08-14 Location-based order recommendations
US14/827,153 2015-08-14
US14/828,818 US20160350837A1 (en) 2015-06-01 2015-08-18 Intelligent delivery queuing
US14/828,818 2015-08-18
CA2977973A CA2977973C (en) 2015-04-16 2016-04-15 Future order throttling

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CA2977973A Division CA2977973C (en) 2015-04-16 2016-04-15 Future order throttling

Publications (2)

Publication Number Publication Date
CA3050511A1 CA3050511A1 (en) 2016-10-20
CA3050511C true CA3050511C (en) 2022-05-31

Family

ID=59895551

Family Applications (3)

Application Number Title Priority Date Filing Date
CA3050504A Active CA3050504C (en) 2015-04-16 2016-04-15 Future order throttling
CA3050511A Active CA3050511C (en) 2015-04-16 2016-04-15 Future order throttling
CA2977973A Active CA2977973C (en) 2015-04-16 2016-04-15 Future order throttling

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CA3050504A Active CA3050504C (en) 2015-04-16 2016-04-15 Future order throttling

Family Applications After (1)

Application Number Title Priority Date Filing Date
CA2977973A Active CA2977973C (en) 2015-04-16 2016-04-15 Future order throttling

Country Status (2)

Country Link
AU (2) AU2016248018A1 (en)
CA (3) CA3050504C (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112686777B (en) * 2020-12-25 2023-06-20 展讯通信(上海)有限公司 Restaurant order processing method and device, storage medium and terminal

Also Published As

Publication number Publication date
CA2977973C (en) 2019-09-24
CA3050511A1 (en) 2016-10-20
AU2019204134A1 (en) 2019-07-04
CA3050504A1 (en) 2016-10-20
CA2977973A1 (en) 2016-10-20
AU2016248018A1 (en) 2017-11-23
CA3050504C (en) 2022-06-21

Similar Documents

Publication Publication Date Title
US20160350837A1 (en) Intelligent delivery queuing
US20160353235A1 (en) Location-based order recommendations
US9858614B2 (en) Future order throttling
US10719897B2 (en) System and process for managing preparation and packaging of food and/or beverage products for a precise delivery time
WO2016166708A1 (en) Future order throttling
US20230169448A1 (en) Delivery prediction generation system
US10043149B1 (en) Add-on orders for delivery
US10127519B2 (en) Apparatus and method for predictive dispatch for geographically distributed, on-demand services
US20190318630A1 (en) Preemptively navigating drivers to an event location to transport passengers upon completion of the event
RU2662919C2 (en) Queue management system and method
US9760833B2 (en) Trigger repeat order notifications
US20180075404A1 (en) Methods and systems to optimize timing of customer arrival and order production completion for remote customer orders
US20170124511A1 (en) Automatic Integrated Routing and Fulfillment System and Method with Product Exchange
US10181111B1 (en) Electronic device communications for item handoffs
US20160350711A1 (en) Alternative delivery destination system
US10311530B2 (en) System and process for managing preparation and packaging of food and/or beverage products for a precise delivery time
US20200043073A1 (en) Geolocation-capable physical-location recommendation engine
JP2022110048A (en) Application programming interfaces for structuring distributed systems
JP2023513976A (en) Systems and methods for intelligent preparation time analysis
KR101344498B1 (en) Sales activity management system capable of prividing customized sales activities information and method thereof
US20210089972A1 (en) System and Method for Computer Based Transit Time Determination for Matching Geographically Separated Entities
WO2016074031A1 (en) Distributed delivery system
CA3050511C (en) Future order throttling
CA2976615C (en) Repeat order notifications
KR20200038439A (en) Apparatus and method for information management

Legal Events

Date Code Title Description
EEER Examination request

Effective date: 20190724

EEER Examination request

Effective date: 20190724