Trust-based social graph for travel planning

Methods and systems for implementing a trust-based social graph for travel planning are disclosed. Social data is obtained from one or more social network services. Based at least in part on the social data, trust scores are determined between an entity and a plurality of additional entities. For one of the additional entities, the respective trust score is determined based at least in part on a respective relationship score and a respective similarity score for the additional entity. One or more respective connections are generated in a social graph between the entity and one or more trusted entities of the additional entities. The one or more respective connections with the trusted entities are generated based at least in part on the respective trust scores.

BACKGROUND

Many companies and other organizations operate distributed systems that interconnect numerous computing systems and other computing resources to support their operations, such as with the computing systems being co-located (e.g., as part of a local network) or instead located in multiple distinct geographical locations (e.g., connected via one or more private or public intermediate networks). For example, data centers housing significant numbers of interconnected computing systems have become commonplace, such as private data centers that are operated by and on behalf of a single organization and public data centers that are operated by entities as businesses to provide computing resources to customers. As the scale and scope of typical distributed systems have increased, the tasks of provisioning, administering, and managing the computing resources have become increasingly complicated.

Online social networks represent an increasingly common example of a type of service or application that is implemented using a distributed system. Such networks may be operated using social networking services that are widely available to individuals over the Internet. On many such social networks, an individual may create a profile, and the individual may choose to form connections with other profiles representing other individuals. Underlying a social network may be a social graph, where an individual is a node in the graph and each connection is an edge in the graph. In many cases, the connections between nodes may reflect real-world relationships between family members, friends, co-workers, and so on. Using the connections in the graph, users may choose to share various types of data with individual users or groups of users.

While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning “having the potential to”), rather than the mandatory sense (i.e., meaning “must”). Similarly, the words “include,” “including,” and “includes” mean “including, but not limited to.”

DETAILED DESCRIPTION OF EMBODIMENTS

Various embodiments of methods and systems for travel planning using a repository of customizable itineraries and/or a trust-based social graph are described. A repository of itineraries may store predefined itineraries, and each itinerary may include an ordered set of trip components representing events and/or locations. The itineraries may be customizable by users, e.g., to substitute trip components or change the order of components. The customized itineraries may also be stored in the repository for duplication and further customization by the same user or other users. Customized itineraries may then be booked through agents or other providers. Itineraries may also be customized based on input from a social graph. A social graph may be created or modified based on trust scores between users or entities. A trust score may be based on relationship strength and a similarity of interests or preferences (e.g., for travel) between two parties. In this manner, users may plan personalized itineraries with input from trusted experts and/or friends. In a similar manner, a decision support system may implement a repository of customizable decision recipes that may be customized using input from a social graph

Customizable Itineraries for Travel Planning

FIG. 1illustrates an example system environment for implementing a repository of customizable itineraries for travel planning, according to one embodiment. A travel planning system100may include a plurality of modules, components, or other elements of functionality that implement the selection, customization, and booking of itineraries using an itinerary repository110. In one embodiment, the travel planning system100may include an itinerary selection functionality120, an itinerary customization functionality130, and an itinerary booking functionality140. In one embodiment, the itinerary selection functionality120, itinerary customization functionality130, and itinerary booking functionality140may be responsive to user input to perform various tasks related to travel planning using the itinerary repository110.

Using a client interface185, the travel planning system100may interact with a plurality of clients such as clients180A and180B through180N. The travel planning system100and clients180A-180N may be communicatively coupled to one another using one or more suitable networks. The clients180A-180N may represent various clients, users, client accounts, or user accounts. The clients180A-180N may be implemented as computing instances, resources, processes, or any suitable combinations thereof. The client interface185may implement one or more user interfaces, programmatic interfaces, and/or application programming interfaces (APIs) enabling clients to select itineraries and/or trip components from the repository110, customize itineraries and/or trip components, book itineraries and/or trip components, interact with other users (e.g., using a social graph), and perform other suitable tasks. Examples of user interfaces for travel planning are discussed below with respect toFIG. 2AthroughFIG. 2D.

Turning back toFIG. 1, using a provider interface195, the travel planning system100may interact with a plurality of providers such as providers190A and190B through190N. The travel planning system100and providers190A-190N may be communicatively coupled to one another using one or more suitable networks. The providers190A-190N may represent various types of providers such as travel agents, travel guides, event providers, lodging providers, transportation providers, and/or other providers of underlying services. The providers190A-190N may be implemented as computing instances, resources, processes, or any suitable combinations thereof. In one embodiment, the providers190A-190N may be structured in a plurality of levels or tiers, such that one provider may act as a travel agent or travel guide to package a set of trip components (e.g., representing events and/or services) to clients and then arrange for payment with one or more other providers who actually provide the events and/or services. The provider interface195may implement one or more programmatic interfaces or application programming interfaces (APIs) enabling providers to submit itineraries and/or trip components for storage in the repository110, submit recommended changes to itineraries and/or trip components for users, book itineraries and/or trip components, and perform other suitable tasks. The travel planning system100may represent a service with which the clients180A-180N and/or providers190A-190N may interact, e.g., using one or more programmatic interfaces or APIs.

The repository110may store a plurality of itineraries, including customizable itineraries. An itinerary in the repository110may represent a travel plan or travel “recipe” for one or more users. The repository110may include a plurality of predefined itineraries and/or user-customized itineraries. The predefined itineraries may be supplied by providers190A-190N including travel agents, travel guides, and/or other experts. Each itinerary may include a set of trip components representing a plurality of events, activities, and/or locations. The locations may be distributed over geographical areas of varying size, from a relatively small area (such as a single town or city) to a relatively large one (such as one or more nations or continents). The trip components may be distributed over time (e.g., hours or days), each trip component may have a duration, and an itinerary may include a chronological order for the set of trip components. In one embodiment, multiple trip components may be slotted in the same time slot or have overlapping times, in order to give users different options. The itinerary repository110or another suitable repository may also store trip components. At least some of the trip components may be supplied by providers190A-190N, including travel agents, travel guides, event providers, lodging providers, transportation providers, and/or other providers of underlying services.

Using the itinerary selection functionality120, an itinerary111A may be selected from the repository110. In one embodiment, the itinerary111A may be selected based (at least in part) on user input. However, it is contemplated that the itinerary111A may be selected by the travel planning system100without direct input by the user for whom the itinerary is selected, e.g., based on the travel history and/or travel preferences for the user and/or based on the travel history and/or travel preferences for other users or entities. In one embodiment, to select the itinerary111A, a user (represented by one of the clients180A-180N) may browse itineraries in a set of named travel categories or search for types of events, types of locations, specific events, or specific locations. At least a portion of the itineraries in the repository110may be tagged or otherwise classified in various travel categories for convenient browsing and/or searching. For example, travel categories may include “adventure travel,” “leisure travel,” “off-the-beaten-path travel,” and other suitable classifications. In one embodiment, multiple itineraries may be selected for a single user with the itinerary selection functionality120. In one embodiment, the repository110may also store trip components independently of itineraries, and multiple trip components may be selected for a single user with the itinerary selection functionality120. In various embodiments, the trip components may be selected with or without user input.

Using the itinerary customization functionality130, the itinerary111A may be customized to create a customized itinerary111B. The customized itinerary111B may include one or more user-selected modifications to the chronological order. The customized itinerary111B may include one or more user-selected substitutions to the set of trip components, one or more added components, and/or one or more deleted components. One or more user-selected substitutions to the set of trip components may be selected from a repository of trip components (potentially the same repository110that stores itineraries). The customized itinerary111B may include a user-selected modification to the duration, starting time, and/or ending time of a trip component. The customized itinerary111B may include one or more user-selected modifications to one or more parameters of a trip component. In one embodiment, the itinerary111A may be customized based (at least in part) on user input, e.g., input from the user who selected the itinerary and/or input from one or more additional users who are identified as potential participants in the itinerary. The customized itinerary111B may be stored in the repository110. In one embodiment, the customized itinerary111B may represent a composite itinerary that is generated based on multiple itineraries, e.g., based on user input to combine different portions of the multiple itineraries. In one embodiment, the customized itinerary111B may be generated based on multiple trip components that are combined (e.g., based on user input) to generate a new itinerary.

Using the itinerary booking functionality140, an itinerary such as the itinerary111A or customized itinerary111B may be booked with one or more providers190A-190N. A particular range of time may be assigned to the itinerary111A or111B. The particular range of time may include a specific starting date and time and a specific ending date and time. In one embodiment, the particular range of time may be assigned to the itinerary111A or111B based (at least in part) on user input, e.g., input from the user who selected or customized the itinerary and/or input from one or more additional users who are identified as potential participants in the itinerary. The itinerary111A or111B may be booked by generating a reservation of the itinerary for one or more clients, e.g., for the particular range of time. The client(s) may include the user who selected or customized the itinerary and/or one or more additional users who are identified as potential participants in the itinerary. The reservation may include an agreement by the one or more clients to purchase at least a portion of the itinerary111A or111B and/or any other suitable transaction, including a payment to one or more providers. The reservation may be booked through one or more providers190A-190N, including travel agents, travel guides, event providers, lodging providers, transportation providers, and/or other providers of underlying services. The providers participating in the booking may be structured in a plurality of levels or tiers, such that one provider may act as a travel agent or travel guide to package a set of trip components (e.g., representing events and/or services) to clients and then arrange for payment with one or more other providers who actually provide the events and/or services. The itinerary111A or111B may be booked using one or more payment services of any suitable type.

The travel planning system100may comprise one or more computing devices, any of which may be implemented by the example computing device5000illustrated inFIG. 18. In various embodiments, portions of the functionality of the travel planning system100may be provided by the same computing device or by any suitable number of different computing devices. If any of the components of the travel planning system100(such as the itinerary repository110, itinerary selection functionality120, itinerary customization functionality130, and itinerary booking functionality140) are implemented using different computing devices, then the components and their respective computing devices may be communicatively coupled, e.g., via a network. Each of the illustrated components (such as the itinerary repository110, itinerary selection functionality120, itinerary customization functionality130, and itinerary booking functionality140) may represent any combination of software and hardware usable to perform their respective functions.

