# Patent

## Title
System, method and apparatus for managing made-to-order food tickets for a restaurant service

## Abstract

A customer service system operated by a restaurant service provides a restaurant service server. From a database, the restaurant service server retrieves a ticket that is generated by a restaurant service server application. The restaurant service server applies a diner credit policy to the ticket, and issues a diner credit for the diner associated with the ticket.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
This application is related to U.S. Patent Application No. 61/640,439, entitled “SYSTEM AND METHOD FOR MANAGING THE DELIVERY OF MADE-TO-ORDER FOOD,” filed Apr. 30, 2012, assigned to GrubHub, Inc. of Chicago, Ill., and which is hereby incorporated by reference. This application is also related to U.S. patent application Ser. No. 13/622,659, entitled “SYSTEM, METHOD AND APPARATUS FOR MANAGING THE DELIVERY OF MADE-TO-ORDER FOOD,” filed Sep. 19, 2012, assigned to GrubHub, Inc. of Chicago, Ill., and which is hereby incorporated by reference. Furthermore, this application is related to U.S. patent application Ser. No. 13/337,362, entitled “REAL TIME INTEGRATED SHOPPING SERVICE,” filed Dec. 27, 2011, assigned to GrubHub, Inc. of Chicago, Ill., and which is hereby incorporated by reference. This application is also related to U.S. patent application Ser. No. 13/227,771, entitled “AUTOMATIC TEST ORDER GENERATION FOR A RETAIL SHOPPING SERVICE,” filed Sep. 8, 2011, assigned to GrubHub, Inc. of Chicago, Ill., and which is hereby incorporated by reference.
FIELD OF THE DISCLOSURE
The present invention relates to a system, method and apparatus for managing customer support tickets, and more particularly relates to a system, method and apparatus utilizing software applications operating on a restaurant service server, an on-site service appliance, and a delivery driver mobile device respectively to efficiently manage made-to-order food service customer support tickets.
DESCRIPTION OF BACKGROUND
Restaurants traditionally have not participated in shopping services because, unlike non-perishable goods, food generally should be consumed shortly after preparation. However, the adoption of the Internet has made restaurant shopping services feasible, as diners can be given a selection of restaurants within a specified distance of their location. Additionally, for each participating restaurant of a restaurant service, diners are presented with a list of menu items for selection to place orders. Orders are then forwarded to corresponding restaurants for food preparation. Food can then be delivered to diners, or diners can go to the restaurants to pick up their orders. Made-to-order food is generally delivered by delivery drivers. In certain cases, such as heavily congested areas, delivery drivers deliver made-to-order food by walking or bicycling, instead of driving automobiles.
For a restaurant service, many types of problems may arise from serving made-to-order food to diners. For example, the restaurant service may fail to send an order placed by a diner to the serving restaurant corresponding to the order. The failure to transmit the order to the restaurant can be caused by a number of factors, such as a poor communication connection or an on-site service appliance failure. When an order is successfully transmitted to the restaurant, it needs to be confirmed by the restaurant. Due to various reasons, such as human errors made by employees of the restaurant, the restaurant may fail to confirm the order within a certain time frame. Accordingly, the diner for the order cannot be timely served. Additionally, the restaurant may request to cancel an order in certain cases. For example, where the restaurant is too busy or cannot find a delivery driver, the restaurant requests the restaurant service to cancel the order.
An order may be late for many reasons. For example, the serving restaurant is late to prepare food for the order. Similarly, the delivery driver for the order may be late to deliver the order. For instance, the delivery driver is lost in driving her delivery route. As an additional example, inclement weather can cause late delivery of an order.
Where a problem arises in serving made-to-order food to a diner, a restaurant service provider or a restaurant usually relies on a telephone operator to handle the problem. For example, the telephone operator (such as a restaurant employee) handles calls from unhappy diners, calms them, and mitigates the problem. The conventional method to handle restaurant service problems does not provide an efficient way to provide high quality food service to diners.
OBJECTS OF THE DISCLOSED SYSTEM, METHOD, AND APPARATUS
An object of the disclosed customer service tickets management system for a restaurant service that serves made-to-order food is to provide efficient resolutions to customer service tickets for the restaurant service;
Another object of the disclosed customer service tickets management system is to display customer support tickets in different categories;
Another object of the disclosed customer service tickets management system is to order displayed customer support tickets within the same category by types and customer service time thresholds;
Another object of the disclosed customer service tickets management system is to allow a customer service representative to claim a ticket;
Another object of the disclosed customer service tickets management system is to allow a customer support manager to manage tickets claimed by her customer service representatives;
Another object of the disclosed customer service tickets management system is to issue a diner credit to a diner for late delivery of her order;
Another object of the disclosed customer service tickets management system is to issue multiple diner credits to a diner for late delivery of her order;
Another object of the disclosed customer service tickets management system is to issue a diner credit to a diner for cancellation of her order by the corresponding restaurant;
Another object of the disclosed customer service tickets management system is to issue a diner credit to a diner for failure of transmission of her order to the corresponding restaurant;
Another object of the disclosed customer service tickets management system is to issue a diner credit to a diner for problems caused by the restaurant service;
Another object of the disclosed customer service tickets management system is to pause a restaurant to make it unavailable to diners when communications with the restaurant are problematic;
Another object of the disclosed customer service tickets management system is to black out a menu item from a restaurant to make it unavailable to diners;
Other advantages of the disclosed customer service tickets management system will be clear to a person of ordinary skill in the art. It should be understood, however, that a system, method, or apparatus could practice the disclosed customer service tickets management system while not achieving all of the enumerated advantages, and that the customer service tickets management system is defined by the claims.
SUMMARY OF THE DISCLOSURE
By utilizing a restaurant service server, a restaurant service can efficiently manage customer support tickets and resolve diner issues. In one embodiment of the disclosed restaurant service, a restaurant service server retrieves a customer service ticket from a database. The ticket is generated by a restaurant server application. Alternatively, the ticket is generated by a driver server application in response to a message received from a delivery driver mobile device. Also, the ticket can be generated by an order server application. The restaurant service server determines a type and a category of the ticket. Additionally, the restaurant service server retrieves a set of customer service time thresholds for the ticket. Based on the type and the set of customer service time thresholds, the restaurant service server assigns a display order for the ticket within the category. Accordingly, the ticket is displayed on a customer service representative device under the display order.
In addition, the restaurant service server retrieves a diner credit policy for the type of the ticket from the database. The restaurant service server sets a diner credit amount in compliance with the diner credit policy for the ticket. In an additional refinement, the restaurant service server sends the ticket and the diner credit policy to a customer service representative device over a network connection. Furthermore, the restaurant service server receives the diner credit amount from the customer service representative device.



