Patent Description:
<NPL>) is a general presentation of Amazon Alexa on the internet encyclopedia Wikipedia.

<NPL>), relates to the idea of using Alexa for booking a haircut service.

<CIT> (<CIT>) relates to a method and application for booking an appointment with a mobile hairstylist, a freelance hairstylist or a local networked salon.

Traditionally, salon services are booked specifically with a particular salon with which a user is already familiar and that may or may not have online selection and booking abilities. In many cases, appointments are made by calling the particular salon and requesting an appointment time. Some salons have limited online selection and booking abilities; but, each salon maintains its own bookings, so the user must already know which salon she wishes to visit. Once the user knows which salon the user wants to visit, the user can visit that salon's website, which may or may not have online selection and booking abilities. If the salon does have such abilities, the ability is limited to picking a predefined stylist and/or time for an appointment. If the salon does not have such abilities, the user must call the salon. Currently, there does not exist a tool for using voice to find a salon and make an appointment. Therefore, improvements are desirable.

In addition, traditionally a server is a static set of machines with fixed amount of processors and machine readable memories. With fixed amounts of processors and memories, such a static server has fixed capacities of processing power and memory resources. The fixed capacities are problematic for application developers as well as data centers. Demand for computational resources of an application varies from time to time. For example, when the application was freshly launched to the public, demand for the application may be low. The fixed capacity of the static server may be much greater than the demand, causing waste of capital, time, and human resources to maintain the server. However, after the application is on the market for a period of time, the demand for the application may grow and overwhelm the capacity of the static server, potentially causing jamming or crashing of the server. As such, the traditional static server architecture inevitably mismatches supply and demand, providing either too much or not enough computational resources.

The embodiments herein disclose voice check-in platforms implemented with serverless computing architecture and application management methods. The voice capable platform analyzes a voice request of a user to find a particular service and presents options to the user for such service. The serverless architecture responds to demand dynamically. The serverless architecture is automatically scalable to match the change of demand, providing no mismatch between demand and supply of computational resources.

This disclosure uses a salon application that uses a voice check-in platform, as an example of an application management. It is noted that the computational architecture disclosed is not limited to a salon application. Other software applications such as finding a car, a house, a restaurant, a nail shop, a movie, a hotel, a service, or the like can all be similarly managed by the voice platform.

A voice check-in platform includes a salon application associated with a voice capable device, wherein a user requests via voice an appointment for a salon service. The platform includes a location service in communication with the salon application for finding a salon nearby a user; a salon services API in communication with the salon application for finding a requested salon service and time for appointment for the salon; and a database interface responding to a request for making an appointment with the salon.

A method of using a voice check-in platform includes instructions, when executed by a processor, that cause the processor to execute actions including: receiving, by a first processor, a request received via an associated voice capable device for booking an appointment for a service provided by a salon, wherein the first processor is a processor of a device, the device includes machine readable memory accessible by the first processor; finding a salon and service, by the first processor in response the request; prompting, by the first processor, a booking for the salon and service via an associated voice capable device; and upon receiving, by the first processor, a confirmation from the user, booking the salon and service.

The present invention relates generally to a voice check-in platform implemented with serverless computing architecture. The platform dynamically responds to service requests without maintaining a fixed amount of computational resources. The present specification further discloses application management using the platform implemented with serverless computing architecture. The platform's serverless database architecture has the benefit of being scalable to match the change of demand. A database center that operates this platform can dynamically allocate computational resources to any client/application whenever there is a need. The computational resources operated by the database center can be efficiently allocated to meet the demands. An application developer who uses the services provided by the database center, does not have to worry about the large amount of hardware investments. There is no need for the application developer to provision a piece of hardware. There is no need for the application developer to increase or decrease the amount of physical hardware to meet the change of the demand. The platform, serverless database is event driven.

The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter that form the subject of the claims of the invention. It should be appreciated by those skilled in the art that the concepts and specific embodiments disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the scope of the invention as set forth in the appended claims. The novel features that are believed to be characteristic of the invention, both as to its organization and method of operation, together with further objects and advantages will be better understood from the following description when considered in connection with the accompanying figures. It is to be expressly understood, however, that each of the figures is provided for the purpose of illustration and description only and is not intended as a definition of the limits of the present invention.