It is contemplated that the travel planning system100may include additional components not shown, fewer components than shown, or different combinations, configurations, or quantities of the components shown. For example, although three clients180A,180B, and180N are shown for purposes of example and illustration, it is contemplated that different quantities and configurations of clients may be used. Additionally, although three providers190A,190B, and190N are shown for purposes of example and illustration, it is contemplated that different quantities and configurations of providers may be used.

In some embodiments, travel planning system100, clients180A-180N, and/or providers190A-190N may be implemented using virtual compute instances and/or physical compute instances. The virtual compute instances and/or physical compute instances may be offered to clients, provisioned, and maintained by a provider network that manages computational resources, memory resources, storage resources, and network resources. A virtual compute instance may comprise one or more servers with a specified computational capacity (which may be specified by indicating the type and number of CPUs, the main memory size, and so on) and a specified software stack (e.g., a particular version of an operating system, which may in turn run on top of a hypervisor). One or more virtual compute instances may be implemented by the example computing device5000illustrated inFIG. 18.

In one embodiment, the travel planning system100may select and/or provision virtual compute instances for implementing the various components of the travel planning system (such as the itinerary repository110, itinerary selection functionality120, itinerary customization functionality130, and itinerary booking functionality140). For example, the virtual compute instances may be provisioned from a suitable pool of available computing instances. In one embodiment, additional computing instances may be added to the travel planning system100as needed. In one embodiment, computing instances may be returned to the pool of available computing instances if the computing instances are not needed at a particular point in time.

In one embodiment, the functionality of the travel planning system100may be provided to clients180A-180N and/or providers190A-190N using a provider network. For example, the functionality of the travel planning system100may be presented to clients and/or providers as a web-accessible service. A network set up by an entity such as a company or a public sector organization to provide one or more services (such as various types of cloud-based computing or storage) accessible via the Internet and/or other networks to a distributed set of clients may be termed a provider network. A provider network may include numerous data centers hosting various resource pools, such as collections of physical and/or virtualized computer servers, storage devices, networking equipment and the like, that are used to implement and distribute the infrastructure and services offered by the provider. The resources may, in some embodiments, be offered to clients in units called “instances,” such as virtual or physical compute instances or storage instances. A virtual compute instance may, for example, comprise one or more servers with a specified computational capacity (which may be specified by indicating the type and number of CPUs, the main memory size, and so on) and a specified software stack (e.g., a particular version of an operating system, which may in turn run on top of a hypervisor). A number of different types of computing devices may be used singly or in combination to implement the resources of the provider network in different embodiments, including general purpose or special purpose computer servers, storage devices, network devices, and the like.

FIG. 2AthroughFIG. 2Dillustrates examples of user interfaces for a system that implements a repository of customizable itineraries for travel planning, according to one embodiment.FIG. 2Aillustrates an example of a user interface20for travel planning. The user interface20may be displayed to a user5on a user device10. The user device10may represent one of the client devices180A-180N that interact with the travel planning system100via the client interface185. Although user device10is depicted as a mobile device for purposes of illustration and example, it is contemplated that any suitable type of computing device may be used as a client device180A-180N with the travel planning system100. The user device10may be implemented by the example computing device5000illustrated inFIG. 18. Aspects of the user interface may be generated by the user device10and/or by the client interface185.

The user interface20may include several distinct regions. For example, the user interface20may include a region for interface options30and a primary region in which different travel categories and/or destinations are displayed. In the primary region, different travel categories, destinations, travel guides, and/or other travel planning options may be displayed to the user5. As shown in the example ofFIG. 2A, a series of destinations such as destinations50,51, and52may be displayed in the user interface20. The destinations may indicate names or descriptions of geographical regions or locales, including particular travel attractions, natural features, parks, towns, cities, nations, and so on. Each destination may be classified in one or more travel categories. For example, travel categories may include general travel categories such as “adventure,” “leisure,” and “off the beaten path”; more specific travel categories such as “art museums” and “spelunking”; and other suitable types of categories. The travel categories may be displayed along with the associated destinations. As shown in the example ofFIG. 2A, destination50may be displayed under its travel category40, destination51may be displayed under its travel category41, and destination52may be displayed under its travel category42. In one embodiment, each destination may correspond to a particular predefined itinerary.

Each destination may be associated with a particular travel guide, travel agent, or other specialist or expert. The travel guides may supply and curate itineraries that are associated with the various destinations. As shown in the example ofFIG. 2A, destination50may be displayed with a depiction and/or identification of its travel guide60, destination51may be displayed with a depiction and/or identification of its travel guide61, and destination52may be displayed a depiction and/or identification of its travel guide62. The travel guides may typically be individuals but may also be business entities or other organizations.

The user5may interact with regions or elements of the user interface20to reveal additional information, e.g., by using appropriate gestures or actions in a touch-capable interface of the user device10. For example, the user5may interact with the name or description of a travel category in order to reveal additional destinations under that travel category. As another example, the user5may scroll or otherwise navigate through a series of travel categories, including travel categories that are not shown inFIG. 2A. The interface options30may include graphical depictions of options such as a search functionality (in the upper right corner) and a configuration functionality (in the upper left corner). In one embodiment, using the search functionality in the interface options30, the user5may search for particular travel categories, destinations, travel guides, and/or other travel planning options.

As shown in the example ofFIG. 2A, the user5may select a particular destination50in the user interface20. Any suitable user input may select the destination50, including a “tap and hold” or sufficiently long press in a touch-capable interface of the user device10. As shown inFIG. 2B, additional information related to the selected destination50may be displayed as a result of the selection by the user5. For example, an itinerary image71may be displayed in the user interface20; the itinerary image71may include an appealing depiction of the destination. An itinerary description70, potentially including an appealing textual description, may also be displayed in the user interface70. In one embodiment, the travel guide60for the destination50may supply, curate, and/or approve the submission of the image71and description70for the destination50, as well as the classification of the destination in the travel category40.

The user interface20may also include a plan itinerary button80. As shown in the example ofFIG. 2B, the user5may press the plan itinerary button80in the user interface20. Any suitable user input may represent a pressing of the plan itinerary button80, including input in a touch-capable interface of the user device10. As shown inFIG. 2C, additional information may be displayed in the user interface20when the user has indicated that she or he wishes to plan the itinerary associated with the destination50. For example, an itinerary map72may be displayed that indicates the locations of various components of the itinerary. Additionally, the user interface20may display a set of trip components such as trip components73,74, and75. The trip components73,74, and75may be arranged in an order, such as a chronological order from top to bottom. The trip components73,74, and75may represent various activities, events, locations, or other elements of the itinerary. In one embodiment, the user5may interact with the user interface20to customize the set of trip components and/or their parameters. Customized itineraries may be saved in the repository110and may be browsable, searchable, and/or further customizable by the same user or different users in the user interface20. Examples of itinerary customization are discussed below with respect toFIG. 3. In one embodiment, the travel guide60may assist in the customization of the itinerary, e.g., upon request from the user5.

Turning back toFIG. 2C, the user interface20may also include a price itinerary button81. As shown in the example ofFIG. 2C, the user5may press the price itinerary button81in the user interface20. Any suitable user input may represent a pressing of the price itinerary button81, including input in a touch-capable interface of the user device10. As shown inFIG. 2D, additional pricing information and/or options76may be displayed in the user interface20when the user has indicated that she or he wishes to price the itinerary associated with the destination50. For example, the itinerary may offer different pricing options for different dates and times, different transportation choices, different lodging choices, and so on. In one embodiment, aspects of the pricing options76may be supplied and/or curated by the travel guide60. The user interface20may also include a book itinerary button82. As shown in the example ofFIG. 2D, the user5may press the book itinerary button82in the user interface20to generate a reservation of the itinerary, including one or more of the trip components. In one embodiment, the itinerary may be booked with the assistance of the travel guide60. For example, booking the itinerary may result in payment to the travel guide60using a secure payment service, and the travel guide may then arrange for payment with the providers of underlying services in the itinerary.

It is contemplated that the user interface20illustrated inFIG. 2A through 2Dmay include additional components not shown, fewer components than shown, and/or different configurations of components than shown. For example, the user interface20may permit the user5to assign a range of time, including a starting date and time and an ending date and time, to an itinerary. As another example, the user interface20may permit the user5to add other individuals or groups to an itinerary. As yet another example, the user interface20may include social graph interaction, such as the capability of the user5to share an itinerary with other entities in her or his social graph (or using an external social network), call for a vote as to options for a trip component or itinerary, and/or other forms of social interaction related to itineraries and their components. As a further example, the user interface20may permit a user to add one or more itineraries and/or trip components to a wishlist.

FIG. 3illustrates examples of customization of itineraries for travel planning, according to one embodiment. The itinerary111A may include a set of trip components (such as trip components200A-200N) that represent a plurality of events, activities, and/or locations. Although four trip components200A through200C and200N are shown for purposes of example and illustration, it is contemplated that any suitable number and configuration of trip components may be used with an itinerary. The locations may be distributed over geographical areas of varying size, from a relatively small area (such as a single town or city) to a relatively large one (such as one or more nations or continents). The trip components200A-200N may be distributed over time (e.g., hours or days), each trip component may have a duration, and the particular itinerary may include a chronological order for the set of trip components. The itinerary111A may represent a predefined itinerary or an itinerary that has been previously copied and/or customized one or more times.

As shown inFIG. 3, the itinerary customization functionality130may generate a customized itinerary111C based on the itinerary111A. The customized itinerary111C may be generated based (at least in part) on user input, e.g., as entered by a client180A from a user who selected the itinerary111A and/or from one or more additional users who are identified as potential participants in the itinerary. The customized itinerary111C may be stored in the repository110for potential reuse, including duplication and/or further customization by the same user or one or more additional users. The customized itinerary111C may include one or more modifications to the chronological order. As shown in the example ofFIG. 3, the order of trip components200A and200B has been swapped in the customized itinerary111C.

The customized itinerary111C may include one or more deleted trip components. As shown in the example ofFIG. 3, component200C has been removed from the customized itinerary111C. In one embodiment, the dates and times and/or durations of other components may be modified automatically in response to the deletion of component200C, e.g., to fit the entire trip within a particular range of time indicated by a starting date and time and an ending date and time.