BRIEF DESCRIPTION OF THE DRAWINGS
Although the characteristic features of this invention will be particularly pointed out in the claims, the invention itself, and the manner in which it may be made and used, may be better understood by referring to the following description taken in connection with the accompanying drawings forming a part hereof, wherein like reference numerals refer to like parts throughout the several views and in which:
FIG. 1 is a simplified block diagram of a customer service tickets management system constructed in accordance with this disclosure;
FIG. 2 is a sample display showing some customer service tickets for a restaurant service in accordance with the teachings of this disclosure;
FIG. 3 is a sample display showing some customer service tickets for a restaurant service in accordance with the teachings of this disclosure;
FIG. 4 is a flowchart depicting a process by which a customer service representative device retrieves customer service tickets from a restaurant service server and displays the tickets on a screen of the device in accordance with the teachings of this disclosure;
FIG. 5 is a flowchart depicting a process by which a restaurant service server provides customer service representative device with customer service tickets for a restaurant service in accordance with the teachings of this disclosure;
FIG. 6 is a flowchart depicting a process by which a restaurant service server determines a display order for a list of urgent customer service tickets for a restaurant service in accordance with the teachings of this disclosure;
FIG. 7 is a flowchart depicting a process by which a restaurant service server determines a display order for a list of non-urgent customer service tickets for a restaurant service in accordance with the teachings of this disclosure;
FIG. 8 is a flowchart depicting a process by which a restaurant server application pauses a restaurant in accordance with the teachings of this disclosure;
FIG. 9 is a flowchart depicting a process by which a restaurant server application generates a customer service ticket in accordance with the teachings of this disclosure;
FIG. 10 is a flowchart depicting a process by which a restaurant server application generates a customer service ticket in response to a cancellation request from a restaurant in accordance with the teachings of this disclosure;
FIG. 11 is a flowchart depicting a process by which a driver server application generates a customer service ticket in response to a late delivery of an order in accordance with the teachings of this disclosure;
FIG. 12 is a table depicting a diner credit policy for late orders in accordance with the teachings of this disclosure;
FIG. 13 is a sequence diagram depicting a process by which a restaurant service server issues a diner credit to a diner for a late order in accordance with the teachings of this disclosure;
FIG. 14 is a table depicting a diner credit policy for order cancellation in accordance with the teachings of this disclosure;
FIG. 15 is a flowchart depicting a process by which a restaurant service server issues a diner credit to a diner for order cancellation in accordance with the teachings of this disclosure;
FIG. 16 is a sample ticket data structure in accordance with the teachings of this disclosure;
FIG. 17 is a sample screenshot of a ticket display in accordance with the teachings of this disclosure;
FIG. 18 is a flowchart depicting a process by which a restaurant service server blacks out a menu item for a restaurant to prevent order placement on this menu item in accordance with the teachings of this disclosure; and
FIG. 19 is a perspective view of customer service representative devices, delivery driver mobile devices, and diner devices in accordance with the teachings of this disclosure.



