Language selection

Search

Patent 3050511 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 3050511
(54) English Title: FUTURE ORDER THROTTLING
(54) French Title: LIMITATION DES COMMANDES FUTURES
Status: Granted
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06Q 10/0836 (2023.01)
  • G06Q 30/06 (2023.01)
  • H04W 4/021 (2018.01)
  • H04W 4/024 (2018.01)
  • H04W 4/35 (2018.01)
  • H04W 4/029 (2018.01)
(72) Inventors :
  • SEAWARD, LEONA (United Kingdom)
  • HAYNES, JONATHAN (United Kingdom)
  • THIRLAWAY, JOHN (United Kingdom)
  • WILLIAMS, THOMAS (United Kingdom)
(73) Owners :
  • ACCENTURE GLOBAL SERVICES LIMITED (Ireland)
(71) Applicants :
  • ACCENTURE GLOBAL SERVICES LIMITED (Ireland)
(74) Agent: SMART & BIGGAR LP
(74) Associate agent:
(45) Issued: 2022-05-31
(22) Filed Date: 2016-04-15
(41) Open to Public Inspection: 2016-10-20
Examination requested: 2019-07-24
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data:
Application No. Country/Territory Date
62/148,450 United States of America 2015-04-16
14/727,519 United States of America 2015-06-01
14/727,631 United States of America 2015-06-01
62/169,325 United States of America 2015-06-01
62/169,474 United States of America 2015-06-01
14/827,153 United States of America 2015-08-14
14/828,818 United States of America 2015-08-18

Abstracts

English 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.


French Abstract

Des méthodes, des systèmes et un appareil, dont des logiciels codés sur un support de stockage informatique, servant à gérer des commandes. Les méthodes en question consistent à faire le suivi du rendement dun centre de traitement des commandes en ce qui concerne le traitement de commandes darticles qui y sont stockés, stocker des renseignements de préparation historiques qui décrivent le rendement historique du centre de traitement des commandes et recevoir une commande darticle qui doit être traitée par le centre de traitement des commandes dans un délai de traitement. La méthode consiste également à obtenir une partie des renseignements de préparation historiques pertinents au traitement de larticle avant la fin du délai de traitement; obtenir des renseignements sur la commande en cours qui décrivent dautres commandes devant être traitées au centre de traitement des commandes; déterminer, en se fondant au moins sur la partie des renseignements de préparation historiques et sur les renseignements sur la commande en cours, si le centre de traitement des commandes peut traiter la commande dans le délai de traitement; et indiquer à un appareil utilisateur que la commande ne peut pas être traitée.

Claims

Note: Claims are shown in the official language in which they were submitted.


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
98
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:
99
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;
100
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;
101
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,
102
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
103
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
104
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.
105
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
106
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.
107
Date Recue/Date Received 2021-05-28

Description

Note: Descriptions are shown in the official language in which they were submitted.


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
1
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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.
2
CA 3050511 2019-07-24