The customized itinerary111C may include one or more added trip components. As shown in the example ofFIG. 3, new trip component200Z has been added to the customized itinerary111C in a particular time slot prior to component200N. In one embodiment, the new trip component200Z may be selected from a repository of trip components (potentially the same repository110that stores itineraries). In one embodiment, the dates and times and/or durations of other components may be modified automatically in response to the addition of component200Z, e.g., to fit the entire trip within a particular range of time indicated by a starting date and time and an ending date and time.

The customized itinerary111C may include one or more modifications to the duration of one or more components. As shown in the example ofFIG. 3, the duration of trip component200N has been increased in the customized itinerary111C. In one embodiment, the dates and times and/or durations of other components may be modified automatically in response to the change to component200N, e.g., to fit the entire trip within a particular range of time indicated by a starting date and time and an ending date and time.

FIG. 4illustrates risk scoring of customizable itineraries for travel planning, according to one embodiment. The travel planning system100may include a risk scoring functionality150. Using the risk scoring functionality150, the aggregate risk score300for an itinerary111A may be estimated. The aggregate risk score300may represent an estimated likelihood of success for the itinerary111A as a whole. The risk scoring functionality150may determine the aggregate risk score300based (at least in part) on individual risk scores for individual trip components in the itinerary111A, such as risk score300A for trip component200A, risk score300B for trip component200B, risk score300C for trip component200C, and risk score300N for trip component200N. The individual risk scores300A-300N may also be determined by the risk scoring functionality150. Each of the individual risk scores300A-300N may represent an estimated likelihood of success for the corresponding trip component. The individual risk scores300A-300N and the aggregate risk score300may be determined for a particular range of time assigned to the itinerary, including a starting date and time and an ending date and time.

Each of the individual risk scores300A-300N may be determined based on a definition of success for the corresponding trip component. The definitions of success may be associated with particular components or with categories of components. The definitions of success may be evaluated with respect to any suitable information concerning an itinerary and/or its components, including historical success data for components, historical weather data for particular locales, anticipated weather data for particular locales, historical usage data for components such as events and lodging, geographical or proximity analysis for trip components, and other suitable data for individual components or sets of components. For example, a lodging component may be evaluated based on an estimated likelihood that a reservation is honored or not honored by the underlying provider due to an estimated usage for particular dates. As another example, a transportation component may be evaluated based on an estimated likelihood that inclement weather does not cause cancellation for particular dates. The individual risk score for a trip component may be evaluated with respect to other trip components in the itinerary. For example, an event component may be evaluated based on an estimated likelihood that the user can successfully begin the component at its assigned starting time in view of a geographical distance from the previous trip component and its assigned ending time. Similarly, one or more event components may be evaluated based on their proximity to a lodging component selected for the itinerary.

The aggregate risk score300may be displayed to one or more users, e.g., in a user interface. In one embodiment, the individual risk scores300A-300N for trip components may also be displayed to one or more users. The risk scores may be displayed as numerals in a range representing a high chance of failure to a high chance of success (e.g., between 0 and 100). The risk scores may be displayed as graphical elements representing varying chances of failure or success. For example, a green indicator may be displayed for an itinerary or component with a high chance of success, a yellow indicator may be displayed for an itinerary or component with a medium chance of success, and a red indicator may be displayed for an itinerary or component with a low chance of success. If the itinerary is customized (or further customized), the risk may be estimated again, and the updated risk score may again be displayed to one or more users. The individual risk scores300A-300N and the aggregate risk score300may be updated based on the availability of new data (e.g., weather data) or new definitions of success. In one embodiment, the travel planning system100may recommend substitute trip components or modified dates, times, or durations for trip components in order to increase the estimated likelihood of success as represented in the aggregate risk score300.

FIG. 5Aillustrates duplication of customizable itineraries for travel planning, according to one embodiment. The travel planning system100may include an itinerary duplication functionality125. Using the itinerary duplication functionality125, an itinerary may be duplicated for the same user or one or more additional users. The duplication of an itinerary may also be referred to as the cloning or copying of an itinerary. For example, based on input from client180A, the itinerary customization functionality130may generate a customized itinerary111B and store the customized itinerary in the itinerary repository110. Using the itinerary duplication functionality125, the customized itinerary111B may be retrieved from the repository110, and a copy of the customized itinerary111B may be generated for a second user represented by client180B. The copy of the customized itinerary111B may be further customized by the second user, and the resulting customized itinerary111D may be stored in the repository110for potential reuse and potential further modification.

In one embodiment, the duplication and customization of an itinerary may permit an itinerary to be relocated from one general location (or set of locations) to another, e.g., from one nation or region to another. For example, the travel planning system100may substitute trip components for similar trip components in translating a set of components from one geographical destination to another. The duplication and customization of an itinerary may also permit a user to revert to a previous version of the itinerary, e.g., to undo changes made in the customization process. In one embodiment, the change history for an itinerary may be available to a user. The user may select a previous version of the itinerary to restore that version and thus undo changes. Versions of itineraries may be sent to other users, e.g., through a messaging system build on a social graph.

In one embodiment, a user may select or enable a privacy profile that may allow or deny the copying of private trip components and/or private itineraries by particular other users and/or groups of users. Accordingly, based (at least in part) on a privacy profile and/or any suitable privacy mechanisms, trip components designated as private may be excluded from a copy of an itinerary made by another user. In one embodiment, different levels of privacy and access control may be assigned to trip components and/or itineraries, including “read and write” permissions for the owner, “read and write” permissions for other designated users or groups, “read only” permissions for other designated users or groups (including a global group of users), and “no read or write” permissions for designated users or groups (including a global group of users).

FIG. 5BandFIG. 5Cillustrate change notifications to clients after duplication of customizable itineraries for travel planning, according to one embodiment. An original itinerary (either predefined or customized) may be customized, managed, or otherwise designated as owned by a first user, and a copy of that original itinerary may be customized, managed, or otherwise designated as owned by a second user. If the second user customizes her or his copy, a notification of the changes may be sent automatically to the first user. As shown in the example ofFIG. 5B, a second user (represented by client180B) may generate a customized itinerary111D that was cloned from the itinerary111B belonging to a first user (represented by client180A). Using a change notification functionality135, the first user may be automatically notified of changes made to an itinerary that was cloned from an itinerary belonging to that first user. In one embodiment, the relationships between itineraries and their copies may be maintained in the repository110using any suitable data structures. For example, a tree structure may represent parent-child relationships between an itinerary and its clones, and the tree structure may include multiple levels of children. In one embodiment, the changes may be presented to the first user based on the change notification135, and user input may be solicited from the first user to accept or reject the changes with respect to the original itinerary111B.

Using the change notification functionality135, the second user may be automatically notified of changes made to an itinerary that was the source of an itinerary belonging to that second user. As shown in the example ofFIG. 5C, if the original itinerary111B is customized (or further customized) after it was cloned for itinerary111D, a notification of the changes may be sent automatically to the second user. For example, customized itinerary111E may be generated based on itinerary111D. In one embodiment, the changes may be presented to the second user, and user input may be solicited from the second user to accept or reject the changes with respect to the cloned (and customized) itinerary111D.

FIG. 6Aillustrates customization of itineraries for travel planning based on social recommendations from other clients, according to one embodiment. Using a social recommendation functionality165, sources of input other than a single, primary user may be used to customize an itinerary. As shown inFIG. 6A, for example, users represented by clients180B through180N may provide input to the generation of a customized itinerary111B. The input from clients180B-180N may be referred to as social input. In various embodiments, the social input from clients180B-180N may either supplement or substitute for input from a primary user represented by client180A. The social input may represent recommendations for the customization of itineraries, such as the selection of alternative trip components, the selection of a duration or particular date and time for one or more trip components, the selection of a duration or particular dates and times for the itinerary, the selection of alternative locations for the itinerary, and/or any other suitable options or parameters. In one embodiment, the social input may be collected and applied to the customization process through automated voting, e.g., using a social network interface or other programmatic interface to collect votes from other users. In one embodiment, votes may be weighted based on trust scores. The social input may also be referred to as recommendation input.

FIG. 6Billustrates customization of itineraries for travel planning based on social recommendations from a social graph, according to one embodiment. Users in one or more social graphs960may provide input to the generation of a customized itinerary111B. The other users may be connected to the primary user (represented by the client180A) in the social graph(s)960. The social input may be obtained programmatically and/or automatically through the social graph(s)960. In various embodiments, the social input from the social graph(s)960may either supplement or substitute for input from a primary user represented by client180A. The social input may represent recommendations for the customization of itineraries, such as the selection of alternative trip components, the selection of a duration or particular date and time for one or more trip components, the selection of a duration or particular dates and times for the itinerary, the selection of alternative locations for the itinerary, and/or any other suitable options or parameters. In one embodiment, the social input may be collected and applied to the customization process through automated voting, e.g., using a social network interface or other programmatic interface to collect votes from other users. In one embodiment, votes may be weighted based on trust scores. The social input may also be referred to as recommendation input.

FIG. 7illustrates customization of itineraries for travel planning based on recommendations from providers, according to one embodiment. Using a provider recommendation functionality170, sources of input other than a single, primary user may be used to customize an itinerary. As shown inFIG. 7, for example, providers190A through190N may provide input to the generation of a customized itinerary111B. The input from providers190A-190N may be referred to as provider input. In various embodiments, the provider input may either supplement or substitute for input from a primary user represented by client180A. In one embodiment, providers may propose or recommend changes or other customizations to an itinerary. For example, a hotel provider may recommend a change in dates for a hotel check-in to offer a reduced price. Accordingly, the provider input may represent recommendations for the customization of itineraries, such as the selection of alternative trip components, the selection of a duration or particular date and time for one or more trip components, the selection of a duration or particular dates and times for the itinerary, the selection of alternative locations for the itinerary, and/or any other suitable options or parameters. A notification of the proposed changes may be presented to a user, and user input may be solicited to accept or reject the proposed changes with respect to one or more particular itineraries that are owned or managed by one or more user(s) (e.g., the user represented by client180A). The provider input may also be referred to as recommendation input. In one embodiment, a subscription interface may permit providers190A-190N of travel services to add itineraries or trip components to the repository, surface itineraries or trip components for users, modify itineraries or trip components in the repository, provide recommendations to users for itineraries or trip components, and other suitable options. The provider interface195may include or implement the subscription interface, e.g., as an application programming interface (API) or other programmatic interface.