For a more complete understanding of the disclosed systems and methods, reference is now made to the following descriptions taken in conjunction with the accompanying drawings.

In general, the present disclosure relates to a voice check-in platform for booking salon services through a salon application. The voice check-in system interfaces with a voice capable device that recognizes voice commands, such as Alexa. The user can say to the voice capable device that the user needs to book a salon service, such as a haircut. The voice capable device then interfaces with a salon application running on a serverless backend architecture to start the booking process. If the salon application recognizes the user, for example, by prior use, the salon application can look-up the user and the user's preference to quickly suggest a salon service. If the user is not recognized, the salon application requests additional information from the user through the voice capable device. The user can then select the salon, the stylist and book a time with little effort simply by using voice commands. The user can also cancel an appointment by using voice commands.

<FIG> shows a block diagram of a voice-check-in platform <NUM> using a serverless architecture (hereinafter the "platform") applying to a salon application according to one example embodiment of the disclosure. The arrows in <FIG> mean bidirectional data connections between the referred two blocks. A "data connection" is an electronic connection that communicates electronic information, which may include digital and/or analog data. A data connection may be done through a wired connection, e.g., USB, Ethernet, local area network, etc. A data connection may be done through a wireless connection, e.g., IEEE <NUM>. 11x (Wi-Fi), long term evolution (<NUM> LTE), or the like. The data connection may be secured, e.g., encrypted, communication. The data connection may be unsecured, e.g., clear text, communication.

The platform <NUM> includes a voice capable device <NUM>, a voice module <NUM>, a salon application <NUM>, a supply chain API <NUM>, a salon services API <NUM>, a demand generation application <NUM>, a database <NUM>, logs <NUM>, a pay service <NUM> and a location service <NUM>. The voice capable device <NUM> can be any device through which the user interacts via voice to express an interest, intent or request for a service. For example, the voice capable device can be an Alexa capable device through which the user communicates via voice its wishes to Alexa. In one embodiment, a user uses Alexa to express a request to book a haircut, shampoo and hair color.

There can be a plurality of salon applications <NUM> associated with different examples of voice capable devices <NUM>. The salon application <NUM> communicates with the voice capable device <NUM>. The interest, intent, or need for finding a salon is received by the salon application <NUM> via the voice capable device <NUM>. The salon application <NUM> may receive, for example, the identity of the user and the user's location. The identity of the user may come, for example, from an account name of the user for Alexa. Using the above example, the salon application <NUM> receives the user identification, the request for a haircut, shampoo and color and the current location of the user.

The voice capable device <NUM> and the salon application <NUM> may be a single application, according to another example embodiment. For example, the salon application <NUM> could be a mobile application on a user's mobile device that the user interacts with to convey the user's interest or desire and with which the user gets back information regarding the user's interest or desire. Apple's Siri may also be such an example.

The salon application <NUM> communicates with the supply chain API <NUM>, the salon services API <NUM>, the demand generation platform <NUM>, the database <NUM>, the logs <NUM>, the pay service <NUM> and the location service <NUM>. The salon application <NUM> communicates with the salon service API <NUM> to find the best matching salon(s) for the user's request. The analysis may include analysis to determine what service(s) the user needs, e.g., haircut, hair dying, hairstyle design, makeup, nail services, etc. The salon application <NUM> may also consider the location of the user and the potential salons within an area. The salon application may further consider a profile of the user for finding a salon, e.g., an age, a gender, a current hair style, an ethnicity, etc. The salon application may also consider the date and time desired by the user, as well as the availability of a salon for that desired time and date. For example, the user requested to book a haircut, shampoo and color with Alexa, probably intended to find a hair salon nearby the user for the purpose of exploring to make an appointment for a haircut. Alternatively, the user may have intended to use the same stylist, location and time as the user's last booking. The salon application can also mine data from salons to recommend appointments to same stylist, same schedule and same service(s) as previously booked in addition to seeking to sell additional services the user might be interested in.

