# Patent

## Title
Travel services search

## Abstract

A system and method for searching travel services. A server computer receives a travel request from a client device operated by a user. The server computer identifies travel options according to the travel request. The server computer classifies the travel options into predefined groups, the classifying based on at least one of past transactions, input from domain experts, input from semantic analysts, analytics data, user preferences, and company policies. The server computer presents the options via presentation of the predefined groups.

## Background
RELATED APPLICATIONS
This application claims the benefit of Provisional Patent Application No. 61/488,567 filed on May 20, 2011, which is incorporated herein by reference in its entirety.


FIELD OF THE INVENTION
The present disclosure relates to traveling, and more specifically to searching for flights, hotels, and other travel services.
BACKGROUND OF THE INVENTION
Searching for flights, hotels, and other travel services is highly cumbersome today. The process inherently involves making a series of complicated decisions and tradeoffs and most tools today simply offload that burden entirely to the user. Tools today do not enable a user to trade-off between traveling attributes.
BRIEF SUMMARY OF THE INVENTION
Additionally, tools that provide recommendations relating to travel services to users are not personalized to the user.
In one aspect, a server computer receives a travel request from a client device operated by a user. The server computer identifies travel options according to the travel request. The server computer classifies the travel options into predefined groups, the classifying based on at least one of past transactions, input from domain experts, input from semantic analysts, analytics data, user preferences, and company policies. The server computer presents the options via presentation of the predefined groups.
In one embodiment, the presenting of the options further includes presenting options personalized for the user. In one embodiment, the server computer defines groups, and the defining can be personalized for the user. In one embodiment, the classifying of the travel options into the predefined groups includes defining, by the user, a function to classify an option. In one embodiment, the defining of the function includes defining the function via one or more up/down votes. A first group can be classified, and the classifying can be based on a model function of the first group. The classifying of the first group can be based on attributes associated with the travel options.
In one embodiment, the server computer determines buckets specifically for the user. In one embodiment, the server computer provides, to the client device, the plurality of buckets as recommendations for the user based on the travel request. The determining of the buckets can include determining buckets that are personalized to a user's search behavior and/or based on the user's social connections.
These and other aspects and embodiments will be apparent to those of ordinary skill in the art by reference to the following detailed description and the accompanying drawings.



BRIEF DESCRIPTION OF THE DRAWINGS
In the drawing figures, which are not to scale, and where like reference numerals indicate like elements throughout the several views:
FIG. 1 is a user interface associated with a web site existing in the prior art;
FIG. 2 is another user interface associated with a web site existing in the prior art;
FIG. 3 is a block diagram illustrating a server computer in communication with a client computer over a network in accordance with an embodiment of the present disclosure;
FIG. 4 is a system architecture to provide personalized recommendations to a user in accordance with an embodiment of the present disclosure;
FIG. 5 is a flowchart illustrating operations performed by the server computer to provide recommendations to a user in accordance with an embodiment of the present disclosure;
FIG. 6 is a user interface provided by the server computer that displays personalized recommendations to a user in accordance with an embodiment of the present disclosure;
FIG. 7 is a schematic diagram illustrating a client device in accordance with an embodiment of the present disclosure; and
FIG. 8 is a block diagram of an internal architecture of a computing device in accordance with an embodiment of the present disclosure.