FIG. 8is a flowchart illustrating a method for implementing a repository of customizable itineraries for travel planning, according to one embodiment. As shown in805, a set of one or more trip components may be selected from a repository. The trip components may be part of one or more itineraries or may be independent of an itinerary. In one embodiment, a particular itinerary that includes the trip components may be selected from a repository of itineraries. The repository of itineraries may include a plurality of predefined itineraries and/or user-customized itineraries and a plurality of trip components. For example, the predefined itineraries may be supplied by providers including travel agents, travel guides, and/or other experts. The trip components may represent a plurality of events and/or a plurality of locations. The locations may be distributed over geographical areas of varying size, from a relatively small area (such as a single town or city) to a relatively large one (such as one or more nations or continents). The trip components may be distributed over time (e.g., hours or days), each trip component may have a duration, and the particular itinerary may include a chronological order for the set of trip components. The itinerary repository or another suitable repository may also store trip components. At least some of the trip components may be supplied by providers, including travel agents, travel guides, event providers, lodging providers, transportation providers, and/or other providers of underlying services. In one embodiment, the particular itinerary and/or trip components may be selected based (at least in part) on user input. For example, the user may browse itineraries and/or trip components in a set of named travel categories or search for types of events, types of locations, specific events, or specific locations. At least a portion of the itineraries and/or trip components in the repository may be tagged or otherwise classified in various travel categories for convenient browsing and/or searching.

As shown in810, a customized itinerary may be generated based (at least in part) on the selected trip components and/or selected itinerary. The customized itinerary may include one or more user-selected modifications to the chronological order. The customized itinerary may include one or more user-selected substitutions to the set of trip components, one or more added components, and/or one or more deleted components. One or more user-selected substitutions to the set of trip components may be selected from a repository of trip components (potentially the same repository that stores itineraries). The customized itinerary may include a user-selected modification to the duration, starting time, and/or ending time of a trip component. The customized itinerary may include one or more user-selected modifications to one or more parameters of a trip component. In one embodiment, the customized itinerary may represent a composite itinerary that is generated based on a plurality of itineraries, e.g., based on user input to combine different portions of the plurality of itineraries. In one embodiment, the particular itinerary may be customized based (at least in part) on user input, e.g., input from the user who selected the itinerary and/or input from one or more additional users who are identified as potential participants in the itinerary. As shown in815, the customized itinerary may be stored in the repository of itineraries.

As shown in820, a particular range of time may be assigned to the customized itinerary. The particular range of time may include a specific starting date and time and a specific ending date and time. In one embodiment, the particular range of time may be assigned to the customized itinerary based (at least in part) on user input, e.g., input from the user who selected or customized the itinerary and/or input from one or more additional users who are identified as potential participants in the itinerary.

As shown in825, the customized itinerary may be booked by generating a reservation of the customized itinerary for one or more clients for the particular range of time. The client(s) may include the user who selected or customized the itinerary and/or one or more additional users who are identified as potential participants in the itinerary. The reservation may include an agreement by the one or more clients to purchase at least a portion of the customized itinerary. The reservation may be booked through one or more providers, including travel agents, travel guides, event providers, lodging providers, transportation providers, and/or other providers of underlying services. The providers participating in the booking may be structured in a plurality of levels or tiers, such that one provider may act as a travel agent or travel guide to package a set of trip components (e.g., representing events and/or services) to clients and then arrange for payment with one or more other providers who actually provide the events and/or services. The customized itinerary may be booked using one or more payment services of any suitable type.

In one embodiment, an aggregate risk score may be determined for the customized itinerary, e.g., for the particular range of time. The aggregate risk score may represent an estimation of success for the customized itinerary for the particular range of time. The aggregate risk score may be determined based at least in part on respective risk scores for individual ones of the set of trip components for the particular range of time.

In one embodiment, the customized itinerary may be duplicated and further customized by the same user or one or more additional users. To duplicate the customized itinerary, it may be selected from the repository of itineraries, and a copy of the customized itinerary may be generated. A customized copy may then be generated based on user input. For example, the customized copy may include one or more user-selected modifications to the chronological order; one or more user-selected substitutions to the set of trip components; one or more added components; one or more deleted components; a user-selected modification to the duration, starting time, and/or ending time of a trip component; and/or one or more user-selected modifications to one or more parameters of a trip component. The customized copy may be stored in the repository of itineraries and may also be duplicated and further customized. A range of time (including a specific starting date and time and a specific ending date and time) may be assigned to the customized copy, and the customized copy of the customized itinerary (representing a further customized itinerary) may be booked by generating a reservation for one or more clients for the range of time.

An original itinerary may be customized, managed, or otherwise designated as owned by a first user, and a copy of that original itinerary may be customized, managed, or otherwise designated as owned by a second user. If the second user customizes her or his copy, a notification of the changes may be sent automatically to the first user. In one embodiment, the changes may be presented to the first user, and the first user may enter user input to accept or reject the changes with respect to the original itinerary. Similarly, if the original itinerary is customized (or further customized) after the copy is made, a notification of the changes may be sent automatically to the second user. In one embodiment, the changes may be presented to the second user, and the second user may enter user input to accept or reject the changes with respect to the copy of the itinerary. In one embodiment, a user may select or enable a privacy profile that may allow or deny the copying of private trip components and/or private itineraries by particular other users and/or groups of users. Accordingly, based (at least in part) on a privacy profile and/or any suitable privacy mechanisms, trip components designated as private may be excluded from a copy of an itinerary made by another user.

In one embodiment, sources of input other than a single, primary user may be used to customize an itinerary. In one embodiment, social input from one or more other users may be used to customize an itinerary. The other users may be connected to the primary user in a social graph, and the social input may be obtained programmatically and/or automatically through the social graph. The social input may represent recommendations for the customization of itineraries, such as the selection of alternative trip components, the selection of a duration or particular date and time for one or more trip components, the selection of a duration or particular dates and times for the itinerary, the selection of alternative locations for the itinerary, and/or any other suitable options or parameters. In one embodiment, the social input may be collected and applied to the customization process through automated voting, e.g., using a social network interface to collect votes from other users. In one embodiment, votes may be weighted based on trust scores. In one embodiment, providers may propose or recommend changes or other customizations to an itinerary. For example, a hotel provider may recommend a change in dates for a hotel check-in to offer a reduced price. A notification of the proposed changes may be presented to a user, and user input may be solicited to accept or reject the proposed changes with respect to one or more particular itineraries that are owned or managed by one or more user(s).

Trust-Based Social Graph for Travel Planning

FIG. 9illustrates an example system environment for implementing a trust-based social graph for travel planning, according to one embodiment. A travel planning system900may include a plurality of modules, components, or other elements of functionality that implement the creation and maintenance of one or more trust-based social graphs960. In one embodiment, the travel planning system900may include a trust scoring functionality920and a social graph generation functionality950. The social graph(s)960created and modified by the social graph generation functionality950may be used to assist in travel planning, e.g., through the customization of itineraries. Accordingly, the travel planning system900may also include a plurality of modules, components, or other elements of functionality that implement the selection, customization, and booking of itineraries using an itinerary repository110. In one embodiment, the travel planning system900may include an itinerary selection functionality120(not shown), an itinerary customization functionality130, and an itinerary booking functionality140. As discussed above with respect toFIG. 1, the itinerary selection functionality120, itinerary customization functionality130, and itinerary booking functionality140may be responsive to user input to perform various tasks related to travel planning using the itinerary repository110. Using the client interface185as discussed above with respect toFIG. 1, the travel planning system900may interact with a plurality of clients such as clients180A-180N. Using the provider interface195as discussed above with respect toFIG. 1, the travel planning system900may interact with a plurality of providers such as providers190A-190N. The travel planning system900may represent a service with which the clients180A-180N and/or providers190A-190N may interact, e.g., using one or more programmatic interfaces or APIs. For example, the clients180A-180N and/or providers190A-190N may subscribe to the service in order to facilitate the building or modification of one or more social graphs960.

Turning back toFIG. 9, the travel planning system900may obtain and/or generate social data910. Elements of the social data910may be obtained for a particular user account and for a plurality of additional accounts. The accounts may represent entities such as individual users, groups of users, experts, and/or other suitable entities such as organizations. The social data910may be obtained from any suitable sources, including direct user input (e.g., using the clients180A-180N), one or more external social graphs, and/or other accounts (e.g., at online merchants or other online services) owned by the same user. The social data910may include indications of relationships between entities, indications of types of relationships between entities (e.g., indications of family relationships, friend relationships, co-worker relationships, and so on), photos that may be relevant to the trust-based social graph, videos that may be relevant to the trust-based social graph, textual elements that may be relevant to the trust-based social graph, indications of travel history or travel preferences, indications of purchase history or purchase preferences, and/or any other data suitable for building or curating a trust-based social graph.

Using the trust scoring functionality920, trust scores may be determined for the plurality of additional accounts with respect to the particular user account. For one of the additional accounts, the trust score may be determined based (at least in part) on a relationship score and a similarity score for the additional account. The trust scoring functionality920may implement relationship analysis930of the social data910to determine relationship scores. For one of the additional accounts, the relationship score may represent the strength of a relationship with the particular user account. In one embodiment, a relationship score may be determined based (at least in part) on the existence (or lack thereof) and/or type of relationship between the particular user account and one of the additional accounts. The trust scoring functionality920may implement similarity analysis940of the social data910to determine similarity scores. For one of the additional accounts, the similarity score may represent a similarity of interests or preferences (e.g., for travel) with respect to the particular user account. In one embodiment, a similarity score may be determined based (at least in part) on an automated analysis of one or more photos, one or more videos, one or more textual elements, one or more indications of travel history or travel preferences, one or more indications of purchase history or purchase preferences, or other data corresponding to one of the additional accounts. Accordingly, both the relationship strength and the similarity of interests or preferences (e.g., for travel) may be reflected in the trust scoring920between two accounts.