DETAILED DESCRIPTION OF THE ILLUSTRATED EMBODIMENT
Turning to the Figures and to FIG. 1 in particular, a customer service system 100 for managing made-to-order food tickets for a restaurant service is shown. The illustrated customer service management system 100, utilizing a restaurant service server 140 and a database 104, allows a restaurant service to efficiently manage customer support tickets and resolve diner issues arising from serving made-to-order food. Furthermore, the illustrated customer service management system 100 allows the restaurant service to issue diner credit to diners for various reasons, such as late delivery or order cancellation.
The restaurant service server 140 hosts one or more server software programs or applications. In one embodiment in accordance with the present teachings, a ticket server application, a restaurant server application, an order server application, and a driver server application are hosted and run on the server 140. Additionally, the server 140 includes a processor, a network interface, and some amount of memory.
The order server application collects orders from diners 116, who use diner devices 126 (which can be one of the devices pictured in FIG. 19), over a wide area network 110 such as the Internet. The orders are queued in the database 104, which also includes information regarding diners as well as restaurant menus, as more fully set forth in U.S. application Ser. No. 13/337,362, which was previously incorporated by reference. The restaurant server application processes queued orders and communicates those orders to a member restaurants 35 via the Internet 110, a public telephone network (not shown), or some other method. In one embodiment, the member restaurant 35 houses an on-site service appliance 36 and/or a point-of-sale system (“POS”) (not shown).
The member restaurant 35 and a delivery service may receive an order using the on-site service appliance 36. The member restaurant 35 then prepares food for the order, which is delivered by a delivery driver 118 to the corresponding diner. When the restaurant server application fails to transmit the order to the appliance 36, the restaurant server application generates a ticket for such failure and stores the ticket into the database 104. Additionally, the restaurant server application generates a ticket and stores it into the database 104 when the restaurant 35 fails to confirm the transmitted order. In a further implementation, the server 140 is coupled to a communication server (not shown) over a network (such as an intranet or extranet). The communication server is used to communicate with the diners 116 over the Internet 110 or a public telephone network (not shown).
The driver server application communicates with a driver mobile device 122, which runs a driver mobile software application, over the Internet 110. Alternatively, the driver server application communicates with the driver mobile device 122 via the communication server. The driver mobile device 122 (which can be one of the mobile devices 1902,1904,1906 pictured in FIG. 19) includes a housing that comprises a touchscreen, a display, a processor, a wireless network interface, and some amount of memory. For example, the driver mobile device 122 is a smartphone, such as an iPhone device created by Apple Inc.
The delivery driver 118 uses the driver mobile device 122 to retrieve orders from the driver server application for delivery, as more fully set forth in U.S. application No. 61/640,439, which was previously incorporated by reference. In addition, the delivery driver 118 uses the driver mobile device 122 to send order delivery statuses to the driver server application. When an order is delivered late, the driver server application may generate a ticket of late order type and stores the ticket into the database 104. Furthermore, the driver mobile device 122 can send order delivery statuses to the diner device 126 over the Internet 110 or a public telephone network, either directly or through the restaurant service.
The ticket server application accesses the database 104 to retrieve and update customer service tickets. Furthermore, the ticket server application communicates with customer service representative devices 144, coupled to the server 140 over a network 146 (such as an intranet or extranet). Customer service representatives 142 uses the devices 144 (which can be one of the devices pictured in FIG. 19) to request tickets from the restaurant service server 140. Additionally, the devices 144 send ticket updates to the ticket server application.
A sample display 200 of the devices 144 showing customer service tickets for a customer service representative 142 is illustrated by reference to FIGS. 2 and 3. A panel 202 of the display 200 displays a list of tickets that the representative has claimed and is going to work on. When the representative 142 claims a ticket (such as tickets 210,212,214), the status of the claimed ticket changes from unclaimed to claimed. Accordingly, the device 144 sends the status update for the claimed ticket to the restaurant service server 140 which subsequently stores the status update into the database 104. Furthermore, the claimed ticket is no longer available to be claimed by other representatives.
Each ticket, such as the ticket 214, may include an order id 232 that is associated with the ticket 214, a serving restaurant 234 for the order, a type 236 of the ticket 214, and a time 238 indicating the age of the ticket 214. A sample ticket data structure 1600 is further illustrated by reference to FIG. 16. The ticket data structure 1600 includes a ticket ID 1602 and a ticket type 1604. In one implementation, the ticket type 1604 is a failed type which indicates that the restaurant server application failed to transmit an order to the appliance 36. Such failure can be caused by various reasons, such as malfunctioning of the appliance 36 or a poor network connection between the restaurant server application and the appliance 36. In a different implementation, for example, such failure is caused by malfunctioning of a fax machine used by the restaurant 35 to receive orders from the restaurant server application.
A non-confirm type for a ticket indicates that the restaurant server application failed to receive a confirmation for an order within a particular time frame (such as ten minutes after successful transmission of the order to the restaurant 35) from the restaurant 35. A callback blackout item type for a ticket indicates that the ticket is programmatically generated when a restaurant calls the restaurant service to black out a menu item to make it unavailable to diners. A callback order issue type for a ticket indicates that the ticket is programmatically generated when a restaurant or a diner calls the restaurant service for an order issue. Similarly, a callback technical issue type for a ticket indicates that the ticket is programmatically generated when a restaurant or a diner calls the restaurant service for a technical issue. In one implementation, tickets of the failed, non-confirm, callback blackout item, callback order issue, callback technical issue, and some other types are categorized as urgent tickets. Tickets that are not in the urgent category are collectively termed as non-urgent tickets.
Non urgent tickets include, but are not limited to, pause restaurant type, scheduled task type, user review type, and data error type. The pause restaurant type indicates to a customer service representative that she makes a restaurant unavailable to diners until the representative can successfully transmit a test order to the restaurant and receive a confirmation of the test order. The scheduled task type indicates a scheduled task, while the user review type indicates tickets that are generated when diners respond to a survey sent to them after their first experience with placing an order using the restaurant service. The data error type indicates tickets that are created when diners report errors in restaurant menus.
Different from urgent and non-urgent categories, a general service category includes appointment, restaurant time-out, restaurant inactive, and technical support types of tickets. The appointment type indicates tickets for scheduling appointments, while the technical support type indicates tickets that are programmatically generated for technical support issues. The restaurant time-out type indicates tickets that are automatically generated when a member restaurant is in a timed out state and the last activity from the restaurant is more than two hours before the current time. Similarly, the restaurant inactive type indicates tickets that are automatically generated when a member restaurant is in an inactive state and the last activity from the restaurant is more than forty eight hours before the current time.
The ticket data structure 1600 further includes a ticket creation time 1606 and a ticket snooze wakeup time 1608. The ticket creation time 1606 indicates the date and time when the ticket is generated. Alternatively, the ticket creation time 1606 represents the date and time when the ticket is first stored into the database 104. The ticket snooze wakeup time 1608 indicates a time when the underlying ticket is expected to be handled. For example, where a ticket is scheduled to be processed six hours in the future, the ticket snooze wakeup time 1608 is set to the future time that is six hours from the present time.
The ticket data structure 1600 also includes a ticket category 1610 indicating whether the underlying ticket is an urgent ticket, non-urgent ticket, or general service ticket. Alternatively, the ticket category information is derived from the ticket type 1604, instead of stored in the database 104. Additionally, the sample ticket data structure 1600 includes a ticket claiming representative ID 1612 and a ticket claiming time 1614. The ticket claiming representative ID 1612 identifies the customer service representative who claimed the underlying ticket, while the ticket claiming time 1614 identifies the time when the customer service representative claimed the underlying ticket. When a ticket is associated with an order, the data structure 1600 further includes an associated order ID 1616 that identifies the order.
Where the order is cancelled (such as by the serving restaurant) or is delivered late, the data structure 1600 includes an associated order cancellation reason 1618 and an associated order delayed delivery time amount 1620 respectively. Alternatively, the order cancellation reason and the delayed delivery time amount are stored in an order data structure and are retrieved based on the order ID 1616. In addition, the data structure 1600 includes a serving restaurant for the associated order 1622. Alternatively, the serving restaurant for the associated order 1622 is retrieved from the database 104 based on the associated order ID 1616. Furthermore, the data structure 1600 includes a ticket status 1624. For example, when a ticket is resolved, the ticket status 1624 may be set to “Resolved.” A person of ordinary skill in the art will appreciate that the data structure 1600 may include other fields to practice the present teachings. For example, the data structure 1600 may include a note field (not shown) and a history field (not shown).
Turning back to FIG. 2, unclaimed tickets are shown in panels 204 and 206. The panel 204 displays unclaimed urgent tickets 216,218, while the panel 206 displays unclaimed non-urgent tickets 220,222,224,226. Additionally, the display 200 shows an unclaimed tickets summary panel 208, which displays the amount of tickets of each type within both urgent and non-urgent categories. For example, as indicated at 228, there are two ticket of the non-confirm type. In one implementation, each line in the panel 208 is a link, that can be clicked to display the corresponding tickets displayed in the panels 204 and/or 206.
Turning now to FIG. 3, a sample display 300 displaying customer service tickets for a customer service support manager is shown. A panel 302 of the display 300 shows list of tickets that the manager has claimed and is going to work on. A second panel 304 displays claimed tickets 310,312,314,316,318,320. The second panel 304 also displays unclaimed tickets 322 and 324. The second panel 304 indicates the claiming representative for each of the claimed tickets 310,312,314,316,318,320. For example, the user name of the representative who claimed the ticket 310 is shown as “jtorboo.” The display 300 further shows a general service ticket summary 308 inside an unclaimed tickets summary panel 306. The process by which the device 144 retrieves the tickets and displays them on its screen is further illustrated by reference to FIG. 4.
Referring to FIG. 4, at 402, a software application running on the device 144 sends a login request to the ticket server application or different server application that handles user authentication and authorization. In one implementation, the software application is a web browser, such as the popular Internet Explorer and Chrome browsers. In such a case, the ticket server application provides web pages, containing customer service ticket data, to the web browser. For example, upon successful authentication and/or authorization of the login request, the ticket server application generates one or more web pages of tickets. Subsequently, the one or more web pages are displayed by the web browser.
In a different implementation, upon successfully logging into the server 140, at 404, the software application sends a request for claimed and unclaimed tickets to the ticket server application. The software application may also request for tickets from the ticket server application under other conditions. For example, the software application periodically requests for updates of tickets (such as new tickets created by the restaurant server application). In a different implementation, the ticket server application sends new tickets or changed tickets to the software application when they become available. At 406, the software application receives a list of claimed tickets by the representative 142. At 408, the software application receives a list of unclaimed tickets. At 410, the software application checks whether the representative 142 has a managerial role. If so, at 412, the software application requests for and receives a list of claimed tickets by a group of customer service representatives under her supervision. Alternatively, at 412, the software application receives the list without requesting for it.
In an alternate embodiment, the software application receives a single list of tickets and parses the single list into different lists of tickets (such as a list of claimed tickets and a list of unclaimed tickets) based on ticket category, ticket type, the role of the representative, and/or other criteria. At 414, the software application receives summary data of unclaimed tickets, such as those displayed in the panels 208 and 306 respectively. Alternatively, the software application parses the list of unclaimed tickets to derive the summary data of the unclaimed tickets.
At 416, the software application displays the list of claimed tickets in, for example, the panels 202 and 302. At 418, the software application displays the list of unclaimed tickets in, for example, the panels 204,206,304. At 420, the software application displays the summary data of the unclaimed tickets in, for example, the panels 208 and 306. The software application, at 422, checks whether the representative 142 has a managerial role. If so, at 424, the software application displays a list of tickets claimed by her subordinates in, for example, the panel 304. When the representative 142 claims or works on a ticket, the status of the ticket may be changed. Accordingly, at 426, the software application sends an update for the ticket to the ticket server application, which may save the change into the database 104.
The process by which the ticket server application provides the lists of tickets (shown in FIG. 4) to the device 144 is illustrated by reference to FIG. 5. At 502, ticket server application receives a request (such as the request sent at 402) for tickets from the customer service representative device 144. At 506, the ticket server application determines the role of the customer service representative 142. For example, the ticket server application checks a user credential database (not shown) to determine the role of the customer service representative based on an identifier (such as a user ID) of the representative 142. Alternatively, at 504, the ticket server application authenticates and authorizes a login request (such as the login request sent at 404) from the device 144. At 508, the ticket server application checks whether the role of the representative 142 is a managerial role. If so, at 510, the ticket server application retrieves the most recently (such as within a week or a month) claimed tickets by all customer service representatives under her supervision from the database 104.
Regardless of the role of the representative 142, at 512, the ticket server application retrieves the most recently claimed tickets (such as tickets claimed in a previous week or month) by the representative 142 from the database 104. Additionally, at 514, the ticket server application retrieves the unclaimed tickets from the database 104. At 516, the ticket server application generates summary data (such as that displayed in the panels 208 and 306) for the unclaimed tickets. Alternatively, the ticket server application skips 516 and leaves the software application running on the device 144 to generate the summary data for the unclaimed tickets. At 518, the ticket server application sends the claimed tickets, the unclaimed tickets, and the summary data to the device 144. At 520, the ticket server application receives a status update (such as the update sent at 420) for a ticket from the device 144. Accordingly, at 522, the ticket server application stores the status update for the ticket into the database 104.
The order in which tickets within a category are displayed are determined based on various factors. For example, the factors include the type of a ticket, the age of the ticket, the age of the order associated with the ticket, etc. The age of the ticket is the amount of time measured from the time when the ticket was created. Similarly, the age of the order is the amount of time measured from the time when the order was created. A process 600 by which the device 144 or the ticket server application determines the order in which urgent tickets are displayed is illustrated by reference to FIG. 6. At 602, the ticket server application first selects tickets with a snooze wakeup time that is a first predetermined number (such as sixteen) of minutes old for display. In other words, when a ticket has a snooze wakeup time set and the snooze wakeup time is sixteen or more minutes in the past from the current time, the ticket will be selected at 602. In one implementation, the ticket server application generates a web page to show the tickets, selected at 602, at top of the web page.
At 604, the ticket server application then selects tickets of non-confirm and failed types and their associated orders are a second predetermined number (such as seventeen) of minutes old. In a further implementation, the ticket server application selects additional tickets based other criteria, such as, for example, pickup order type, user flag type, and different predetermined numbers of minutes of ticket age. In a different implementation, the ticket server application may consider more or less criteria in determining display order of a category of tickets.
Similar to the process 600, a process 700 by which the device 144 or the ticket server application determines the order in which non-urgent tickets are displayed is illustrated by reference to FIG. 7. At 702, the ticket server application first selects tickets of pause and scheduled task types with a snooze wakeup time that is a first predetermined number (such as sixteen) of minutes old for display. In a further implementation, the ticket server application selects additional tickets based other criteria, such as, for example, user review type and data error type of tickets.
When tickets are displayed on the device 144, the customer service representative 142 can work on a ticket by selecting and opening the ticket. A sample screenshot of a ticket display is illustrated by reference to FIG. 17. The screen 1700 shows, for example, the ticket number, status, type, reason, corresponding restaurant, corresponding order, and corresponding diner. Additionally, the screen 1700 allows the representative 142 to contact the corresponding restaurant and/or diner, compensate the corresponding diner according to a diner credit policy, adjust the corresponding order, adjust the corresponding restaurant, and update the ticket. For example, to compensate a diner, the representative 142 sets an amount of money, such as ten dollars, and/or selects a reason (e.g., delivery/restaurant problem) for such compensation.
As an additional example, the representative 142 can set a snooze wakeup time for the ticket. In such a case, the change to the ticket is sent to the ticket server application at 420. In such a case, the ticket is expected to be handled when the snooze wakeup time arrives. When a change is made to the ticket, the software application running on the device 144 sends the update to the ticket server application which subsequently stores the update into the database 104. Furthermore, the ticket server application may perform additional functions in response to the update or a request. For example, when the representative 142 requests to pause the corresponding restaurant by click a “Pause Restaurant” button on the screen 1700, process 800 (illustrated by reference to FIG. 800) performed by the ticket server application or the restaurant server application.
Turning now to FIG. 8, at 802, the restaurant server application receives a request to pause a restaurant. In one implementation, the restaurant server application retrieves the request, stored into the database 104 by the ticket server application, from the database 104. In a different implementation, the restaurant server application receives the request from the ticket server application. At 804, the restaurant server application pauses the restaurant by marking the restaurant as unavailable to diners. In one implementation, the restaurant server application makes a data change to the restaurant in the database 104
Once the restaurant is paused, the restaurant server application or a background process may continue to check whether the restaurant is reachable. If so, the restaurant server application unpauses the restaurant, i.e., the restaurant server application changes the status of the restaurant from paused to unpaused or normal. Accordingly, the restaurant becomes available for diners to place orders. To do so, at 806, the restaurant server application generates a test order for the restaurant. A test order, which is different from a normal order placed by a diner, is used to check whether a restaurant can successfully receive and confirm orders. The restaurant is not expected to prepare food for test orders. Examples of a test order can be found in U.S. application Ser. No. 13/227,771, which was previously incorporated by reference.
At 808, the restaurant server application attempts to transmit the test order to the restaurant. At 810, the restaurant server application checks whether the transmission was successful. If so, at 812, the restaurant server application detects whether it has received an order confirmation from the restaurant for the test order within a threshold time (such as three or five minutes). If so, at 814, the restaurant server application unpauses the restaurant. Turning back to 810 and 812, where the restaurant server application did not successfully transmit the test order or receive an order confirmation for the test order within the threshold time from the restaurant, at 816, the restaurant server software application checks whether it has tried to send the test order to the restaurant a predetermined number of times (such as three). If so, at 818, the restaurant server application continues to pause the restaurant by not changing status of the restaurant. Otherwise, at 806, the restaurant server application generates a test order again.
Tickets are generated under various conditions by one or more devices within the customer service management system 100. Turning now to FIG. 9, a process 900 by which the restaurant server application generates a ticket is shown. At 902, a restaurant server application retrieves an order from the database 104. At 904, the restaurant server application checks whether it has failed to transmit the order to the serving restaurant of the order a predetermined number of times (such as three). If so, at 906, the restaurant server application generates a ticket with a failed type and associates the ticket with the order. For example, the restaurant server application configures the data structure 1600 for the ticket with information of the order, such as order ID and the serving restaurant of the order. At 908, the restaurant server application stores the generated ticket into the database 104.
Turning back to 904, if the restaurant server application has not failed to transmit the order to the serving restaurant for a threshold amount of times, at 910, the restaurant server application attempts to transmit the order to the serving restaurant again. At 912, the restaurant server application checks whether the age of the order is over a non-confirm time threshold (such as ten or fifteen minutes) and the order has been transmitted to the serving restaurant. If so, at 914, the restaurant server application generates a ticket with a non-confirm type and associates the ticket with the order. Otherwise, the restaurant server application processes the next order at 902.
The restaurant server application also generates a ticket when the restaurant requests to cancel the order. Turning now to FIG. 10, at 1002, the restaurant server application receives a request to cancel the order from the appliance 36. At 1004, the restaurant server application checks whether the restaurant requests to cancel an order due to unavailability of delivery drivers or the restaurant being closed. If so, at 1006, the restaurant server application generates a ticket with an order cancellation type and the cancellation reason being unavailability of delivery drivers or the restaurant being closed. At 1008, the restaurant server application stores the ticket into the database 104. Turning back to 1004, if the cancellation reason is not unavailability of delivery drivers or the restaurant being closed, at 1010, the restaurant server application checks whether the restaurant requests to cancel an order because the diner is out of its delivery area. If so, at 1012, the restaurant server application generates a ticket with an order cancellation type and the cancellation reason being out of delivery area.
Otherwise, at 1014, the restaurant server application checks whether the restaurant requests to cancel an order because the restaurant is too busy. If so, at 1016, the restaurant server application generates a ticket with an order cancellation type and the cancellation reason being that the restaurant is too busy. Otherwise, at 1018, the restaurant server application checks whether the restaurant requests to cancel an order because the restaurant refuses to serve the diner. If so, at 1020, the restaurant server application generates a ticket with an order cancellation type and the cancellation reason being that the restaurant refuses to serve the diner for some reason. Otherwise, at 1022, the restaurant server application generates a ticket with an order cancellation type and the cancellation reason unknown.
A process by which the driver server application generates a ticket is illustrated by reference to FIG. 11. At 1102, a driver server application receives an order delivery message from the delivery driver mobile device 122. At 1104, the driver server application retrieves order information for the delivered order from the database 104. At 1106, the driver server application checks whether the actual delivery time is over the scheduled delivery time for the order. If not, at 1108, the driver server application sets a delivered order status for the order and stores the status into the database 104. Additionally, at 1118, the driver server application stores the updated status for the order into the database 104.
Turning back to 1106, if the delivery is late, at 1110, the driver server application calculates the amount of time that the order is late for delivery. At 1112, the driver server application sets the calculated amount of time and a delivered status for the order and saves the update for the order into the database 104. At 1114, the driver server application generates a ticket for the late delivery with a late order type and the delayed delivery time amount. At 1116, the driver server application stores the ticket into the database 104. At 1118, the driver server application stores the updated status for the order into the database 104.
Like the driver server application, the order server application may also generate tickets. For example, when a diner reports a data error on a restaurant's menus while she is placing an order, the order server application receives the data error report and generates a ticket of data error type. Additionally, the order server application stores the ticket into the database 104.
The customer service management system 100 further allows the customer service support representative 142 to issue diner credits to diners. For example, when a restaurant cancels an order or the order is late for delivery, using the device 144 and restaurant service server 140, the representative 142 may issue a diner credit to the diner for the order by adding a certain amount of money to the diner's account. The diner can use the amount of money, such as five or ten dollars, in the diner's account to place her next order. Diner credits may also be automatically processed by the restaurant service server 140. For example, the restaurant service server 140 programmatically checks tickets and issues diner credits for various reasons, such as late delivery or cancellation. Issuance of diner credits is governed by one or more diner credit policies. An illustrative diner credit policy 1200 for late orders is illustrated by reference to FIG. 12.
The diner credit policy 1200 is shown as a table, which includes a minimum late time column 1202, a maximum late time column 1204, a minimum credit amount column 1206, and a maximum credit amount column 1208. The illustrative diner credit policy 1200 includes three diner credit rules 1210,1212,1214. For the diner credit rule 1210, the diner credit amount that can be issued when an order is late less than T1 minutes, is between x dollars and xx dollars. As used herein, each of the symbols T1, T2, T3, x, xx, y, yy, z and zz represents a number, such as 1, 4.3, 11.6 or 40. Similarly, for the diner credit rule 1212, the diner credit amount that can be issued when the order is late between T1 and T2 minutes, is between y dollars and yy dollars. Where the order is late between T2 and T3 minutes, the diner credit amount that can be issued is between z dollars and zz dollars. The representative 142 may have some discretion as to how much diner credit amount to issue when the order is delivered for more than T2 or T3 minutes late. Alternatively, the diner credit amount to issue is proportional to how much time the order is late beyond T2 or T3 minutes.
In one implementation, the diner credit policy 1200 is applied by the customer service representative device 144 and the restaurant service server 140, as illustrated by reference to a sequence diagram 1300 in FIG. 13. At 1302, the device 144 sends a request for tickets associated with late orders to the restaurant service server 140. At 1304, the ticket server application or a different server application running on the server 140 retrieves tickets associated with late orders from the database 104. At 1306, the ticket server application sends the requested tickets back to the device 144. Responsive to a ticket selection by the representative 142, at 1308, the device 144 selects a ticket for diner credit issuance. At 1310, the device 144 sends a request for a diner credit policy to the ticket server application. The ticket server application retrieves a diner credit policy (such as the policy 1200) from the database at 1312, and returns the diner credit policy to the device 144 at 1314. Alternatively, the device 144 requests for the diner credit policy before or after it requests for tickets at 1302.
At 1316, based on the amount of time that the order associated with the selected ticket is late, the device 144 selects and sets a diner credit amount for the ticket. For example, when the amount of time that the order is late is ten minutes, the diner credit amount would be five dollars in accordance with the policy 1200. At 1318, the device 144 sends the selected diner credit amount to the ticket server application. Responsively, at 1320, the server validates the selected diner credit amount against the diner credit policy to ensure compliance with the diner credit policy. For example, the selected amount has to be in compliance with the gift policy.
Multiple diner credits may be issued for a single ticket. For example, a ticket may be thirty five minutes late. Under the policy 1200, the diner for the order should be issued a diner credit with ten dollars. However, the diner may have been already issued a diner credit with five dollars when the ticket was late for less than thirty minutes. In such a case, only the difference between five dollars and ten dollars, i.e., five dollars, should be added to the already issued diner credit. The total diner credit amount for the diner should be ten dollars, instead of fifteen dollars or one diner credit with five dollars and another diner credit with ten dollars. Accordingly, at 1322, the ticket server application adjusts the validated amount when multiple diner credits are issued for a ticket. At 1324, the ticket server application stores the adjusted diner credit amount (or the validated amount when no adjustment is made) into the database 104. Furthermore, at 1326, the ticket server application sends a confirmation message indicating the issuance of the diner credit to the device 144.
A different diner credit policy 1400 for order cancellation is illustrated by reference to FIG. 14. The diner credit policy 1400 is illustrated as a table that includes a cancellation reason column 1402, a diner credit amount for first time diners column 1404, and a diner credit amount for repeat diners column 1406. The cancellation reason column 1402 indicates the reason for cancellation of an order. The example diner credit policy 1400 includes a diner credit rule 1408. The cancellation reason 1402 for the rule 1408 is that a restaurant requests to cancel an order because there are no delivery drivers available for delivering the order. In such a case, the diner for the order can be issued a diner credit with m (a number, such as 2 or 9.5) dollars if it is the first time that the diner used the restaurant service to place the order. Where it is not the first time that the diner used the restaurant service to place the order, the diner can be issued a diner credit with mm (a number, such as 4 or 7.6) dollars. In a further implementation, the diner credit policy 1400 includes additional diner credit rules. These additional diner credit rules are applicable where, for example, the restaurant server application cannot contact the serving restaurant for an order to successfully transmit the order to the restaurant, the meal for the order is unavailable and the restaurant server application or the restaurant 35 cannot contact or reach the diner, diner is out of the restaurant's delivery area, the restaurant is too busy, various issues occur with the restaurant service, or the restaurant refuses to serve the diner for certain reasons.
A process 1500 by which the restaurant service server 1400 issues a diner credit to a diner for order cancellation under the diner credit policy 1400 is illustrated by reference to FIG. 1500. In a different implementation, the functionality of the process 1500 is collectively performed by the device 144 and the restaurant service server 140. At 1502, the ticket server application retrieves a ticket associated with a cancelled order from the database 104. Alternatively, at 1504, the ticket server application receives the ticket from another device (such as the restaurant server application) over a network connection. At 1506, the ticket server application determines a cancellation reason for the cancelled order, such as the cancellation reasons illustrated in FIG. 14. At 1508, the ticket server application retrieves a diner credit policy or rule (such as the gift policy 1400 or diner credit rules 1408,1410,1412,1414,1416,1418,1420,1422) for the cancellation reason from the database 104. At 1510, the ticket server application checks whether the diner associated with the cancelled order is a first time diner of the restaurant service. If so, at 1514, the ticket server application selects a diner credit amount (such as ten dollars under the diner credit rule 1412) that is intended for first time diners for the diner.
Otherwise, at 1512, the ticket server application selects a diner credit amount (such as five dollars under the diner credit rule 1412) that is intended for repeat diners for the diner. At 1516, the ticket server application checks whether the selected diner credit amount exceeds a maximum amount (such as ten or twenty dollars). If so, at 1518, the ticket server application sets the diner credit amount to the maximum amount and stores the diner credit into the database 104. Otherwise, at 1520, the ticket server application sets the diner credit amount to the selected amount and stores the diner credit into the database 104.
For various reasons, such as shortage of ingredients, the restaurant 35 may want to make a menu item unavailable for selection to place orders by diners. In such a case, the restaurant 35 sends a request to black out the menu item to the restaurant service. In one implementation, the restaurant 35 places a telephone call or sends a fax to a customer service representative to request a blackout of the menu item. Alternatively, the restaurant 35 using, for example, the on-site service appliance to send an email or application message to the restaurant service server 140 requesting to black out the menu item. The blackout request can be handled immediately and automatically by a server application, such as the restaurant server application. In a different embodiment, in response to the blackout request, the restaurant server application generates a customer service ticket of the callback blackout item type, and stores the ticket into the database 104. Subsequently, a server application, such as the restaurant server application or the ticket server application, retrieves the blackout request from the database 104 and handles it as described by reference to FIG. 18.
Referring to FIG. 18, at 1802, the restaurant server application retrieves the request to black out the menu item for the restaurant 35. At 1804, the restaurant server application retrieves the menu item and/or the corresponding menu from the database 104. At 1806, the restaurant server application marks the menu item as unavailable to order placement. Subsequently, at 1808, the restaurant server application writes the change to menu item back into the database 104. Alternative approaches to black out the menu item can be employed. For example, the restaurant server application may delete the menu item from the database 104.
Obviously, many additional modifications and variations of the present disclosure are possible in light of the above teachings. Thus, it is to be understood that, within the scope of the appended claims, the disclosure may be practiced otherwise than is specifically described above. For example, the functionality of the restaurant service server 140 can be performed by multiple physical servers, such as a ticket server, a restaurant server, an order server and a driver server. In one embodiment, the ticket server application, the restaurant server application, the order server application and the driver server application are hosted on a ticket server, a restaurant server, an order server and a driver server respectively.
The foregoing description of the disclosure has been presented for purposes of illustration and description, and is not intended to be exhaustive or to limit the disclosure to the precise form disclosed. The description was selected to best explain the principles of the present teachings and practical application of these principles to enable others skilled in the art to best utilize the disclosure in various embodiments and various modifications as are suited to the particular use contemplated. It is intended that the scope of the disclosure not be limited by the specification, but be defined by the claims set forth below.