WO 2016/166708 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.
3
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
[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
4
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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.
6
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
[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
7
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
8
CA 3050511 2019-07-24

WO 2016/166708 PCMB2016/052145
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
9
CA 3050511 2019-07-24

WO 2016/166708 PCT/I62016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/11B2016/052145
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
11
CA 3050511 2019-07-24

WO 2016/166708 PCT/H32016/052145
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
12
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
13
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
14
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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.
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
[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
16
CA 3050511 2019-07-24

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
17
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

WO 2016/166708 PCT/1132016/052145
[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
18
CA 3050511 2019-07-24

WO 2016/166708 PCT/I132016/052145
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
19
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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?"
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
[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
21
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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.
22
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
[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
23
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
24
CA 3050511 2019-07-24

WO 2016/166708 PCT/182016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
26
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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.
27
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
[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
28
CA 3050511 2019-07-24

WO 2016/166708 PCT/I132016/052145
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
29
CA 3050511 2019-07-24

WO 2016/166708 POT/02016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
112
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
31
CA 3050511 2019-07-24

WO 2016/166708 PCT/I132016/052145
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
32
CA 3050511 2019-07-24

WO 2016/166708 PCT/182016/052145
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
33
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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.
34
CA 3050511 2019-07-24

WO 2016/166708 PCT/1E132016/052145
[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
110
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.
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
[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
36
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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
37
CA 3050511 2019-07-24

WO 2016/166708 POT/182016/052145
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.
38
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
[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."
39
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
[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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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."
41
CA 3050511 2019-07-24

WO 2016/166708 PCT/11132016/052145
[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.
42
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
[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
43
CA 3050511 2019-07-24

WO 2016/166708 PCT/1112016/052145
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
44
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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
700
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/D32016/052145
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.
46
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
[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
47
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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
48
CA 3050511 2019-07-24

WO 2016/166708 PCT/1112016/052145
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
49
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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
51
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
90
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
52
CA 3050511 2019-07-24

WO 2016/166708
PCT/1132016/052145
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
804
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
53
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
818
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
54
CA 3050511 2019-07-24

WO 2016/166708 PCT/TB2016/052145
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
804
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
56
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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.
57
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
[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
58
CA 3050511 2019-07-24

WO 2016/166708 PCT/182016/052145
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
59
CA 3050511 2019-07-24

WO 2016/166708 PCT/E82016/052145
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)
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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.
61
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
[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
62
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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.
63
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
[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
64
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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.,
66
CA 3050511 2019-07-24

WO 2016/166708 PCT/132016/052145
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
67
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
68
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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
69
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 POT/1112016/052145
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.
71
CA 3050511 2019-07-24

WO 2016/166708 PCT/182016/052145
[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
72
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
1106
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
73
CA 3050511 2019-07-24

WO 2016/166708 PCT/182016/052145
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.
74
CA 3050511 2019-07-24

WO 2016/166708 POT/182016/052145
[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.
CA 3050511 2 0 1 9-0 7-24

WO 2016/166708 PCT/1132016/052145
[00255] The computer system 1204 includes a location module 1224 that is
programmed to determine and track the location of the mobile computing device
1202
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
76
CA 3050511 2019-07-24

WO 2016/166708 PCT/182016/052145
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
77
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
78
CA 3050511 2019-07-24

WO 2016/166708 PCT/I132016/052145
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.
79
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
1342
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1112016/052145
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
81
CA 3050511 2019-07-24

WO 2016/166708 PCT/1B2016/052145
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
82
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
83
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
84
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
86
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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,
87
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
88
CA 3050511 2019-07-24

WO 2016/166708 POT/1E2016/052145
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
89
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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,
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
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
91
CA 3050511 2019-07-24

WO 2016/166708 PCT/E132016/052145
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.
92
CA 3050511 2019-07-24

WO 2016/166708 PCT/1112016/052145
[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
1640
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
93
CA 3050511 2019-07-24

WO 2016/166708 PCT/IB2016/052145
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.
94
CA 3050511 2019-07-24

WO 2016/166708 PCT/1132016/052145
[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
CA 3050511 2019-07-24

WO 2016/166708 PCT/EB2016/052145
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
96
CA 3050511 2019-07-24

WO 2016/166708
PCTAB2016/052145
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.
97
CA 3050511 2019-07-24

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 2022-05-31
(22) Filed 2016-04-15
(41) Open to Public Inspection 2016-10-20
Examination Requested 2019-07-24
(45) Issued 2022-05-31

Abandonment History

There is no abandonment history.

Maintenance Fee

Last Payment of $277.00 was received on 2024-03-05


 Upcoming maintenance fee amounts

Description Date Amount
Next Payment if standard fee 2025-04-15 $277.00
Next Payment if small entity fee 2025-04-15 $100.00

Note : If the full payment has not been received on or before the date indicated, a further fee may be required which may be one of the following

  • the reinstatement fee;
  • the late payment fee; or
  • additional fee to reverse deemed expiry.

Patent fees are adjusted on the 1st of January every year. The amounts above are the current amounts if received by December 31 of the current year.
Please refer to the CIPO Patent Fees web page to see all current fee amounts.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Request for Examination $800.00 2019-07-24
Registration of a document - section 124 $100.00 2019-07-24
Registration of a document - section 124 $100.00 2019-07-24
Registration of a document - section 124 $100.00 2019-07-24
Registration of a document - section 124 $100.00 2019-07-24
Registration of a document - section 124 $100.00 2019-07-24
Registration of a document - section 124 $100.00 2019-07-24
Registration of a document - section 124 $100.00 2019-07-24
Application Fee $400.00 2019-07-24
Maintenance Fee - Application - New Act 2 2018-04-16 $100.00 2019-07-24
Maintenance Fee - Application - New Act 3 2019-04-15 $100.00 2019-07-24
Maintenance Fee - Application - New Act 4 2020-04-15 $100.00 2020-04-01
Maintenance Fee - Application - New Act 5 2021-04-15 $204.00 2021-03-22
Maintenance Fee - Application - New Act 6 2022-04-19 $203.59 2022-03-22
Final Fee - for each page in excess of 100 pages 2022-04-01 $207.74 2022-04-01
Final Fee 2022-04-06 $610.78 2022-04-01
Maintenance Fee - Patent - New Act 7 2023-04-17 $210.51 2023-03-08
Maintenance Fee - Patent - New Act 8 2024-04-15 $277.00 2024-03-05
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
ACCENTURE GLOBAL SERVICES LIMITED
Past Owners on Record
None
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Amendment 2020-01-10 2 78
Examiner Requisition 2021-02-02 7 462
Amendment 2021-05-28 34 2,346
Claims 2021-05-28 10 489
Description 2021-05-28 102 5,337
Amendment 2021-07-14 4 105
Final Fee 2022-04-01 5 124
Representative Drawing 2022-05-05 1 9
Cover Page 2022-05-05 1 49
Electronic Grant Certificate 2022-05-31 1 2,527
Abstract 2019-07-24 1 23
Description 2019-07-24 99 5,038
Claims 2019-07-24 7 276
Drawings 2019-07-24 22 423
Amendment 2019-07-24 2 55
Divisional - Filing Certificate 2019-08-12 1 81
Representative Drawing 2019-09-16 1 8
Cover Page 2019-09-16 1 46