Using the social graph generation functionality950, the social graph(s)960may be created or updated based on the trust scoring920. In one embodiment, of the additional accounts analyzed with respect to the particular user account, those having a trust score that satisfies a particular threshold may be considered trusted accounts with respect to the particular user account. Accordingly, one or more connections in the social graph(s)960may be generated between the particular user account and one or more trusted accounts. The one or more connections between the particular user account and the trusted accounts may be generated based (at least in part) on the trust scores. Any of the accounts may or may not already be represented by nodes in the social graph(s)960. In one embodiment, one or more connections in the social graph(s)960may be recommended to the particular user account and then created in response to user input accepting the recommendation(s). In one embodiment, one or more connections in the social graph(s)960may created automatically, e.g., without direct user input accepting any recommendation(s).

In various embodiments, an itinerary for the particular user account may be modified (as discussed above with respect toFIG. 3, for example) based (at least in part) on social input obtained using the connections with the one or more trusted accounts in the social graph(s)960. The social input may be obtained programmatically and/or automatically through the social graph(s)960. The social input may represent recommendations for the customization of itineraries, such as the selection of alternative trip components, the selection of a duration or particular date and time for one or more trip components, the selection of a duration or particular dates and times for the itinerary, the selection of alternative locations for the itinerary, and/or any other suitable options or parameters. In one embodiment, the social input may be collected and applied to the customization process through automated voting, e.g., using a social network interface to collect votes from other users. In one embodiment, votes may be weighted based on trust scores. The modifications may be determined based on automated analysis of travel data (e.g., travel-related photos, travel-related videos, travel-related text, travel-related purchase history and purchase preferences, and other travel history and travel preferences) from the one or more trusted accounts. In one embodiment, modifications based on travel data may be recommended to the particular user account and then entered to an itinerary based (at least in part on) user input representing an acceptance of the one or more modifications in the recommendation.

The travel planning system900may comprise one or more computing devices, any of which may be implemented by the example computing device5000illustrated inFIG. 18. In various embodiments, portions of the functionality of the travel planning system900may be provided by the same computing device or by any suitable number of different computing devices. If any of the components of the travel planning system100(such as the trust scoring functionality920, social graph generation functionality950, social graph(s)960, itinerary repository110, itinerary customization functionality130, and itinerary booking functionality140) are implemented using different computing devices, then the components and their respective computing devices may be communicatively coupled, e.g., via a network. Each of the illustrated components (such as the trust scoring functionality920, social graph generation functionality950, social graph(s)960, itinerary repository110, itinerary customization functionality130, and itinerary booking functionality140) may represent any combination of software and hardware usable to perform their respective functions.

It is contemplated that the travel planning system900may include additional components not shown, fewer components than shown, or different combinations, configurations, or quantities of the components shown. For example, although three clients180A,180B, and180N are shown for purposes of example and illustration, it is contemplated that different quantities and configurations of clients may be used with the travel planning system900. Additionally, although three providers190A,190B, and190N are shown for purposes of example and illustration, it is contemplated that different quantities and configurations of providers may be used with the travel planning system900.

In some embodiments, travel planning system900, clients180A-180N, and/or providers190A-190N may be implemented using virtual compute instances and/or physical compute instances. The virtual compute instances and/or physical compute instances may be offered to clients, provisioned, and maintained by a provider network that manages computational resources, memory resources, storage resources, and network resources. A virtual compute instance may comprise one or more servers with a specified computational capacity (which may be specified by indicating the type and number of CPUs, the main memory size, and so on) and a specified software stack (e.g., a particular version of an operating system, which may in turn run on top of a hypervisor). One or more virtual compute instances may be implemented by the example computing device5000illustrated inFIG. 18.

In one embodiment, the travel planning system900may select and/or provision virtual compute instances for implementing the various components of the travel planning system (such as the trust scoring functionality920, social graph generation functionality950, social graph(s)960, itinerary repository110, itinerary customization functionality130, and itinerary booking functionality140). For example, the virtual compute instances may be provisioned from a suitable pool of available computing instances. In one embodiment, additional computing instances may be added to the travel planning system900as needed. In one embodiment, computing instances may be returned to the pool of available computing instances if the computing instances are not needed at a particular point in time. In one embodiment, the functionality of the travel planning system900may be provided to clients180A-180N and/or providers190A-190N using a provider network. For example, the functionality of the travel planning system900may be presented to clients and/or providers as a web-accessible service.

FIG. 10illustrates further aspects of the example system environment for implementing a trust-based social graph for travel planning, including social graph importing, according to one embodiment. In one embodiment, the travel planning system900may include a social graph importing functionality970. The social graph importing functionality970may collect elements of the social data910from one or more external social graphs, such as external social graphs965A through965N. The external social graphs965A-965N may be operated or maintained by an entity other than the entity that operates or maintains the travel planning system900. The external social graphs965A-965N may represent a variety of social network services, e.g., web-accessible social networks that link users to one another and permit the sharing of various types of data. The social graph importing functionality970may use any suitable interfaces and/or interconnections, such as programmatic interfaces or APIs, to collect elements of the social data910from the external social graphs965A-965N. In one embodiment, the social graph importing functionality970may collect elements of the social data910from any of the external social graphs965A-965N on behalf of a particular user account that is also represented by one or more nodes in the external social graph(s), and it may do so with explicit permission from that user account (e.g., by the user supplying login credentials for the corresponding accounts in the external social graph(s)).

Elements of the social data910may be obtained from a variety of sources, potentially including direct user input (e.g., using the clients180A-180N), one or more external social graphs965A-965N, and/or other accounts (e.g., at online merchants or other online services) owned by or associated with a particular user. For example, the social data910may include external social graph data911sourced from one or more external social graphs965A-965N. The external social graph data911may include indications of relationships between entities and/or indications of types of relationships between entities (e.g., indications of family relationships, friend relationships, co-worker relationships, and so on). The social data910may include photos912that may be relevant to the trust-based social graph as well as videos that may be relevant to the trust-based social graph. The photos and videos may be associated with location data and/or other suitable metadata for indicating travel preferences. The social data910may include textual elements913that may be relevant to the trust-based social graph, such as posts and messages from external social graphs965A-965N, reviews of products made at online merchants, searches entered into a browser, and so on. The social data910may include indications of travel history or travel preferences914, such as previously booked itineraries, elements of browser history, or other indications of travel preferences. The social data910may include indications of purchase history or purchase preferences915, e.g., as sourced from online merchants or from social media posts.

FIG. 11Aillustrates the use of relationship analysis for generating a trust-based social graph for travel planning, according to one embodiment. The trust scoring functionality920may perform relationship analysis930for a particular entity1100with respect to other entities such as entity1101, entity1102, and entity1103through entity1109. Although five entities1100-1109are shown for purposes of illustration and example, it is contemplated that any suitable number and configuration of entities may be used. The entities1100-1109may represent individual users, groups of users, experts, and/or organizations. Based (at least in part) on social data910, the relationship analysis930may determine a relationship score between the primary entity1100and any of the other entities1101-1109. As shown in the example ofFIG. 11A, the relationship analysis930may determine a relationship score931between the primary entity1100and the entity1101, a relationship score932between the primary entity1100and the entity1102, a relationship score933between the primary entity1100and the entity1103, and a relationship score939between the primary entity1100and the entity1109. Each of the relationship scores931-939may represent the existence and strength of a relationship between the primary entity1100and the corresponding one of the entities1101-1109. In one embodiment, the relationship scores may be generated within a range of values (e.g., 0 to 1).

FIG. 11Billustrates the use of similarity analysis for generating a trust-based social graph for travel planning, according to one embodiment. The trust scoring functionality920may perform similarity analysis940for the particular entity1100with respect to other entities such as entity1101, entity1102, and entity1103through entity1109. The entities1100-1109may represent individual users, groups of users, experts, and/or organizations. Based (at least in part) on social data910, the similarity analysis940may determine a similarity score between the primary entity1100and any of the other entities1101-1109. As shown in the example ofFIG. 11B, the similarity analysis940may determine a similarity score941between the primary entity1100and the entity1101, a similarity score942between the primary entity1100and the entity1102, a similarity score943between the primary entity1100and the entity1103, and a similarity score949between the primary entity1100and the entity1109. Each of the similarity scores941-949may represent the strength of a similarity of travel interests and/or travel preferences between the primary entity1100and the corresponding one of the entities1101-1109. In one embodiment, the similarity scores may be generated within a range of values (e.g., 0 to 1).

FIG. 11Cillustrates the use of trust scoring based on relationship analysis and similarity analysis for generating a trust-based social graph for travel planning, according to one embodiment. Based on the relationship scores931-939and the similarity scores941-949, the trust scoring functionality920may determine a similarity score between the primary entity1100and any of the other entities1101-1109. As shown in the example ofFIG. 11C, the trust scoring functionality920may determine a trust score921between the primary entity1100and the entity1101, a trust score922between the primary entity1100and the entity1102, a trust score923between the primary entity1100and the entity1103, and a trust score929between the primary entity1100and the entity1109. Each of the trust scores921-929may represent both the existence and strength of a relationship between the primary entity1100and the corresponding one of the entities1101-1109and the strength of a similarity of travel interests and/or travel preferences between the primary entity1100and the corresponding one of the entities1101-1109. In one embodiment, the trust scores may be generated within a range of values (e.g., 0 to 1).

In one embodiment, some entities may have trust modifiers to indicate a high level of expertise on travel-related matters. Entities with expertise and intrinsically high trust may include travel agents, travel guides, other experts, and providers of underlying services, including business entities and other organizations. Entities with high degrees of expertise may be scored with higher trust scores as a result of the trust modifier. In one embodiment, the expertise may be assigned to entities as a result of social input, e.g., from indications of trust observed in a social graph.