DESCRIPTION OF EMBODIMENTS
Embodiments are now discussed in more detail referring to the drawings that accompany the present application. In the accompanying drawings, like and/or corresponding elements are referred to by like reference numbers.
Various embodiments are disclosed herein; however, it is to be understood that the disclosed embodiments are merely illustrative of the disclosure that can be embodied in various forms. In addition, each of the examples given in connection with the various embodiments is intended to be illustrative, and not restrictive. Further, the figures are not necessarily to scale, some features may be exaggerated to show details of particular components (and any size, material and similar details shown in the figures are intended to be illustrative and not restrictive). Therefore, specific structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a representative basis for teaching one skilled in the art to variously employ the disclosed embodiments.
The present disclosure is described below with reference to block diagrams and operational illustrations of methods and devices. It is understood that each block of the block diagrams or operational illustrations, and combinations of blocks in the block diagrams or operational illustrations, can be implemented by means of analog or digital hardware and computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer, special purpose computer, ASIC, or other programmable data processing apparatus, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, implements the functions/acts specified in the block diagrams or operational block or blocks.
In some alternate implementations, the functions/acts noted in the blocks can occur out of the order noted in the operational illustrations. For example, two blocks shown in succession can in fact be executed substantially concurrently or the blocks can sometimes be executed in the reverse order, depending upon the functionality/acts involved. Furthermore, the embodiments of methods presented and described as flowcharts in this disclosure are provided by way of example in order to provide a more complete understanding of the technology. The disclosed methods are not limited to the operations and logical flow presented herein. Alternative embodiments are contemplated in which the order of the various operations is altered and in which sub-operations described as being part of a larger operation are performed independently.
Throughout the specification and claims, terms may have nuanced meanings suggested or implied in context beyond an explicitly stated meaning Likewise, the phrase “in one embodiment” as used herein does not necessarily refer to the same embodiment and the phrase “in another embodiment” as used herein does not necessarily refer to a different embodiment. It is intended, for example, that claimed subject matter include combinations of example embodiments in whole or in part.
In general, terminology may be understood at least in part from usage in context. Fore example, terms, such as “and”, “or”, or “and/or,” as used herein may include a variety of meanings that may depend at least in part upon the context in which such terms are used. Typically, “or” if used to associate a list, such as A, B, or C, is intended to mean A, B, and C, here used in the inclusive sense, as well as A, B, or C, here used in the exclusive sense. In addition, the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense. Similarly, terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context. In addition, the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
FIG. 1 is an example of a user interface 100 associated with a web site (mobisimmo.com) existing in the prior art. The user interface 100 includes a first recommendation 105 and a second recommendation 110. The first recommendation 105 is a recommendation of a lowest fare available for alternate dates of a flight. The second recommendation 110 is a recommendation of the cheapest non-stop flight. The recommendations 105, 110 do not allow the user to trade-off between any two travel attributes (such as flight time and flight price). Further, the recommendations 105, 110 do not take into account user preferences.
FIG. 2 is another example of a user interface 200 associated with a web site (hipmunk.com) existing in the prior art. The user interface 200 introduces an Agony score to help users rank flights. The criteria used to build the Agony store is time, duration, and number of stops of the flight solution. The user interface 200 does not, however, attempt to provide recommendations. Further, the user interface 200 does not attempt to personalize any recommendations to the user.
FIG. 3 is a block diagram of an embodiment of a client computer 305 (also referred to as a client device 305) communicating with a server computer 310 over a network 315 such as the Internet. A user uses a web browser 320 on the client computer 305 to access the Internet. In one embodiment, server computer 310 transmits a web page 325 via the network 315 to the client computer 305 for display by the web browser 320 in a web page 330.
For purposes of this disclosure, a computer such as the client computer 305 includes a processor and memory for storing and executing program code, data and software. Computers can be provided with operating systems that allow the execution of software applications in order to manipulate data. Client computer 305 can be any device that can display a website and that can be used by a user. Personal computers, servers, personal digital assistants (PDAs), wireless devices, smartphones, cellular telephones, tablet computers, internet appliances, media players, home theater systems, and media centers are several non-limiting examples of computers.
For the purposes of this disclosure, the term “server” should be understood to refer to a service point which provides processing, database, and communication facilities. By way of example, and not limitation, the term “server” can refer to a single, physical processor with associated communications and data storage and database facilities, or it can refer to a networked or clustered complex of processors and associated network and storage devices, as well as operating software and one or more database systems and applications software which support the services provided by the server. A number of program modules and data files can be stored on a computer readable medium of the server. They can include an operating system suitable for controlling the operation of a networked server computer, such as the WINDOWS 7, WINDOWS VISTA, or WINDOWS XP operating system published by Microsoft Corporation of Redmond, Washington, or the Ubuntu operating system distributed by Canonical Ltd. of Douglas, Isle of Man. In one embodiment, the server computer 310 is a group of servers (e.g., a server farm).
In one embodiment, the user of the client device 305 logs into the web page 330. The user submits travel criteria 340 in the web page 330, such as the dates and times of flights that the user would like to be on, a hotel that the user would like to stay at, price range that the user would like to pay for the flight or hotel, and/or any other travel criteria associated with a user's trip. In one embodiment, the client device 305 transmits this user travel criteria 340 to the server computer 310. As described in more detail below, the server computer 310 analyzes the user travel criteria 340 in light of data received from multiple sources (e.g., user reviews, past transaction history of the user on the site, data from other sites about a particular traveling service, etc.) to determine one or more personalized recommendations for the user. The server computer 310 transmits the travel recommendations 350 to the client device 305. The client device 305 displays the personalized travel recommendations 350 to the user, such as a first personalized recommendation 355 and a second personalized recommendation 360.
Although described as the server computer 310 performing the processing, in another embodiment the client computer 305 performs some or all of the processing to determine the personalized travel recommendations 350 to the user. Further, although the description below uses a flight as the travel, any type of travel service can be used in the system, such as hotel reservations and/or hotel amenities.
FIG. 4 shows an embodiment of a system architecture 400 to provide personalized recommendations to a user. In one embodiment, the client computer 305 performs the processing shown in FIG. 4. In another embodiment, the server computer 310 performs the processing shown in FIG. 4. In yet another embodiment, the client computer 305 performs some of the processing shown in FIG. 4 and the server computer 310 performs some of the processing shown in FIG. 4.
A user 405 submits a travel search 410 to the web page 330. The system 400 receives the travel search 410 and determines a package context 415 for the travel search. The system 400 performs search context analysis 417 to determine the package context 415. As described in more detail below, the package context 415 can include, for example, a combination of the user's query, user's past transaction history, his personal preferences and/or any other relevant environmental context. Next, a bucket selection 420 occurs to determine which specific buckets to include in the recommendation for the user. In one embodiment, the bucket selection 420 communicates with a bucket orchestration module 423. The bucket orchestration module 423 is used to perform the bucket selection 420. The data is then transmitted to the recommendation user experience (UX) module 425. A transaction 430 is then generated. The package context 415, bucket selection 420, recommendation user experience module 425 data, and transaction data is transmitted to an analytics module 440 for analysis.
The data from the analytics module 440 is transmitted to a bucket configuration module 450. The bucket configuration module 450 receives input from semantic analysts and/or domain experts 455 to determine a bucket algorithm 460 and a bucket context 465. The bucket orchestration module 423 is configured or trained via the adjusting of the bucket configuration 450. The semantic analysts and/or domain experts 455 can be one or more people or one or more machines. In one embodiment, the bucket configuration module 450 receives past transaction analysis 470. In one embodiment, the bucket configuration 450 is based on past transaction analysis 470 and the analytics of the data recording operations 415, 420, 425, and 430 (current operations as a feedback to the system to fine tune the bucket configuration for future “bucketing”.
A bucket/recommendation is a predefined characterization of travel options (e.g., “best for productivity”, “company value”, “cheapest”, “fastest”, etc.). Instead of presenting the list of travel options to the user to ask the user to understand the value trade-off among different travel attributes of a travel option (e.g., a flight), the system 400 analyzes the trade-off and assigns the travel options to buckets, each having a name (e.g., “best for productivity”) that indicates the value trade-off made in the bucket. For example, if the user is interested in “best for productivity”, in one embodiment there is no need to look at the travel options placed in other buckets. Each bucket may be presented with certain characteristics of the options in the respective buckets, such as the lowest price of the options in the bucket. Each bucket may have only one top option, representing the recommended option for the optimization goal suggested by the name of the respective bucket. The server may classify all search results into the buckets, or only the top candidates for each of the buckets (and thus filtering out other results).
To seed the system 400, in one embodiment a set of domain experts and/or semantic analysts 455 define a set of buckets. Each bucket is modeled as a function over a set of travel attributes (e.g., price of flight, duration of flight, stopcount, inflightwifi, aircraft type, user loyalty information, comfort information). In one embodiment, attributes take different weights depending on, for example, the bucket being defined and/or the user for whom the bucket is being defined for. In one embodiment, the attribute weighting is defined by performing a rigorous analysis of past transaction data (e.g., stored in a database in communication with the server computer 310). Once again, to seed the system, domain experts and/or semantic analysis influence the weighting. Eventually, new transaction data as well as user engagement data is used to train the system.
For example, the price of a flight attribute for a flight may be more heavily weighted than the comfort information of a flight for a user who has selected the cheapest flight option in the past and has never selected the comfort option. Thus, in one embodiment a feedback loop exists—data associated with a trip from multiple sources is analyzed, and this data includes user preferences and past actions. This data is then used to provide future recommendations to the user.
In one embodiment, the process of defining and refining a bucket is a continuous one. The system 400 is an experimentation platform that enables the defining of buckets on the fly and enables the buckets to be surfaced to a select set of users by running an experiment. In one embodiment, the results of the experiment determine the future viability and/or the design of the bucket. Buckets that are defined get added to a pool of available buckets which are available to be offered to the user.
In one embodiment, each bucket corresponds to a model or function that generates a score (e.g., a score for “best for productivity”) for each travel option, based on flight/travel attributes of each travel option and/or the user preferences, context, history, etc. The score/model/function implemented in the bucket orchestration module ranks the travel options for classification into different buckets.
In more detail, when a user performs a travel query (e.g., submits a travel search 410/travel criteria 340), in one embodiment user context (a combination of the user's query, user's past transaction history, his personal preferences and/or any other relevant environmental context) is packaged by the package context module 415. A bucket selection 420 occurs and is offered (e.g., transmitted) to bucket orchestration module 423. The bucket orchestration module 423 uses the context to decide the subset of buckets as well as the order of buckets that should be surfaced (presented) to the user. In one embodiment, to seed the system, a uniform set of buckets is used that are surfaced to all the users. As the system 400 gains experience/confidence, the orchestration module 423 gets more aggressive in making these determinations.
The system 400 then renders the appropriate set of buckets to the user 405. In one embodiment, the buckets are presented to the user 405 in increasing order of decision making complexity. For example and as shown in FIG. 5, the cheapest bucket 505 is shown before the fastest bucket 510. This allows the user 405 to immediately understand the premium that he is paying for flying faster. Thus, users can not only abstract away complexities behind these buckets but also can determine the tradeoff between one bucket and another bucket. Furthermore, in one embodiment the system 400 is highly transparent in how the recommendations are made by explaining to the user the dominant attributes that constitute a single bucket.
A user may interact with the bucket by voting up or down attributes that have been identified as dominant attributes for a particular bucket. By allowing the user 405 to participate in the bucket definition process, the bucket definition will be trained towards the “correct” weights faster than without user participation. This recommendation system 400 is further strengthened by analytics module 440 that collects engagement & transaction data at every stage of the transaction funnel (operations 415, 420, 425, and 430) and uses that analytics data to influence bucket orchestration and/or the design of the bucket itself.
In one embodiment, a bucket can be defined (e.g., by the user 405) that captures a sub-goal in travel solution selection. A bucket can also be defined as a function of one or more attributes, based on analysis of past transactions (e.g., regression analysis), based on semantic knowledge, and/or based on analytical data and user behavior (e.g., on the site and/or on other sites). In one embodiment, analytics influence the fine-tuning of bucket attribute weights. In one embodiment, the experimentation platform enables the system to determine the correct set of buckets for a specific user. The buckets can be personalized to a user's company policy, personalized to a user's specific preferences, personalized to a user's past and present search behavior, and/or personalized to a user's frequent flyer account standing. As stated above, the bucket definitions are transparent and may be fine tuned by the user or a company for a set of users. In one embodiment, a company (or user) can define a custom narrative for each bucket option, can define what buckets are viewed based on a set of bucket options, and/or can define the order of buckets that are viewed.
FIG. 5 is a flowchart showing an embodiment of the operations performed to provide these recommendations. The server computer 310 (or client computer 305) receives travel criteria 340 (e.g., from the client computer 305) (Operation 505). The server computer 310 then retrieves or obtains travel data associated with the travel criteria from multiple sources (e.g., from the web, from a database, from other computers, from memory, etc.) (Operation 510). The data can be retrieved or obtained by the server computer 310 continuously, periodically, at various times, etc. The server computer 310 analyzes the travel data and, in one embodiment, applies various weights to the travel data (Operation 515). As stated above, the analysis of the travel data can include adjusting one or more weights based on the user's past interaction(s) with the web site. In one embodiment, the user 405 can tailor the analysis by specifying or adjusting particular weights that the user wants applied to different travel data. The server computer 310 then provides one or more personal travel recommendations to the user based on the analysis of the travel data (Operation 520).
In one embodiment, the analysis of the travel data includes analyzing data associated with and/or recommendations provided to the user's social networking connections. For example, suppose the user 405 is connected to person B on a social networking site such as Facebook® or LinkedIn®. In one embodiment, the server computer 310 determines that person B is connected to user 405 via a social networking site and person B has always selected flights on a specific airline. In one embodiment, the server computer 310 utilizes this information in its personalized recommendation to the user 405. For example, the personalized recommendation can indicate that user 405′s friend person B has previously selected flights on the particular airline. A recommendation associated with a user's “friend” or social connection may be beneficial to the user 405 (e.g., may provide more weight to the recommendation). Thus, in one embodiment, the personalized recommendations provided by the server computer 310 are tailored based on recommendations provided to or selections made by the user's social connections on a social networking site.
In one embodiment, the web site displaying the personalized recommendations include advertisements. In one embodiment, the advertisements are related to the personalized recommendations. The advertisements may be provided by the server computer 310 and/or by a third party advertisement server.
FIG. 6 is an embodiment of a user interface 600 showing personalized recommendations for user 405. In one embodiment, the buckets selected and displayed include company value 615, lowest cost 605, fastest flights 610, and comfort and ease 620. If, for example, the user 405 never selects the comfort and ease recommendation 620, in one embodiment the system will adjust based on the user's past transactions and not provide this recommendation in the future. In one embodiment, the user interface 600 includes a summary 630 of your travel criteria and/or additional information 640 associated with an option. The buckets/recommendations can include, for example, company value, best value, best for loyalty, best for productivity, fastest flights, lowest cost, comfort and ease (e.g., reclining seats, most space, most leg room, etc.), best technology (e.g., video screens available for each seat), best fitness center (in a hotel), best service, best meals, availability of wifi, availability of restaurants nearby, most entertainment available (e.g., shows playing near hotel), best facilities (e.g., swimming pool in hotel), etc. In one embodiment, the buckets presented as recommendations are based on a user profile for the user 405. This user profile can be created by the user (e.g., when creating an account, at login, etc.) or can be determined based on previous user interactions with the web site.
FIG. 7 shows one example of a schematic diagram illustrating a client device 705 (e.g., client device 305). Client device 705 may include a computing device capable of sending or receiving signals, such as via a wired or wireless network. A client device 705 may, for example, include a desktop computer or a portable device, such as a cellular telephone, a smartphone, a display pager, a radio frequency (RF) device, an infrared (IR) device, a Personal Digital Assistant (PDA), a handheld computer, a tablet computer, a laptop computer, a digital camera, a set top box, a wearable computer, an integrated device combining various features, such as features of the foregoing devices, or the like.
The client device 705 may vary in terms of capabilities or features. Claimed subject matter is intended to cover a wide range of potential variations. For example, a cell phone may include a numeric keypad or a display of limited functionality, such as a monochrome liquid crystal display (LCD) for displaying text, pictures, etc. In contrast, however, as another example, a web-enabled client device may include one or more physical or virtual keyboards, mass storage, one or more accelerometers, one or more gyroscopes, global positioning system (GPS) or other location-identifying type capability, of a display with a high degree of functionality, such as a touch-sensitive color 2D or 3D display, for example.
A client device 705 may include or may execute a variety of operating systems, including a personal computer operating system, such as a Windows, iOS or Linux, or a mobile operating system, such as iOS, Android, or Windows Mobile, or the like. A client device may include or may execute a variety of possible applications, such as a client software application enabling communication with other devices, such as communicating one or more messages, such as via email, short message service (SMS), or multimedia message service (MMS), including via a network, such as a social network, including, for example, Facebook®, LinkedIn®, Twitter®, Flickr®, or Google+®, to provide only a few possible examples. A client device may also include or execute an application to communicate content, such as, for example, textual content, multimedia content, or the like. A client device may also include or execute an application to perform a variety of possible tasks, such as browsing, searching, playing various forms of content, including locally stored or streamed video, or games (such as fantasy sports leagues). The foregoing is provided to illustrate that claimed subject matter is intended to include a wide range of possible features or capabilities.
As shown in the example of FIG. 7, client device 705 may include one or more processing units (also referred to herein as CPUs) 722, which interface with at least one computer bus 725. A memory 730 can be persistent storage and interfaces with the computer bus 725. The memory 730 includes RAM 732 and ROM 734. ROM 734 includes a BIOS 740. Memory 730 interfaces with computer bus 725 so as to provide information stored in memory 730 to CPU 722 during execution of software programs such as an operating system 741, application programs 742, device drivers, and software modules 743, 745 that comprise program code, and/or computer-executable process operations, incorporating functionality described herein, e.g., one or more of process flows described herein. CPU 722 first loads computer-executable process operations from storage, e.g., memory 732, data storage medium/media 744, removable media drive, and/or other storage device. CPU 722 can then execute the stored process operations in order to execute the loaded computer-executable process operations. Stored data, e.g., data stored by a storage device, can be accessed by CPU 722 during the execution of computer-executable process operations.
Persistent storage medium/media 744 is a computer readable storage medium(s) that can be used to store software and data, e.g., an operating system and one or more application programs. Persistent storage medium/media 744 can also be used to store device drivers, such as one or more of a digital camera driver, monitor driver, printer driver, scanner driver, or other device drivers, web pages, content files, playlists and other files. Persistent storage medium/media 706 can further include program modules and data files used to implement one or more embodiments of the present disclosure.
For the purposes of this disclosure a computer readable medium stores computer data, which data can include computer program code that is executable by a computer, in machine readable form. By way of example, and not limitation, a computer readable medium may comprise computer readable storage media, for tangible or fixed storage of data, or communication media for transient interpretation of code-containing signals. Computer readable storage media, as used herein, refers to physical or tangible storage (as opposed to signals) and includes without limitation volatile and non-volatile, removable and non-removable media implemented in any method or technology for the tangible storage of information such as computer-readable instructions, data structures, program modules or other data. Computer readable storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical or material medium which can be used to tangibly store the desired information or data or instructions and which can be accessed by a computer or processor.
Client device 705 can also include one or more of a power supply 726, network interface 750, audio interface 752, a display 754 (e.g., a monitor or screen), keypad 756, illuminator 758, I/O interface 760, a haptic interface 762, a GPS 764, and/or a microphone 766.
For the purposes of this disclosure a module is a software, hardware, or firmware (or combinations thereof) system, process or functionality, or component thereof, that performs or facilitates the processes, features, and/or functions described herein (with or without human interaction or augmentation). A module can include sub-modules. Software components of a module may be stored on a computer readable medium. Modules may be integral to one or more servers, or be loaded and executed by one or more servers. One or more modules may be grouped into an engine or an application.
FIG. 8 is a block diagram illustrating an internal architecture of an example of a computer, such as server computer 110 and/or client computer 105, in accordance with one or more embodiments of the present disclosure. A computer as referred to herein refers to any device with a processor capable of executing logic or coded instructions, and could be a server, personal computer, set top box, smart phone, pad computer or media device, to name a few such devices. As shown in the example of FIG. 8, internal architecture 800 includes one or more processing units (also referred to herein as CPUs) 812, which interface with at least one computer bus 802. Also interfacing with computer bus 802 are persistent storage medium/media 806, network interface 814, memory 804, e.g., random access memory (RAM), run-time transient memory, read only memory (ROM), etc., media disk drive interface 808 as an interface for a drive that can read and/or write to media including removable media such as floppy, CD-ROM, DVD, etc. media, display interface 810 as interface for a monitor or other display device, keyboard interface 816 as interface for a keyboard, pointing device interface 818 as an interface for a mouse or other pointing device, and miscellaneous other interfaces not shown individually, such as parallel and serial port interfaces, a universal serial bus (USB) interface, and the like.
Memory 804 interfaces with computer bus 802 so as to provide information stored in memory 804 to CPU 812 during execution of software programs such as an operating system, application programs, device drivers, and software modules that comprise program code, and/or computer-executable process operations, incorporating functionality described herein, e.g., one or more of process flows described herein. CPU 812 first loads computer-executable process operations from storage, e.g., memory 804, storage medium/media 806, removable media drive, and/or other storage device. CPU 812 can then execute the stored process operations in order to execute the loaded computer-executable process operations. Stored data, e.g., data stored by a storage device, can be accessed by CPU 812 during the execution of computer-executable process operations.
Persistent storage medium/media 806 is a computer readable storage medium(s) that can be used to store software and data, e.g., an operating system and one or more application programs. Persistent storage medium/media 806 can also be used to store device drivers, such as one or more of a digital camera driver, monitor driver, printer driver, scanner driver, or other device drivers, web pages, content files, playlists and other files. Persistent storage medium/media 806 can further include program modules and data files used to implement one or more embodiments of the present disclosure.
For the purposes of this disclosure a computer readable medium stores computer data, which data can include computer program code that is executable by a computer, in machine readable form. By way of example, and not limitation, a computer readable medium may comprise computer readable storage media, for tangible or fixed storage of data, or communication media for transient interpretation of code-containing signals. Computer readable storage media, as used herein, refers to physical or tangible storage (as opposed to signals) and includes without limitation volatile and non-volatile, removable and non-removable media implemented in any method or technology for the tangible storage of information such as computer-readable instructions, data structures, program modules or other data. Computer readable storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical or material medium which can be used to tangibly store the desired information or data or instructions and which can be accessed by a computer or processor.
For the purposes of this disclosure a module is a software, hardware, or firmware (or combinations thereof) system, process or functionality, or component thereof, that performs or facilitates the processes, features, and/or functions described herein (with or without human interaction or augmentation). A module can include sub-modules. Software components of a module may be stored on a computer readable medium. Modules may be integral to one or more servers, or be loaded and executed by one or more servers. One or more modules may be grouped into an engine or an application.
Those skilled in the art will recognize that the methods and systems of the present disclosure may be implemented in many manners and as such are not to be limited by the foregoing exemplary embodiments and examples. In other words, functional elements being performed by single or multiple components, in various combinations of hardware and software or firmware, and individual functions, may be distributed among software applications at either the user device or server or both. In this regard, any number of the features of the different embodiments described herein may be combined into single or multiple embodiments, and alternate embodiments having fewer than, or more than, all of the features described herein are possible. Functionality may also be, in whole or in part, distributed among multiple components, in manners now known or to become known. Thus, myriad software/hardware/firmware combinations are possible in achieving the functions, features, interfaces and preferences described herein. Moreover, the scope of the present disclosure covers conventionally known manners for carrying out the described features and functions and interfaces, as well as those variations and modifications that may be made to the hardware or software or firmware components described herein as would be understood by those skilled in the art now and hereafter.
While the system and method have been described in terms of one or more embodiments, it is to be understood that the disclosure need not be limited to the disclosed embodiments. It is intended to cover various modifications and similar arrangements included within the spirit and scope of the claims, the scope of which should be accorded the broadest interpretation so as to encompass all such modifications and similar structures. The present disclosure includes any and all embodiments of the following claims.

## Claims

1. A method comprising:
receiving, by a server computer from a client device operated by a user, a travel request;
identifying, by the server computer, travel options according to the travel request;
ranking, by the server computer, each travel option in the identified travel options, the ranking based on travel attributes of each travel option and user preferences;
training, by the server computer, a bucket configuration module to determine a bucket algorithm and a bucket context for grouping travel options, one or more of the bucket algorithm and the bucket context based on input from domain experts, input from semantic analysts, analytics data, user preferences, company policies, and past transaction analysis;
classifying, by a bucket orchestration module of the server computer from the bucket algorithm and the bucket context, the ranked travel options into predefined buckets, the classifying further comprising defining, by the server computer, the buckets, the defining of the buckets personalized for the user;
filtering, by the server computer, the ranked travel options in the predefined buckets;
communicating, by the server computer to the client device, the filtered classified ranked travel options in the corresponding predefined buckets for display, the filtered classified ranked travel options in the corresponding predefined buckets displayed at the client device in an order associated with the user, the order enabling the user to determine a tradeoff between one bucket and another bucket;
receiving, by the server computer from the client device, interactions from the user with one or more of the displayed predefined buckets, the interactions comprising a voting of the travel options in the bucket; and
in response to receiving the interactions from the user with the one or more of the displayed predefined buckets, using, by the bucket configuration module, the interactions in the bucket algorithm for future classifying.

2. The method of claim 1, wherein the communicating of the options is personalized for the user.

3. The method of claim 1, wherein the classifying of the travel options into the predefined buckets further comprises defining, by the user, a function to classify an option.

4. The method of claim 3, wherein the defining, by the user, of the function further comprises defining the function via one or more votes.

5. The method of claim 1, further comprising classifying a first bucket, the classifying based on a model function of the first bucket.

6. The method of claim 5, wherein the classifying of the first bucket is further based on attributes associated with the travel options.

7. The method of claim 1, further comprising determining, by the server computer, a plurality of buckets specifically for the user.

8. The method of claim 7, further comprising providing, by the server computer to the client device, the plurality of buckets as recommendations for the user based on the travel request.

9. The method of claim 7, wherein the determining of the plurality of buckets further comprises determining buckets that are one or more of personalized to a user's search behavior and personalized based on social connections.

10. A system comprising:
a processor; and
memory storing instructions configured to instruct the processor to:
receive, from a client device operated by a user, a travel request;
identify travel options according to the travel request;
rank each travel option in the identified travel options, the ranking based on travel attributes of each travel option and user preferences;
train a bucket configuration module to determine a bucket algorithm and a bucket context for grouping travel options, one or more of the bucket algorithm and the bucket context based on input from domain experts, input from semantic analysts, analytics data, user preferences, company policies, and past transaction analysis;
classify, from the bucket algorithm and the bucket context, the ranked travel options into predefined buckets the instructions configured to instruct the processor to classify further comprises instructions to define the buckets, the instructions to define the buckets further comprise instructions that are personalized for the user;
filter the ranked travel options in the predefined buckets;
communicate, to a client device for display, the filtered classified ranked travel options in the corresponding predefined buckets, the filtered classified ranked travel options in the corresponding predefined buckets displayed at the client device in an order associated with the user, the order enabling the user to determine a tradeoff between one bucket and another bucket;
receive, from the client device, interactions from the user with one or more of the displayed predefined buckets, the interactions comprising a voting of the travel options in the bucket; and
in response to receiving the interactions from the user with the one or more of the displayed predefined buckets, use, by the bucket configuration module, the interactions in the bucket algorithm for future classifying.

11. The system of claim 10, wherein the instructions to communicate the options further comprises instructions to communicate that are personalized for the user.

12. The system of claim 10, wherein the instructions to classify the travel options into the predefined buckets further comprises instructions to enable the user to define a function to classify an option.

13. The system of claim 12, wherein the instructions to enable the user to define the function further comprises instructions to enable the user to define the function via one or more votes.

14. The system of claim 10, further comprising instructions to classify a first bucket, the instructions based on a model function of the first bucket.

15. The system of claim 14, wherein the instructions to classify the first bucket is further based on attributes associated with the travel options.

16. The system of claim 10, further comprising instructions to determine a plurality of buckets specifically for the user.

17. The system of claim 16, further comprising instructions to provide, to the client device, the plurality of buckets as recommendations for the user based on the travel request.

18. The system of claim 16, wherein the instructions to determine the plurality of buckets further comprises instructions to determine buckets that are one or more of personalized to a user's search behavior and personalized based on social connections.

19. A non-transitory computer readable storage medium storing computer program instructions configured to instruct a computer processor to at least:
receive, from a client device operated by a user, a travel request;
identify travel options according to the travel request;
rank each travel option in the identified travel options, the ranking based on travel attributes of each travel option and user preferences;
train a bucket configuration module to determine a bucket algorithm and a bucket context for grouping travel options, one or more of the bucket algorithm and the bucket context based on input from domain experts, input from semantic analysts, analytics data, user preferences, company policies, and past transaction analysis;
classify, by a bucket orchestration module from the bucket algorithm and the bucket context, the ranked travel options into predefined buckets, the computer program instructions configured to instruct a computer processor to classify further comprises instructions to define the buckets, the instructions to define the buckets further comprise instructions that are personalized for the user;
filter the ranked travel options in the predefined buckets;
communicate, to a client device for display, the filtered classified ranked travel options in the corresponding predefined buckets, the filtered classified ranked travel options in the corresponding predefined buckets displayed at the client device in an order associated with the user, the order enabling the user to determine a tradeoff between one bucket and another bucket;
receive, from the client device, interactions from the user with one or more of the displayed predefined buckets, the interactions comprising a voting of the travel options in the bucket; and
in response to receiving the interactions from the user with the one or more of the displayed predefined buckets, use, by the bucket configuration module, the interactions in the bucket algorithm for future classifying.