## Claims

1. A customer service system for managing made-to-order food tickets for a restaurant service comprising:
i) a restaurant service server including a software application and operatively coupled to a database;
ii) the software application retrieves a ticket from the database, the ticket generated and stored into the database by a restaurant service server application, the ticket generated in response to:
(1) a failure to transmit an order to a restaurant by the restaurant service server or confirm the order by the restaurant;
(2) a late order message sent to the restaurant service server over a wide area network from a delivery driver mobile device; or
(3) a restaurant cancellation message sent to the restaurant service server over the wide area network from an on-site service appliance;
iii) the software application determines a type of the ticket;
iv) the software application retrieves a diner credit policy for the type from the database;
v) the software application sets a diner credit amount in compliance with the diner credit policy for the ticket; and
vi) the software application stores the diner credit amount for the ticket into the database.

2. The system of claim 1 wherein the restaurant cancellation message comprises a restaurant cancellation reason.

3. The system of claim 2 wherein the restaurant cancellation reason is one of a delivery driver unavailable reason, a restaurant closed reason, an out of delivery area reason, a restaurant busy reason, or a not serving diner reason.

4. The system of claim 1 wherein the diner credit policy comprises a minimum diner credit amount and a maximum diner credit amount.

5. The system of claim 4 wherein:
i) the diner credit policy comprises a minimum late time and a maximum late time;
ii) the set diner credit amount is between the minimum diner credit and the maximum diner credit; and
iii) the type of the ticket indicates a late order status.