Of the other entities1101-1109, those having a trust score that satisfies a particular threshold may be considered trusted entities1120with respect to the primary entity1100. As shown in the example ofFIG. 11C, the entities1101,1102, and1103may have trust scores (with respect to entity1100) that qualifies them as trusted entities; however, the trust score929for the other entity1109may be too low for the entity to qualify as trusted with respect to entity1100. Using the social graph generation functionality950, connections in social graph(s)960may be generated between the entity1100and one or more trusted entities1101,1102, and1103but not between the entity1100and the entity1109. Any of the entities1100-1109may or may not already be represented by nodes in the social graph(s)960; if the corresponding nodes are not already present, they may be created. In one embodiment, any of the connections between the entity1100and the entities1101,1102, or1103may already be present in the social graph(s)960; if the connections (or edges) are not already present, they may be created. As indicated inFIG. 11C, any of the entities1101,1102,1103, and1109may have connections to entities other than entity1100in the social graph(s)960. In one embodiment, one or more connections in the social graph(s)960may be recommended to the entity1100and then created in response to user input accepting the recommendation(s). In one embodiment, one or more connections in the social graph(s)960may created automatically, e.g., without direct user input accepting any recommendation(s). In one embodiment, existing connections may be removed from the trust-based social graph(s)960as trust scoring is performed again using updated social data910.

FIG. 12illustrates the use of trust scoring based on relationship analysis and similarity analysis of an external social graph for generating a trust-based social graph for travel planning, according to one embodiment. In one embodiment, other entities that have no preexisting relationship with a particular entity (e.g., in one or more external social graphs) may be considered trusted entities based on a high similarity component of the trust score. As shown in the example ofFIG. 12, the entity1100may not have a relationship with the entity1103in an external social graph965A. However, similarity analysis may reveal that the similarity of travel interests or preferences is very high. Accordingly, the trust score between entity1100and entity1103may be high enough to offset the low relationship score and to result in a connection between the two entities in the trust-based social graph(s)960. In one embodiment, a connection between two entities that have no preexisting relationship may be created only based on an affirmative acceptance of a recommendation by one or more of the entities and/or according to a privacy profile for one or more of the entities. Conversely, other entities that do have preexisting relationships with a particular entity (e.g., in one or more external social graphs) may be excluded from the trusted entities based on a low similarity component of the trust score. As shown in the example ofFIG. 12, the entity1100may have a relationship with the entity1109in an external social graph965A. However, similarity analysis may reveal that the similarity of travel interests or preferences is very low. Accordingly, the trust score between entity1100and entity1109may be too low to create a connection between the two entities in the trust-based social graph(s)960.

FIG. 13is a flowchart illustrating a method for implementing a trust-based social graph for travel planning, according to one embodiment. As shown in1305, social data may be obtained for a particular user account and for a plurality of additional accounts. The accounts may represent entities such as individual users, groups of users, experts, and/or other suitable entities such as organizations. The social data may be obtained from any suitable sources, including direct user input, one or more external social graphs, and/or other accounts (e.g., at online merchants or other online services) owned by the same user. The social data may include indications of relationships between entities, indications of types of relationships between entities (e.g., indications of family relationships, friend relationships, co-worker relationships, and so on), photos that may be relevant to the trust-based social graph, videos that may be relevant to the trust-based social graph, textual elements that may be relevant to the trust-based social graph, indications of travel history or travel preferences, indications of purchase history or purchase preferences, and/or any other data suitable for building or curating a trust-based social graph.

As shown in1310, for the particular user account, respective relationship scores may be determined for a plurality of additional accounts. For one of the additional accounts, the relationship score may represent the strength of a relationship with the particular user account. The relationship scores may be determined using relationship analysis of the social data. In one embodiment, a relationship score may be determined based (at least in part) on the existence (or lack thereof) and/or type of relationship between the particular user account and one of the additional accounts.

As shown in1315, for the particular user account, respective similarity scores may be determined for the plurality of additional accounts. For one of the additional accounts, the similarity score may represent a similarity of interests or preferences (e.g., for travel) with respect to the particular user account. The similarity scores may be determined using similarity analysis of the social data. In one embodiment, a similarity score may be determined based (at least in part) on an automated analysis of one or more photos, one or more videos, one or more textual elements, one or more indications of travel history or travel preferences, one or more indications of purchase history or purchase preferences, or other data corresponding to one of the additional accounts.

As shown in1320, for the particular user account, respective trust scores may be determined for the plurality of additional accounts. For one of the additional accounts, the trust score may be determined based (at least in part) on the respective relationship score and the respective similarity score for the additional accounts. Accordingly, both the relationship strength and the similarity of interests or preferences (e.g., for travel) may be reflected in the trust score between two accounts.

Of the additional accounts, those having a trust score that satisfies a particular threshold may be considered trusted accounts with respect to the particular user account. As shown in1325, one or more respective connections in a social graph may be generated between the particular user account and one or more trusted accounts. Accordingly, the one or more respective connections between the particular user account and the trusted accounts may be generated based (at least in part) on the trust scores. Any of the accounts may or may not already be represented by nodes in the social graph. In one embodiment, other accounts that have no preexisting relationship with the particular user account (e.g., in one or more external social graphs) may be considered trusted accounts based on a high similarity component of the trust score. Conversely, other accounts that do have preexisting relationships with the particular user account (e.g., in one or more external social graphs) may be excluded from the trusted accounts based on a low similarity component of the trust score. In one embodiment, one or more connections in the social graph may be recommended to the particular user account and then created in response to user input accepting the recommendation(s). In one embodiment, one or more connections in the social graph may created automatically, e.g., without direct user input accepting any recommendation(s).

In various embodiments, an itinerary for the particular user account may be modified (as discussed above with respect toFIG. 3, for example) based (at least in part) on social input obtained using the connections with the one or more trusted accounts in the social graph. The social input may be obtained programmatically and/or automatically through the social graph. The social input may represent recommendations for the customization of itineraries, such as the selection of alternative trip components, the selection of a duration or particular date and time for one or more trip components, the selection of a duration or particular dates and times for the itinerary, the selection of alternative locations for the itinerary, and/or any other suitable options or parameters. In one embodiment, the social input may be collected and applied to the customization process through automated voting, e.g., using a social network interface to collect votes from other users. In one embodiment, votes may be weighted based on trust scores. The modifications may be determined based on automated analysis of travel data (e.g., travel-related photos, travel-related videos, travel-related text, travel-related purchase history and purchase preferences, and other travel history and travel preferences) from the one or more trusted accounts. In one embodiment, modifications based on travel data may be recommended to the particular user account and then entered to an itinerary based (at least in part on) user input representing an acceptance of the one or more modifications in the recommendation.

Customizable Decision Recipes with Input from a Social Graph

FIG. 14illustrates an example system environment for implementing a repository of customizable decision recipes, according to one embodiment. A decision support system1400may include a plurality of modules, components, or other elements of functionality that implement the selection, customization, and scoring of decision recipes using a decision recipe repository1410. In one embodiment, the decision support system1400may include a decision recipe selection functionality1420, a decision recipe customization functionality1430, and a decision recipe scoring functionality1450. In one embodiment, the decision recipe selection functionality1420, decision recipe customization functionality1430, and decision recipe booking functionality140may be responsive to user input to perform various tasks related to decision evaluation using the decision recipe repository1410.

Using a client interface1485, the decision support system1400may interact with a plurality of clients such as clients180A and180B through180N. The decision support system1400and clients180A-180N may be communicatively coupled to one another using one or more suitable networks. The clients180A-180N may represent various clients, users, client accounts, or user accounts. The clients180A-180N may be implemented as computing instances, resources, processes, or any suitable combinations thereof. The client interface1485may implement one or more user interfaces and/or application programming interfaces (APIs) enabling clients to select decision recipes and/or decision components from the repository1410, customize decision recipes and/or decision components, score decision recipes, book decision recipes and/or decision components, interact with other users (e.g., using social graph(s)960), and perform other suitable tasks.

Using a provider interface1495, the decision support system1400may interact with a plurality of providers such as providers190A and190B through190N. The decision support system1400and providers190A-190N may be communicatively coupled to one another using one or more suitable networks. The providers190A-190N may represent various types of providers such as providers of underlying services in the decision recipes, agents, specialists, and/or other experts. The providers190A-190N may be implemented as computing instances, resources, processes, or any suitable combinations thereof. In one embodiment, the providers190A-190N may be structured in a plurality of levels or tiers, such that one provider may act as an agent to package a set of decision components (e.g., representing events and/or services) to clients and then arrange for payment with one or more other providers who actually provide the events and/or services. The provider interface1495may implement one or more application programming interfaces (APIs) enabling providers to submit decision recipes and/or decision components for storage in the repository1410, submit recommended changes to decision recipes and/or decision components for users, book decision recipes and/or decision components, and perform other suitable tasks.

The repository1410may store a plurality of decision recipes, including customizable decision recipes. A decision recipe in the repository1410may represent a decision plan for one or more users. The repository1410may include a plurality of predefined decision recipes and/or user-customized decision recipes. The predefined decision recipes may be supplied by providers190A-190N including providers of underlying services in the decision recipes, agents, specialists, and/or other experts. Each decision recipe may include a set of decision components. The decision components may represent atomic elements of a potential solution towards one or more user-specified goals. In one embodiment, decision components may represent events, activities, and/or locations. In one embodiment, the decision components may be distributed over time (e.g., hours or days), each decision component may have a duration, and a decision recipe may include a chronological order for the set of decision components. The decision recipe repository1410or another suitable repository may also store decision components. At least some of the decision components may be supplied by providers190A-190N. Examples of types of decisions that may be evaluated using decision recipes may include lifestyle decisions, employment decisions, residential relocation decisions, investment decisions, education decisions, health and exercise decisions, and other suitable types of decisions.

Using the decision recipe selection functionality1420, a decision recipe1411A may be selected from the repository1410. In one embodiment, the decision recipe1411A may be selected based (at least in part) on user input. However, it is contemplated that the decision recipe1411A may be selected by the decision support system1400without direct input by the user for whom the decision recipe is selected, e.g., based on the history and/or preferences for the user and/or based on the history and/or preferences for other users or entities. In one embodiment, to select the decision recipe1411A, a user (represented by one of the clients180A-180N) may browse decision recipes in a set of named decision categories or search for types of decision components and/or specific decision components. At least a portion of the decision recipes in the repository1410may be tagged or otherwise classified in various decision categories for convenient browsing and/or searching. In one embodiment, multiple decision recipes may be selected for a single user with the recipe selection functionality1420. In one embodiment, the repository1410may also store decision components independently of decision recipes, and multiple decision components may be selected for a single user with the recipe selection functionality1420. In various embodiments, the decision components may be selected with or without user input.