The salon application <NUM> also communicates with the location services <NUM>. The location services <NUM> can find a location of a salon matched by the salon service API <NUM> or location of a user. The salon service API <NUM> may keep the updated information of all salons, e.g., the real-time availability of a salon, available service providers of a salon, specialties of a salon, etc. The salon services API <NUM> could use graph QL to query the API itself. The location services <NUM> can provide a map, e.g., Google maps, Bing maps, or the like. In one embodiment, the location services <NUM> may find a plurality of salons within a certain distance from the user. In another embodiment, the location services <NUM> may find a salon around a location designated by the user.

The salon application <NUM> returns one or more candidate salons back to the user via the voice capable device <NUM>, along with a stylist and/or time for the user to confirm the booking. If the user confirms the booking, then the salon application <NUM> communicates with the salon services API <NUM> to book the appointment. The salon application <NUM> could also include a list of stylists and/or booking times. The salon application <NUM> could also recommend a particular stylist or booking time based on underlying data or preferences. The user can then select or confirm choices, for example by picking a salon, a service, a stylist and an appointment time. The salon application <NUM> also communicates with a pay service <NUM> to arrange for payment of services or products.

The voice check-in platform runs on and within a serverless backend system <NUM>. The serverless backend system has no physical servers and no instances running; therefore, the code has to be written entirely different than in a server based system. The serverless backend system <NUM> includes a gateway API. The gateway API controls data throttling, e.g., defining the amount of megabytes per second and rate the serverless backend system is allowed to receive. When the gateway API receives a request to find a salon, it creates one or more caches to handle the request. The gateway API defines the cache size, the data structure of the cache, forward or backward linkings of the cache, and/or time-to-live of data in the cache.

Preferably, the database <NUM> is a dynamic database. The database <NUM> does not keep a fixed amount of memory for the salon application <NUM>. The database <NUM> provisions a space, e.g., a table, when requested by the salon application <NUM>. For example, only when a user requests to make an appointment with a salon, the database <NUM> creates a table to record the relevant information, e.g., identity of the user, booking date/time, salon location, interested services, interested stylist, etc. Because the database <NUM> dynamically allocates resources when requested, no unused memory is allocated to the application. In addition, the database <NUM> uses unstructured data. When an appointment is fulfilled or canceled, the table may be canceled after a certain period of time (time-to-live) according to a data retention policy. Thus, the database <NUM> is freely scalable (scaling up or down) as the demand of the application changes.

The salon service API <NUM> may keep the updated information of all salons, e.g., the real-time availability of a salon, available service providers of a salon, specialties of a salon, etc..

<FIG> shows a method <NUM> of a voice check-in platform that uses a serverless architecture as a backend system, according to one example embodiment of the disclosure. The method <NUM> can be executed by a first processor, for example, within the salon application <NUM> of <FIG>. The method <NUM> begins at start <NUM>. The method <NUM> includes <NUM> receiving, by a first processor, a request by a user to book an appointment, wherein the processor is accessible by the salon application <NUM>. The request can be received by a voice capable device, such as the voice capable device <NUM> of <FIG>. For example, a user may use Alexa to say "Hi Alexa, I need a haircut with shampoo and hair color too. " The voice capable device <NUM> would communicate that request along with a user identification to the salon application <NUM>.

The method <NUM> further includes <NUM> determining, by the first processor, if the user has previously checked-in on Alexa by using the user identification. If it is determined by the first processor that the user has, the salon application <NUM>, via the first processor, can <NUM> look up previous bookings, preferences and salons for the user and communicate with the salon services API to find available bookings matching the criteria. The salon application <NUM> then submits a response back to the voice capable device <NUM>, for example, "Sure, the first available is an 11am haircut at Supercuts at the hub. Would you like to check-in?" The method <NUM> includes <NUM> determining, by the first processor, how the user responds. If the user responds "Yes", then the salon application <NUM> can book the appointment through the salon services API <NUM> and send a message back to the user confirming check-in <NUM>, "Ok David, you're checked in for 11am the hub Supercuts location". The method ends at <NUM>. Referring back to <NUM>, if the user responds "No", then the method <NUM> ends at <NUM>.