6. The system of claim 3 wherein the software application further:
i) receives a request for the ticket and the diner credit policy from a customer service representative device over a network connection;
ii) sends the ticket and the diner credit policy to the customer service representative device over the network connection; and
iii) receives the set diner credit amount for the ticket from the customer service representative device over the network connection.

7. The system of claim 3 wherein the diner credit amount correlates with a diner repeat status.

8. A method for managing made-to-order food tickets for a restaurant service, the method operating within a restaurant service server comprising:
i) retrieving a ticket from a database, the ticket generated by a restaurant service server application running on the restaurant service server, the ticket generated in response to:
(1) a failure to transmit an order to a restaurant by the restaurant service server or confirm the order by the restaurant;
(2) a late order message sent to the restaurant service server over a wide area network from a delivery driver mobile device; or
(3) a restaurant cancellation message sent to the restaurant service server over the wide area network from an on-site service appliance;
ii) determining a type of the ticket;
iii) retrieving a diner credit policy for the type from the database;
iv) setting a diner credit amount in compliance with the diner credit policy for the ticket; and
v) storing the diner credit amount for the ticket into the database.

9. The method of claim 8 wherein the restaurant cancellation message comprises a restaurant cancellation reason.

10. The method of claim 9 wherein the restaurant cancellation reason is one of a delivery driver unavailable reason, a restaurant closed reason, an out of delivery area reason, a restaurant busy reason, or a not serving diner reason.

11. The method of claim 8 wherein the diner credit policy comprises a minimum diner credit amount and a maximum diner credit amount.

12. The method of claim 11 wherein:
i) the diner credit policy comprises a minimum late time and a maximum late time;
ii) the set diner credit amount is between the minimum diner credit and the maximum diner credit; and
iii) the type of the ticket indicates a late order status.

13. The method of claim 10 further comprising:
i) receiving a request for the ticket and the diner credit policy from a customer service representative device over a network connection;
ii) sending the ticket and the diner credit policy to the customer service representative device over the network connection; and
iii) receiving the set diner credit amount for the ticket from the customer service representative device over the network connection.

14. The method of claim 10 wherein the diner credit amount correlates with a diner repeat status.