Using the decision recipe customization functionality1430, the decision recipe1411A may be customized to create a customized decision recipe1411B. The customized decision recipe1411B may include one or more user-selected modifications to the chronological order. The customized decision recipe1411B may include one or more user-selected substitutions to the set of decision components, one or more added components, and/or one or more deleted components. One or more user-selected substitutions to the set of decision components may be selected from a repository of decision components (potentially the same repository1410that stores decision recipes). The customized decision recipe1411B may include a user-selected modification to the duration, starting time, and/or ending time of a decision component. The customized decision recipe1411B may include one or more user-selected modifications to one or more parameters of a decision component. In one embodiment, the decision recipe1411A may be customized based (at least in part) on user input, e.g., input from the user who selected the decision recipe and/or input from one or more additional users who are identified as potential participants in the decision recipe. In one embodiment, the decision recipe1411A may be customized based (at least in part) on input from one or more social graph(s)960, including a trust-based social graph in which connections between entities are determined based on a relationship score and a similarity score. The customized decision recipe1411B may be stored in the repository1410. In one embodiment, the customized decision recipe1411B may represent a composite decision recipe that is generated based on multiple decision recipes, e.g., based on user input to combine different portions of the multiple decision recipes. In one embodiment, the customized decision recipe1411B may be generated based on multiple decision components that are combined (e.g., based on user input) to generate a new decision recipe.

Using the decision recipe scoring functionality1450, the aggregate score for a decision recipe may be estimated. The aggregate score may represent an estimated likelihood of success for the decision recipe as a whole or another indicator of the quality of the decision. The decision scoring functionality1450may determine the aggregate score based (at least in part) on individual scores for individual decision components in the decision recipe.

In one embodiment, at least a portion of a decision recipe such as the decision recipe1411A or customized decision recipe1411B may be booked with one or more providers190A-190N. A particular range of time may be assigned to the decision recipe1411A or1411B. The particular range of time may include a specific starting date and time and a specific ending date and time. In one embodiment, the particular range of time may be assigned to the decision recipe1411A or1411B based (at least in part) on user input, e.g., input from the user who selected or customized the decision recipe and/or input from one or more additional users who are identified as potential participants in the decision recipe. The decision recipe1411A or1411B may be booked by generating a reservation of the decision recipe for one or more clients, e.g., for the particular range of time. The client(s) may include the user who selected or customized the decision recipe and/or one or more additional users who are identified as potential participants in the decision recipe. The reservation may include an agreement by the one or more clients to purchase at least a portion of the decision recipe1411A or1411B and/or any other suitable transaction, including a payment to one or more providers. The reservation may be booked through one or more providers190A-190N, including travel agents, travel guides, event providers, lodging providers, transportation providers, and/or other providers of underlying services. The providers participating in the booking may be structured in a plurality of levels or tiers, such that one provider may act as an agent to package a set of decision components (e.g., representing events and/or services) to clients and then arrange for payment with one or more other providers who actually provide the events and/or services. The decision recipe1411A or1411B may be booked using one or more payment services of any suitable type.

The decision support system1400may comprise one or more computing devices, any of which may be implemented by the example computing device5000illustrated inFIG. 18. In various embodiments, portions of the functionality of the decision support system1400may be provided by the same computing device or by any suitable number of different computing devices. If any of the components of the decision support system1400(such as the decision recipe repository1410, decision recipe selection functionality1420, decision recipe customization functionality1430, and decision scoring functionality1450) are implemented using different computing devices, then the components and their respective computing devices may be communicatively coupled, e.g., via a network. Each of the illustrated components (such as the decision recipe repository1410, decision recipe selection functionality1420, decision recipe customization functionality1430, and decision scoring functionality1450) may represent any combination of software and hardware usable to perform their respective functions.

It is contemplated that the decision support system1400may include additional components not shown, fewer components than shown, or different combinations, configurations, or quantities of the components shown. For example, although three clients180A,180B, and180N are shown for purposes of example and illustration, it is contemplated that different quantities and configurations of clients may be used. Additionally, although three providers190A,190B, and190N are shown for purposes of example and illustration, it is contemplated that different quantities and configurations of providers may be used.

In some embodiments, decision support system1400, clients180A-180N, and/or providers190A-190N may be implemented using virtual compute instances and/or physical compute instances. The virtual compute instances and/or physical compute instances may be offered to clients, provisioned, and maintained by a provider network that manages computational resources, memory resources, storage resources, and network resources. A virtual compute instance may comprise one or more servers with a specified computational capacity (which may be specified by indicating the type and number of CPUs, the main memory size, and so on) and a specified software stack (e.g., a particular version of an operating system, which may in turn run on top of a hypervisor). One or more virtual compute instances may be implemented by the example computing device5000illustrated inFIG. 18.

In one embodiment, the decision support system1400may select and/or provision virtual compute instances for implementing the various components of the travel planning system (such as the decision recipe repository1410, decision recipe selection functionality1420, decision recipe customization functionality1430, and decision scoring functionality1450). For example, the virtual compute instances may be provisioned from a suitable pool of available computing instances. In one embodiment, additional computing instances may be added to the decision support system1400as needed. In one embodiment, computing instances may be returned to the pool of available computing instances if the computing instances are not needed at a particular point in time.

In one embodiment, the functionality of the decision support system1400may be provided to clients180A-180N and/or providers190A-190N using a provider network. For example, the functionality of the decision support system1400may be presented to clients and/or providers as a web-accessible service. A network set up by an entity such as a company or a public sector organization to provide one or more services (such as various types of cloud-based computing or storage) accessible via the Internet and/or other networks to a distributed set of clients may be termed a provider network. A provider network may include numerous data centers hosting various resource pools, such as collections of physical and/or virtualized computer servers, storage devices, networking equipment and the like, that are used to implement and distribute the infrastructure and services offered by the provider. The resources may, in some embodiments, be offered to clients in units called “instances,” such as virtual or physical compute instances or storage instances. A virtual compute instance may, for example, comprise one or more servers with a specified computational capacity (which may be specified by indicating the type and number of CPUs, the main memory size, and so on) and a specified software stack (e.g., a particular version of an operating system, which may in turn run on top of a hypervisor). A number of different types of computing devices may be used singly or in combination to implement the resources of the provider network in different embodiments, including general purpose or special purpose computer servers, storage devices, network devices, and the like.

FIG. 15illustrates examples of customization of decision recipes using input from a social graph, according to one embodiment. The decision recipe1411A may include a set of decision components (such as decision components1500A-1500N) that represent atomic elements of a potential solution towards one or more user-specified goals. Although four decision components1500A through1500C and1500N are shown for purposes of example and illustration, it is contemplated that any suitable number and configuration of decision components may be used with a decision recipe. The decision components1500A-1500N may be distributed over time (e.g., hours or days), each decision component may have a duration, and the particular decision recipe may include a chronological order for the set of decision components. The decision recipe1411A may represent a predefined decision recipe or a decision recipe that has been previously copied and/or customized one or more times.

As shown inFIG. 15, the decision recipe customization functionality1430may generate a customized decision recipe1411C based on the decision recipe1411A. The customized decision recipe1411C may be generated based (at least in part) on user input, e.g., as entered by a client180A from a user who selected the decision recipe1411A and/or from one or more additional users who are identified as potential participants in the decision recipe. The customized decision recipe1411C may be generated based (at least in part) on input from one or more social graph(s)960, including a trust-based social graph in which connections between entities are determined based on a relationship score and a similarity score. The customized decision recipe1411C may be stored in the repository1410for potential reuse, including duplication and/or further customization by the same user or one or more additional users. The customized decision recipe1411C may include one or more modifications to the order of components. As shown in the example ofFIG. 15, the order of decision components1500A and1500B has been swapped in the customized decision recipe1411C.

The customized decision recipe1411C may include one or more deleted decision components. As shown in the example ofFIG. 15, component1500C has been removed from the customized decision recipe1411C. In one embodiment, the dates and times, durations, and/or other parameters of other components may be modified automatically in response to the deletion of component1500C, e.g., to fit the entire decision recipe within a particular range of time indicated by a starting date and time and an ending date and time.

The customized decision recipe1411C may include one or more added decision components. As shown in the example ofFIG. 15, new decision component1500Z has been added to the customized decision recipe1411C in a particular slot prior to component1500N. In one embodiment, the new decision component1500Z may be selected from a repository of decision components (potentially the same repository1410that stores decision recipes). In one embodiment, the dates and times, durations, and/or other parameters of other components may be modified automatically in response to the addition of component1500Z, e.g., to fit the entire decision recipe within a particular range of time indicated by a starting date and time and an ending date and time.

FIG. 16illustrates decision scoring of customizable decision recipes for travel planning, according to one embodiment. Using the decision scoring functionality1450, the aggregate score1600for a decision recipe1411A may be estimated. The aggregate score1600may represent an estimated likelihood of success for the decision recipe1411A as a whole. The decision scoring functionality1450may determine the aggregate score1600based (at least in part) on individual scores for individual decision components in the decision recipe1411A, such as score1600A for decision component1500A, score1600B for decision component1500B, score1600C for decision component1500C, and score1600N for decision component1500N. The individual scores1600A-1600N may also be determined by the decision scoring functionality1450. Each of the individual scores1600A-1600N may represent an estimated likelihood of success for the corresponding decision component. The individual scores1600A-1600N and the aggregate score1600may be determined for a particular range of time assigned to the decision recipe, including a starting date and time and an ending date and time. In one embodiment, the individual scores1600A-1600N and/or aggregate score1600may be evaluated relative to one or more goals and/or constraints. The goals and/or constraints may be specified by one or more users or may be default elements of a particular decision recipe.