Referring back to <NUM>, if the user indicates a request for a different location, the salon application <NUM> can communicate with both the location services <NUM> and the salon services API <NUM> to find alternative available salons <NUM> and send a response back to the user, "I found a few hair salons near you. The first one is Supercuts at the hub which is <NUM> miles away. Does this location work for you?". The method includes <NUM> determining, by the first processor, a user response. If the user responds "No", the method <NUM> loops back to find alternative salons nearby at <NUM>. The salon application <NUM> then prompts the user "Sure, the next is Supercuts on mission St. which is <NUM> miles away. Does this location work for you?". If the user responds "No", then the method <NUM> circles back again back to <NUM>.

Referring back to <NUM>, if the user responds "Yes", then the salon application <NUM> prompts <NUM> the user, "OK, what's your preferred time?". In this example, the user responds "between <NUM> to <NUM>:30am" and is received <NUM> by the salon application <NUM>. The method <NUM> includes <NUM> determining, by the first processor, if the user identification is known. In this example, the user identification is known, and the method <NUM> continues as previously described.

Referring back to <NUM>, if the user indicates a request for a different time, the salon application <NUM> communicates with the salon services API <NUM> to find alternative times and asks the user <NUM> via the voice capable device <NUM>, "OK, what's your preferred time?" and processing continues as previously described.

Referring back to <NUM>, if it is determined, by the first processor, that the user has not previously checked-in on Alexa, the salon application <NUM> returns to the user and prompts <NUM>, "Sure, what's your current location? You can tell me or use Alexa companion app to send you location. " In order to the user the latter, native permissions would be requested. The result of either returns a <NUM> response from the user of a location, such as "Liberty Street, Fremont of <NUM>". The salon application <NUM> uses the salon services API <NUM> to find available services and the location service application <NUM> to find salons within a certain distance of the user. Processing continues as previously described.

Referring back to <NUM>, if the user identification is not known, then the salon application <NUM> prompts <NUM> the user, "Sure, I need some information about you before I check you in. Please provide your phone number with area code, in case Supercuts need to call you about your check-in. In this example, the user <NUM> responds "<NUM><NUM><NUM>". The method continues at <NUM> to determine, by the first processor if the user's name has been found. If not, the salon application <NUM> prompts <NUM> the user its name. The user responds <NUM> "David New!" and processing continues as previously described. Referring back to <NUM>, if the user's name has been found, then processing continues as previously described.

<FIG> shows a method <NUM> for cancelling an appointment with a voice check-in platform. The method <NUM> begins at a start <NUM>. At <NUM>, the voice capable device <NUM> receives a request to cancel an appointment: "Hi Alexa, can you cancel my check-in at the hub Supercuts location?". The voice capable device <NUM> communicates the request along with the user identification to the salon application <NUM>. At <NUM>, the salon application <NUM> communicates with the salon services API <NUM> to look up the appointment. The salon application <NUM> communicates back to the voice capable device <NUM> and prompts the user at <NUM>: "Sure, do you want to cancel your 11am check-in for a haircut?". The method <NUM> continues at <NUM> with determining, by the first processor, if the user agrees to cancel. If the user responds "No", the salon application <NUM> responds "ok" and processing ends at <NUM>. If the user responds "Yes", the salon application <NUM> cancels the appointment at <NUM> through the salon services API <NUM> and sends a response to the user "Sure. Check-in is cancelled. " And processing ends at <NUM>.

<FIG> shows a method <NUM> for a serverless database handling a request from a salon application according to one embodiment of the disclosure. The method <NUM> includes <NUM> receiving, by a second processor of a serverless cloud service system, a request to make an appointment with a salon. The request includes a time, an identity of a client, an identity of a salon, and/or an identity of a stylist. The request is made by a first processor, e.g., a processor of salon application <NUM>, to the second processor, e.g., a processor of a database. In another embodiment, the salon at <NUM> is a salon that matches the users needs the best.