Each of the individual scores1600A-1600N may be determined based on a definition of success for the corresponding decision component. The definitions of success may be associated with particular components or with categories of components. The definitions of success may be evaluated with respect to any suitable information concerning a decision recipe and/or its components, including historical success data for components, historical weather data for particular locales, anticipated weather data for particular locales, historical usage data for components, geographical or proximity analysis for decision components, and other suitable data for individual components or sets of components. For example, an event component may be evaluated based on an estimated likelihood that a reservation is honored or not honored by the underlying provider due to an estimated usage for particular dates. As another example, a transportation component may be evaluated based on an estimated likelihood that inclement weather does not cause cancellation for particular dates. The individual score for a decision component may be evaluated with respect to other decision components in the decision recipe. For example, an event component may be evaluated based on an estimated likelihood that the user can successfully begin the component at its assigned starting time in view of a geographical distance from the previous decision component and its assigned ending time. Similarly, one or more events components may be evaluated based on their proximity to a lodging component selected for the decision recipe.

The aggregate score1600may be displayed to one or more users, e.g., in a user interface. In one embodiment, the individual scores1600A-1600N for decision components may also be displayed to one or more users. The scores may be displayed as numerals in a range representing a high chance of failure to a high chance of success (e.g., between 0 and 100). The scores may be displayed as graphical elements representing varying chances of failure or success. For example, a green indicator may be displayed for a decision recipe or component with a high chance of success, a yellow indicator may be displayed for a decision recipe or component with a medium chance of success, and a green indicator may be displayed for a decision recipe or component with a low chance of success. If the decision recipe is customized (or further customized), the risk may be estimated again, and the updated score may again be displayed to one or more users. The individual scores1600A-1600N and the aggregate score1600may be updated based on the availability of new data or new definitions of success. In one embodiment, the travel planning system100may recommend substitute decision components or modified parameters for decision components in order to increase the estimated likelihood of success as represented in the aggregate score1600.

FIG. 17is a flowchart illustrating a method for implementing a repository of customizable decision recipes, according to one embodiment. As shown in1705, a particular decision recipe may be selected from a repository of decision recipes. The repository of decision recipes may include a plurality of predefined decision recipes and/or user-customized decision recipes. For example, the predefined decision recipes may be supplied by providers, including providers of underlying services in the decision recipes, specialists, and/or other experts. The particular decision recipe may include a set of decision components. The decision components may represent atomic elements of a potential solution towards one or more user-specified goals. In one embodiment, decision components may be distributed over time (e.g., hours or days), each decision component may have a duration, and the particular decision recipe may include a chronological order for the set of decision components. The decision recipe repository or another suitable repository may also store decision components. At least some of the decision components may be supplied by providers. In one embodiment, the particular decision recipe may be selected based (at least in part) on user input. For example, the user may browse decision recipes in a set of named categories. At least a portion of the decision recipes in the repository may be tagged or otherwise classified in various categories for convenient browsing and/or searching. In one embodiment, a set of decision components may be selected from the repository; the selected decision component(s) may be selected independently of a decision recipe or may be part of a selected decision recipe.

As shown in1710, social input may be solicited from a plurality of nodes in a social graph for the particular user. The social input may include one or more recommendations for the set of decision components in the particular decision recipe. The social input may be obtained programmatically and/or automatically through the social graph. The social input may represent recommendations for the customization of decision recipes, such as the selection of alternative decision components, the selection of a duration or particular date and time for one or more decision components, the selection of a duration or particular dates and times for the decision recipe, and/or any other suitable options or parameters. In one embodiment, the social input may be collected and through automated voting, e.g., using a social network interface to collect votes from other users. In one embodiment, votes may be weighted based on trust scores. In one embodiment, modifications based on social input may be recommended to the particular user account and then entered to a decision recipe based (at least in part on) user input representing an acceptance of the one or more modifications in the recommendation.

As shown in1715, a customized decision recipe may be generated based (at least in part) on the particular decision recipe and on the social input. The customized decision recipe may include one or more modifications to the chronological order. The customized itinerary may include one or more substitutions to the set of decision components, one or more added components, and/or one or more deleted components. One or more substitutions to the set of decision components may be selected from a repository of decision components (potentially the same repository that stores decision recipes). The customized decision recipe may include a modification to the duration, starting time, and/or ending time of a decision component. The customized itinerary may include one or more modifications to one or more parameters of a decision component. In one embodiment, the particular decision recipe may be customized based (at least in part) on user input, e.g., input from the user who selected the decision recipe and/or input from one or more additional users who are identified as potential participants in the decision recipe. In one embodiment, the customized decision recipe may be generated based on a set of decision components (independent of any decision recipe) selected from the repository. As shown in1720, the customized decision recipe may be stored in the repository of decision recipes.

As shown in1725, an aggregate score may be determined for the customized decision recipe. The aggregate score may represent an estimated likelihood of a successful solution for the customized decision recipe with respect to one or more user-specified goals. The aggregate score may be determined based (at least in part) on respective scores for individual ones of the set of decision components, each of which may be associated with a definition of success for the individual component.

In one embodiment, one or more components of the customized decision recipe may be booked by generating a reservation for one or more clients. The client(s) may include the user who selected or customized the decision recipe and/or one or more additional users who are identified as potential participants in the decision recipe. The reservation may include an agreement by the one or more clients to purchase at least a portion of the customized decision recipe. The reservation may be booked through one or more providers, including specialists, experts, travel agents, travel guides, event providers, lodging providers, transportation providers, and/or other providers of underlying services. The providers participating in the booking may be structured in a plurality of levels or tiers, such that one provider may package a set of decision components (e.g., representing events and/or services) to clients and then arrange for payment with one or more other providers who actually provide the events and/or services. The customized decision recipe may be booked using one or more payment services of any suitable type.

In one embodiment, the customized decision recipe may be duplicated and further customized by the same user or one or more additional users. To duplicate the customized decision recipe, it may be selected from the repository of decision recipe, and a copy of the customized decision recipe may be generated. A customized copy may then be generated based on user input. For example, the customized copy may include one or more modifications to the chronological order; one or more substitutions to the set of decision components; one or more added components; one or more deleted components; a modification to the duration, starting time, and/or ending time of a decision component; and/or one or more modifications to one or more parameters of a decision component. The customized copy may be stored in the repository of decision recipes and may also be duplicated and further customized. A range of time (including a specific starting date and time and a specific ending date and time) may be assigned to the customized copy, and the customized copy of the customized decision recipe (representing a further customized decision recipe) may be booked by generating a reservation for one or more clients.

An original decision recipe may be customized, managed, or otherwise designated as owned by a first user, and a copy of that original decision recipe may be customized, managed, or otherwise designated as owned by a second user. If the second user customizes her or his copy, a notification of the changes may be sent automatically to the first user. In one embodiment, the changes may be presented to the first user, and the first user may enter user input to accept or reject the changes with respect to the original decision recipe. Similarly, if the original decision recipe is customized (or further customized) after the copy is made, a notification of the changes may be sent automatically to the second user. In one embodiment, the changes may be presented to the second user, and the second user may enter user input to accept or reject the changes with respect to the copy of the decision recipe. In one embodiment, a user may select or enable a privacy profile that may allow or deny the copying of private decision components and/or private decision recipes by particular other users and/or groups of users. Accordingly, based (at least in part) on a privacy profile and/or any suitable privacy mechanisms, decision components designated as private may be excluded from a copy of a decision recipe made by another user.

Illustrative Computer System

In at least some embodiments, a computer system that implements a portion or all of one or more of the technologies described herein may include a general-purpose computer system that includes or is configured to access one or more computer-readable media.FIG. 18illustrates such a general-purpose computing device5000. In the illustrated embodiment, computing device5000includes one or more processors5010(e.g., processors5010A and5010B through5010N) coupled to a system memory5020via an input/output (I/O) interface5030. Computing device5000further includes a network interface5040coupled to I/O interface5030.

In various embodiments, computing device5000may be a uniprocessor system including one processor5010or a multiprocessor system including several processors5010(e.g., two, four, eight, or another suitable number). Processors5010may include any suitable processors capable of executing instructions. For example, in various embodiments, processors5010may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs), such as the x86, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA. In multiprocessor systems, each of processors5010may commonly, but not necessarily, implement the same ISA.

System memory5020may be configured to store program instructions and data accessible by processor(s)5010. In various embodiments, system memory5020may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory. In the illustrated embodiment, program instructions and data implementing one or more desired functions, such as those methods, techniques, and data described above, are shown stored within system memory5020as code (i.e., program instructions)5025and data5026.

In one embodiment, I/O interface5030may be configured to coordinate I/O traffic between processor5010, system memory5020, and any peripheral devices in the device, including network interface5040or other peripheral interfaces. In some embodiments, I/O interface5030may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory5020) into a format suitable for use by another component (e.g., processor5010). In some embodiments, I/O interface5030may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface5030may be split into two or more separate components, such as a north bridge and a south bridge, for example. Also, in some embodiments some or all of the functionality of I/O interface5030, such as an interface to system memory5020, may be incorporated directly into processor5010.

Network interface5040may be configured to allow data to be exchanged between computing device5000and other devices5060attached to a network or networks5050, such as other computer systems or devices as illustrated inFIG. 1, for example. In various embodiments, network interface5040may support communication via any suitable wired or wireless general data networks, such as types of Ethernet network, for example. Additionally, network interface5040may support communication via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks, via storage area networks such as Fibre Channel SANs, or via any other suitable type of network and/or protocol.

Various embodiments may further include receiving, sending, or storing instructions and/or data implemented in accordance with the foregoing description upon a computer-readable medium. Generally speaking, a computer-readable medium may include storage media or memory media such as magnetic or optical media, e.g., disk or DVD/CD-ROM, volatile or non-volatile media such as RAM (e.g. SDRAM, DDR, RDRAM, SRAM, etc.), ROM, etc. In some embodiments, a computer-readable medium may also include transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as network and/or a wireless link.

The various methods as illustrated in the Figures and described herein represent exemplary embodiments of methods. The methods may be implemented in software, hardware, or a combination thereof. In various of the methods, the order of the steps may be changed, and various elements may be added, reordered, combined, omitted, modified, etc. Various of the steps may be performed automatically (e.g., without being directly prompted by user input) and/or programmatically (e.g., according to program instructions).