The method <NUM> includes <NUM> throttling, by the second processor, a traffic for processing the request. In one embodiment, the throttling of the traffic includes controlling the amount of megabytes of data allowed per second single direction and/or both directions. In one embodiment, the traffic throttling is done by a gateway API.

The method <NUM> includes <NUM> structuring, by the second processor, a cache for the request, wherein the structuring includes sizing a cache, liking caches, defining data retention policy for the cache, or the like. In one embodiment, <NUM> is executed by the gateway API. In one embodiment, when the gateway API receives a request, the gateway API accesses a cache configuration file from the dynamic database <NUM>. The cache configuration file includes at least one of the following information: a size of the cache, forward and/or backward linking of cache, data retention policy for the cache, data structure of the cache.

The method <NUM> includes <NUM> pulling, by the second processor, a configuration file specific for the request from a dynamic database. In one embodiment, the configuration file at <NUM> may be the cache configuration file as described in <NUM>. In another embodiment, the configuration file can be a configuration file of a table for storing salon appointment information.

The method <NUM> includes <NUM> creating, by the second processor, a table in the dynamic database. In one embodiment, the table is specific for storing salon appointment information. The table for storing salon appointment information includes at least one of the following: an identity of the user, a service item (e.g., haircut, hairstyling, hair coloring, manicure, etc.), a price or price range, an identity of a stylist/salon, an identity of a franchise of salon, a location of salon, a time/date for the appointment, a preferred amenity (e.g., parking), etc..

The method <NUM> includes <NUM> computing and storing, by the second processor, parameters for the request in the table. In one embodiment, the parameters of the table at <NUM> are global variables such that inquiries for write/read/search/modify within the database at the global level reveals the parameters (e.g., salon appointment related data).

The method <NUM> includes <NUM> returning, by the second processor, a content of the table to the first processor. The content may include the information related to the reservation, e.g., an identity of the user, a service item (e.g., haircut, hairstyling, hair coloring, manicure, etc.), a price or price range, an identity of a stylist/salon, an identity of a franchise of salon, a location of salon, a time/date for the appointment, a preferred amenity (e.g., parking), etc. After receiving the content of the table, the user may further modify, confirm, or cancel the appointment.

<FIG> is a block diagram illustrating a computing system <NUM> with which the architecture <NUM> and methods <NUM>, <NUM>, <NUM> can be implemented according to one embodiment of the disclosure. At least one central processing unit ("CPU") <NUM> is coupled to a system bus <NUM>. The CPU <NUM> may be a general purpose CPU or microprocessor, graphics processing unit ("GPU"), and/or microcontroller. The present embodiments are not restricted by the architecture of the CPU <NUM> so long as the CPU <NUM>, whether directly or indirectly, supports the operations as described herein. The CPU <NUM> may execute the various logical instructions according to the present embodiments.

The computing system <NUM> may also include random access memory (RAM) <NUM>, which may be synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous dynamic RAM (SDRAM), or the like. The computing system <NUM> may utilize RAM <NUM> to store the various data structures used by a software application. The computing system <NUM> may also include read only memory (ROM) <NUM> which may be PROM, EPROM, EEPROM, optical storage, or the like. The ROM may store configuration information for booting the computer system <NUM>. The RAM <NUM> and the ROM <NUM> hold user and system data, and both the RAM <NUM> and the ROM <NUM> may be randomly accessed.

The computing system <NUM> may also include an I/O adapter <NUM>, a communications adapter <NUM>, a user interface adapter <NUM>, and a display adapter <NUM>. The I/O adapter <NUM> and/or the user interface adapter <NUM> may, in certain embodiments, enable a user to interact with the computing system <NUM>. In a further embodiment, the display adapter <NUM> may display a graphical user interface (GUI) associated with a software or web-based application on a display device <NUM>, such as a monitor or touch screen.

The I/O adapter <NUM> may couple one or more storage devices <NUM>, such as one or more of a hard drive, a solid state storage device, a flash drive, a compact disc (CD) drive, a floppy disk drive, and a tape drive, to the computing system <NUM>. According to one embodiment, the data storage <NUM> may be a separate server coupled to the computer system <NUM> through a network connection to the I/O adapter <NUM>. The communications adapter <NUM> may be adapted to couple the computing system <NUM> to a network, which may be one or more of a LAN, WAN, and/or the Internet. The user interface adapter <NUM> couples user input devices, such as a keyboard <NUM>, a pointing device <NUM>, and/or a touch screen (not shown) to the computer system <NUM>. The display adapter <NUM> may be driven by the CPU <NUM> to control the display on the display device <NUM>. Any of the devices <NUM>-<NUM> may be physical and/or logical.

The applications of the present disclosure are not limited to the architecture of computing system <NUM>. Rather the computing system <NUM> is provided as an example of one type of computing device that may be adapted to perform the functions. For example, any suitable processor-based device may be utilized including, without limitation, personal data assistants (PDAs), tablet computers, smartphones, computer game consoles, and multi-processor servers. Moreover, the systems and methods of the present disclosure may be implemented on application specific integrated circuits (ASIC), very large scale integrated (VLSI) circuits, or other circuitry. In fact, persons of ordinary skill in the art may utilize any number of suitable structures capable of executing logical operations according to the described embodiments. For example, the computer system <NUM> may be virtualized for access by multiple users and/or applications.

A "data connection" is an electronic connection that communicates electronic information, which may include digital and/or analog data. A data connection may be done through a wired connection, e.g., USB, Ethernet, local area network, etc. A data connection may be done through a wireless connection, e.g., IEEE <NUM>. 11x (Wi-Fi), long term evolution (<NUM> LTE), or the like. The data connection may be secured, e.g., encrypted, communication. The data connection may be unsecured, e.g., clear text, communication. In this specification, if not otherwise specified, the term "data connection" includes both secured and unsecured communications. When the communication is specified as "secured data connection," it refers to encrypted communication, where any encryption/decryption methodology can be applied, including Stealth.

If implemented in firmware and/or software, the functions described above may be stored as one or more instructions or code on a computer-readable medium. Examples include non-volatile computer-readable media encoded with a data structure and computer-readable media encoded with a computer program. Computer-readable media includes physical computer storage media. A storage medium may be any available medium that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc includes compact discs (CD), laser discs, optical discs, digital versatile discs (DVD), floppy disks and Blu-ray discs. Generally, disks reproduce data magnetically, and discs reproduce data optically.

Claim 1:
A voice check-in platform (<NUM>) including a voice capable device (<NUM>), the platform comprising:
a salon application (<NUM>) associated with the voice capable device (<NUM>) having a location near a user, wherein the salon application (<NUM>) is configured so that the voice capable device (<NUM>) receives user input of a request for an appointment for a salon service;
a location service (<NUM>) in communication with the salon application (<NUM>), wherein the location service (<NUM>) is configured to find a salon nearby the location;
a salon services API (<NUM>) in communication with the salon application (<NUM>), wherein the salon services API (<NUM>) is configured to find the salon service and a time for the appointment for the salon service, wherein the salon services API (<NUM>) is further configured to keep an updated information of all salons such as real time availability, available service providers and specialities; and
a dynamic database (<NUM>) configured to store the appointment for the salon service, to use unstructured data, to create a table to record the relevant information only when a user requests to make an appointment with a salon, and to store cache configuration files including at least one of a size of the cache, forward or backward linking of the cache, data retention policy for the cache and data structure of the cache;
wherein the salon application (<NUM>), the location service (<NUM>) and the salon services API (<NUM>) run on a serverless backend system (<NUM>) having a gateway API configured to control data throttling by defining the amount of megabytes per second and rate the serverless backend system is allowed to receive and creates a cache having a size, data structure and forward or backward linking to handle the request,
wherein when the gateway API receives a request, the gateway API is configured to access a cache configuration file from the dynamic database (<NUM>) specific for the request.