Patent Publication Number: US-8527366-B2

Title: Configuring a product or service via social interactions

Description:
BACKGROUND 
     Electronic commerce, commonly known as e-commerce or eCommerce, refers to the buying and selling of products or services over electronic systems such as the Internet and other computer networks. One form of electronic commerce is online shopping, whereby a user accesses a virtual store whereat the user may browse through electronic catalogs, scan pages bearing product illustrations and accompanying descriptions, and select articles to purchase. Subsequently, when the user clicks on a “buy” or another button reflecting an intention to purchase the selected articles, then the user is prompted to input personal information to complete the order, where the personal information may include a name, a delivery address, a desired payment method, etc. 
     SUMMARY 
     Embodiments of the invention provide a computer-implemented method, computer program product and system for performing an operation that includes receiving a selection, by a primary user, of an item that the primary user desires to be configured prior to at least one of: (i) the primary user specifying to purchase the configured item and (ii) the primary user specifying the configured item as being available for at least one other user to purchase. The operation also includes receiving an indication of one or more configurable parameters of the selected item. The operation also includes receiving a selection, by the primary user, of at least one secondary user from a personal network of the primary user, to participate in configuring the selected item. The operation also includes requesting the at least one secondary user to provide input pertaining to the one or more configurable parameters of the selected item. The operation also includes determining one or more configurations for the selected item, based on the input provided by the at least one secondary user responsive to the request. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       So that the manner in which the above recited aspects are attained and can be understood in detail, a more particular description of embodiments of the invention, briefly summarized above, may be had by reference to the appended drawings. 
       It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments. 
         FIG. 1  is a block diagram illustrating a system for configuring a product or service via social interactions, according to one embodiment of the invention. 
         FIG. 2  is a block diagram illustrating components of a web application for configuring a product or service, according to one embodiment of the invention. 
         FIG. 3  is a flowchart depicting a method for configuring a product or service via social interactions, according to one embodiment of the invention. 
         FIG. 4  is a flowchart depicting a method for determining one or more configurations for a product or service, according to one embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the invention provide techniques for configuring an item via social interactions, where an item may be a product or a service. One embodiment of the invention includes a virtual store that may be accessed by a user via a Uniform Resource Identifier (URI) associated with the virtual store. For example, the user may input the URI into a client application such as a web browser. One embodiment of the invention may also include a web application configured to serve web pages of the virtual store to the web browser, responsive to requests from the web browser. The web pages may be rendered by the web browser to produce one or more graphical user interface (GUI) screens of the virtual store, for display to the user. In one embodiment, the user of the virtual store selects a product or service that the user desires to configure. The product or service may include one or more configurable parameters. For example, if the product is a new car of a specified make and model, the configurable parameters may include exterior color, interior color, interior type, body style, engine, alloy wheels, sunroof, stereo upgrades, entertainment options, safety features, a built-in navigational device, etc. Further, depending on the embodiment, the user may either desire to purchase or to sell the product or service. For example, the user may either be a prospective customer who desires to purchase the new car or a business owner who desires to introduce the new car into the marketplace. Of course, although embodiments are described herein with reference to the use case of configuring a new car, the use case is merely exemplary and is not intended to be limiting of the invention. The techniques disclosed herein may be used to configure any product or service, such as a house, a computer, a premium television package, an Internet service plan, a cellular phone plan, a travel itinerary, a tour package, a movie showing, apparel, etc. 
     In some cases, the user may desire other users to participate in configuring one or more parameters of the product or service selected by the user. The other users may include anyone associated with the user, such as family members, friends, coworkers, experts, etc. For instance—continuing the previous example of configuring the new car of the specified make and model—the user may desire the exterior color and interior color to be configured by a spouse of the user, because it may be important to the user that the car is aesthetically appealing to the spouse. The user may also desire the engine to be configured by a friend of the user, because the friend is much more knowledgeable about engines than the user is. Of course, the user may also configure one or more other parameters of the car, such as the body style and entertainment options. Accordingly, in one embodiment, the user of the virtual store selects the spouse and the friend to participate in configuring the new car. The user may also specify one or more parameters each participant is allowed to configure. The spouse and the friend may be identified in various ways, such as via respective email addresses or weblog URIs provided by the user. 
     In another embodiment, if the spouse and the friend are included in a personal network of the user on a social networking application, the virtual store accesses the social networking application (e.g., using security credentials provided by the user) and displays a list of all members of the personal network, from which the user may conveniently select the spouse and the friend from the list. In one embodiment, the social network application refers to any application with which a user may perform online social networking over a computer network such as the Internet. The personal network may include a representation of each user (e.g., in the form of a profile for the respective user), a representation of social relations of each user, and a variety of additional services. The additional services may allow each user to share ideas, interests, activities, and events within the social network of the respective user. The social networking application can be a web-based application that allows users to create and publish shared content on personal web pages. Shared content may include digital media that is accessible by visitors to the personal web page. The digital media may include text, hyperlinks, images, video, audio, etc. The user who owns the shared content may also determine which other users may access the shared content. 
     In one embodiment, after the user selects the desired participants for configuring the product or service, the virtual store requests the selected participants to provide input pertaining to the parameters of the product or service. Depending on the embodiment, the input may be provided via email, via the virtual store, via the social networking application, etc. Once the input is received, the virtual store determines one or more configurations for the product or service, based on the input. The virtual store then outputs the one or more configurations to the user for selection and/or approval. Advantageously, using the virtual store, the user may more conveniently configure a product or service based on social interactions and/or the social network of the user at least in some cases. The product or service may be configured using input from desired participants from the social network of the user. Consequently, the product or service may be configured more conveniently at least in some cases. For example, the product or service may be configured more conveniently than having to manually contact, solicit, record, and/or submit input from each desired participant. Further, configuring the product or service on behalf of the user via the virtual store may be convenient and/or rewarding to a selected participant at least in some cases. Accordingly, customer satisfaction of the virtual store may be improved, and sales at the virtual store may be increased. 
     In the following, reference is made to embodiments of the invention. However, it should be understood that the invention is not limited to specific described embodiments. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice the invention. Furthermore, although embodiments of the invention may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the invention. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the invention” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s). 
     As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
     Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus or device. 
     A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
     Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
     Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java™, Smalltalk™, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
     Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     Embodiments of the invention may be provided to end users through a cloud computing infrastructure. Cloud computing generally refers to the provision of scalable computing resources as a service over a network. More formally, cloud computing may be defined as a computing capability that provides an abstraction between the computing resource and its underlying technical architecture (e.g., servers, storage, networks), enabling convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction. Thus, cloud computing allows a user to access virtual computing resources (e.g., storage, data, applications, and even complete virtualized computing systems) in “the cloud,” without regard for the underlying physical systems (or locations of those systems) used to provide the computing resources. 
     Typically, cloud computing resources are provided to a user on a pay-per-use basis, where users are charged only for the computing resources actually used (e.g., an amount of storage space consumed by a user or a number of virtualized systems instantiated by the user). A user can access any of the resources that reside in the cloud at any time, and from anywhere across the Internet. In context of the present invention, a user may access a virtual store that is provided by a web application executing in the cloud. For example, the cloud may provide virtualized computing resources for executing the web application. Having the web application execute in the cloud allows the user to manage execution of the web application from any computing system attached to a network connected to the cloud (e.g., the Internet). 
     Depending on the embodiment, the web application may execute in an application server configured to provide services to web applications for security, state maintenance, data access and persistence, via one or more application programming interfaces (APIs). In one embodiment, the application server conforms to the Java Platform, Enterprise Edition (Java EE). As is known, Java EE is a widely used platform for server programming in the Java™ programming language. The Java EE-compliant application server may include one or more containers, such as a Servlet container and an Enterprise JavaBeans (EJB) container, and may provide services such as Java Naming and Directory Interface (JNDI), Java Message Service (JMS), and connection pooling. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
       FIG. 1  is a block diagram illustrating a system  100  for configuring a product or service via social interactions, according to one embodiment of the invention. The networked system  100  includes a computer  102 . The computer  102  may also be connected to other computers via the network  130 . In general, the network  130  may be a telecommunications network and/or a wide area network (WAN). In a particular embodiment, the network  130  is the Internet. 
     The computer  102  generally includes a processor  104  connected via a bus  112  to a memory  106 , a network interface device  110 , a storage  108 , an input device  114 , and an output device  116 . The computer  102  is generally under the control of an operating system. Examples of operating systems include UNIX, versions of the Microsoft Windows® operating system, and distributions of the Linux® operating system. More generally, any operating system supporting the functions disclosed herein may be used. The processor  104  is included to be representative of a single CPU, multiple CPUs, a single CPU having multiple processing cores, and the like. Similarly, the memory  106  may be a random access memory. While the memory  106  is shown as a single identity, it should be understood that the memory  106  may comprise a plurality of modules, and that the memory  106  may exist at multiple levels, from high speed registers and caches to lower speed but larger DRAM chips. The network interface device  110  may be any type of network communications device allowing the computer  102  to communicate with other computers via the network  130 . 
     The storage  108  may be a persistent storage device. Although the storage  108  is shown as a single unit, the storage  108  may be a combination of fixed and/or removable storage devices, such as fixed disc drives, floppy disc drives, solid state drives, tape drives, removable memory cards or optical storage. The memory  106  and the storage  108  may be part of one virtual address space spanning multiple primary and secondary storage devices. 
     The input device  114  may be any device for providing input to the computer  102 . For example, a keyboard, keypad, light pen, touch-screen, track-ball, or speech recognition unit, audio/video player, and the like may be used. The output device  116  may be any device for providing output to a user of the computer  102 . For example, the output device  116  may be any conventional display screen or set of speakers, along with their respective interface cards, i.e., video cards and sound cards (not shown). Although shown separately from the input device  114 , the output device  116  and input device  114  may be combined. For example, a display screen with an integrated touch-screen, a display with an integrated keyboard, or a speech recognition unit combined with a text speech converter may be used. 
     As shown, the memory  106  of the computer  102  includes a web application  150  and a social networking application  162 . Although embodiments are described herein with reference to the social networking application  162  and the web application  150  executing on the computer  102 , in other embodiments, the social networking application  162  may execute on a different computer that is connected to the computer  102  via the network  130 . As described above, in one embodiment, the web application  150  generates web pages of a virtual store, responsive to requests from a user of the virtual store. For example, the requests may be sent to the web application  150  via web browser of the user. The web pages may be rendered by the web browser to produce GUI screens of the virtual store. 
     In one embodiment, from the virtual store, the user may select a product or service that the user desires to configure. Next, the user may select one or more other users to participate in configuring the selected product or service. For convenience, the user making the selection may also be referred to herein as a primary user, and the one or more other users being selected may also be referred to herein as secondary users. The one or more secondary users may be selected from a personal network retrieved from the social networking application  162 , in which case each secondary user is identified by a unique identifier provided by the social networking application  162 . Alternatively, the primary user may select the one or more secondary users by specifying a corresponding email address or URI of each secondary user, where the URI identifies a website of the respective secondary user. Still alternatively, the one or more secondary users may be selected from a contact list retrieved from personal information manager (PIM) used by the primary user. The PIM refers to an application that serves as a personal organizer that facilitates recording, tracking, and/or management of personal information such as address books, reminders, notes, and lists. Depending on the embodiment, some or all of the functionality of the PIM may be integrated into a different application such as a mail user agent (MUA). The MUA refers to an application configured to manage email for the user. 
     In one embodiment, aside from selecting one or more secondary users to participate in configuring the selected product or service, the primary user may also specify which parameter(s) may be modified by each secondary user. As described above with reference to the example of configuring a new car, the primary user may desire the interior color and exterior color of the new car to be configured by the spouse. The primary user may also desire the engine to be configured by the friend. Accordingly, in one embodiment, the web application  150  may receive input from the primary user, where the input specifies that the spouse is only allowed to configure the interior color and exterior color and that the friend is only allowed to configure the engine. In an alternative embodiment, the web application  150  allows all secondary users to configure all parameters of the selected product or service by default, and the input specifies, for each secondary user, what parameters the respective secondary user is not allowed to configure. 
     Depending on the embodiment, the primary user may also specify and/or modify the default behavior for the web application  150 —e.g., whether to allow all secondary users to configure all parameters or to allow no user to configure any parameter. Further, in some embodiments, the primary user may also specify to allow multiple secondary users to configure the same parameter of the selected product or service. Accordingly, the primary user may solicit input from multiple friends on a given parameter and/or select a parameter value most frequently selected by the friends, etc. For example, the primary user may designate multiple family members as being allowed to configure the interior color and exterior color of the car. The primary user may then select an interior color and/or exterior color that received the most votes from the family members. 
     Further, in one embodiment, the primary user may select a role for each secondary user. Each role may be selected from a plurality of roles defined by the primary user or by an administrative user. Each role may include an associated weight that is specified by the primary user or by the administrative user. The weight associated with the role may reflect a level of deference accorded by the primary user to the role and any secondary user having the role. In one embodiment, when tallying votes from multiple family members for a given parameter, the web application  150  may also take into account the weight of the role of each respective family member. For example, suppose that plurality of roles include a first role of “regular participant” having a weight of “1.0” and a second role of “expert participant” having a weight of “2.0”. In tallying votes for a given parameter, the web application  150  may count a vote from a regular participant as one vote for the parameter—and count a vote from an expert participant as two votes for the given parameter. In other words, in this particular example, the web application  150  may multiply each vote of a secondary user by the weight of the role of the respective secondary user. Advantageously, where the primary user may more conveniently solicit input from multiple secondary users for a given parameter, while differentiating the secondary users into multiple roles. 
     In one embodiment, each secondary user is prompted to configure one or more parameters of the product or service, as specified by the primary user. Configuring a parameter includes specifying one or more values for the parameter. Depending on the embodiment, each secondary user may be prompted by the web application  150 , the social networking application  162 , or a module of the web application  150 . The module may execute in a runtime environment provided by the social networking application  162  and/or using APIs exposed by the social networking application  162 . Depending on the embodiment, the module may be a widget or plugin for the social networking application  162 , or the module may itself be a standalone application. 
     In one embodiment, each secondary user may configure one or more parameters of the product or service via a respective user account associated with the web application  150 . Secondary users who have not registered for a user account associated with the web application  150  may be required to do so to configure the one or more parameters. Additionally or alternatively, each secondary user may configure the one or more parameters via the social networking application  162  or via a module of the web application  150  that is accessible from the social networking application  162 , in which case the secondary users are not necessarily required to have registered for a user account associated with the web application  150 . In some embodiments, in order to configure the one or more parameters, each secondary user is prompted to input login information associated with the web application  150  or with social networking application  162 , where the login information includes at least one of a user login and a user password. 
     In one embodiment, the primary user may also configure a mechanism by which each secondary user configures one or more parameters of the product or service. The mechanism may specify a type of input control such as radio boxes, input fields, text areas, dropdown menus, checkboxes, etc. In one embodiment, the web application  150  may present the primary user with multiple types of input controls, from which the primary user may select desired types of input controls to be used by a specified secondary user in configuring a specified parameter of the product or service. Continuing the previous example of configuring a new car, the primary user may specify for the spouse to configure the exterior color of the new car by selecting a color from a palette of predefined colors. The primary user may also specify for the spouse to configure the interior color of the new car by typing in a name of a desired color into a text input field. 
     In one embodiment, after each parameter is configured with one or more values by a secondary user, the web application  150  determines one or more configurations for the product or service. The web application  150  may generate a set of configurations that conform to the input provided by the secondary users. Depending on the embodiment, each configuration may exclude parameters reserved for configuration by the primary user—i.e., parameters that the primary user did not previously indicate for any secondary user to configure. The web application  150  may then evaluate the set of configurations against one or more rules specifying combinations of parameter values that are valid or invalid. For example, some combinations of exterior color and interior color may not be available from the manufacturer of the new car. Accordingly, the web application  150  may identify and remove any invalid configurations from the set. The web application  150  may then store the configurations remaining in the set and/or output the configurations for display to the primary user and/or one or more secondary users. 
     In one embodiment, once the set of configurations is generated, the primary user may perform additional operations on the set of configurations. The additional operations may include reviewing the configurations, selecting a desired configuration for placing a purchase order for the product or service and/or placing the purchase order, modifying the configurations, augmenting the configurations with additional parameters, requesting the secondary users to further configure one or more parameters, requesting users other than the secondary users to configure one or more parameters, etc. Further, all operations performed by the web application  150  in regards to configuring and/or placing a single order for a desired product and/or service may be regarded as a single session and/or transaction of the primary user at the virtual store. In other words, one or more of the operations of the web application  150  may be regarded as occurring within the context of the session and/or transaction of the primary user at the virtual store. The operations may include receiving, from a web browser of the primary user, a series of requests for web pages of the virtual store and sending, to the web browser, a series of responses in the form of the web pages of the virtual store. The operations may further include prompting each secondary user to configure a parameter of the desired product and/or service and receiving input from the respective secondary user for configuring the parameter of the desired product and/or service. The operations may further include determining one or more configurations based on the received input, receiving a selection by the primary user of a desired configuration, and placing the order for the product or service having the desired configuration. Advantageously, at least in some cases, the primary user may more conveniently have a product or service configured at least in part based on input from specified secondary users. 
     As used herein, configuring a product or service by selected secondary users does not include creating and/or editing documents by multiple users via any collaborative application. As used herein, a collaborative application refers to any application that allows multiple users to collaboratively create and/or edit documents and that does not perform one or more of the operations of the web application  150  as disclosed herein. Examples of the operations of the web application  150  include permitting a primary user to specify which other users may modify which parameters of a selected product or service and determining one or more configurations for the selected product or service using input received from the one or more secondary users in regards to the parameters. Examples of collaborative applications include content management systems (CMS), document management systems (DMS), groupware, revision control systems, and wikis. The documents include word processing documents, spreadsheets, source code files, media files such as image files, audio files, and video files, etc. A CMS refers to an application configured to allow multiple users to contribute to and share stored data. A DMS refers to an application configured to track and store electronic documents and/or images of paper documents. Groupware refers an application configured to facilitate collaborative activity between multiple users and the coordination thereof. A revision control system refers to an application configured to manage changes to documents, programs, and other information stored as computer files. A wiki refers to a website that allows the creation and editing of any number of interlinked web pages via a web browser using a predefined markup language or a what-you-see-is-what-you-get (WYSIWYG) text editor. 
       FIG. 2  is a block diagram  200  illustrating components of the web application  150  of  FIG. 1 , according to one embodiment of the invention. As shown, the components of the web application  150  include a participant module  206  and a generator module  208 . In one embodiment, the participant module  206  is configured to allow the primary user to manage which secondary users may participate in configuring a product or service and what parameters of the product or service each secondary user may specify or modify. The participant module  206  may also be configured to collect input from the secondary users, in regards to the parameters of the product or service. The generator module  208  is configured to provide one or more configurations of the product or service, based on the input collected by the participant module  206 . The generator module  208  may also be configured to output the one or more configurations to the primary user and/or the secondary users. 
     As shown, the participant module  206  includes an activity filter  216 , an activity mapper  218 , application adapters  220 , and an input validator  222 . In one embodiment, the activity filter  216  receives data specifying a set of configurable parameters  154 . The activity filter  216  may also specify, based on input from the primary user and/or an administrative user, which activities, input controls, and/or parameter values are acceptable for configuring each parameter  154 . The activities include specifying a parameter via the web application  150  or the social networking application  162 , posting a comment on a website such as a weblog or an online forum, sending an email, etc. The input controls include radio boxes, input fields, text areas, dropdown menus, checkboxes, etc. Depending on the embodiment, some or all of the functionality of the activity filter  216  may be performed by a parameter manager  204 , which is configured to designate a configuration to be applied, based on input from the primary user. The activity mapper  218  is configured to associate parameters and/or activities with a specified social networking application. The parameter manager  204  may also be configured to provide one or more configurable parameters to the specified social networking application. 
     In one embodiment, each application adapter  220  is specific to a social networking application and provides connectivity to the social networking application based on protocols and/or APIs supported by the social networking application. Depending on the embodiment, some or all of the functionality of providing connectivity to the social networking application may be performed by a connector module  210 . Each application adapter  220  may also receive input from secondary users via the social networking application  162 . The input validator  222  determines whether the input received from the secondary users is valid for a specified parameter. In making the determination, the input validator  222  may evaluate one or more rules specifying what values are valid for a given parameter, where each rule is defined by an administrative user. Additionally or alternatively, the input validator  222  may also determine whether combinations of parameters received from one or more secondary users is valid, based on the one or more rules. For instance, continuing the previous example of configuring a new car, some combinations of exterior color and interior color may not necessarily be available from the manufacturer of the new car. 
     As shown, the generator module  208  includes a configuration builder  224 , a configuration handler  226 , and a configuration viewer  228 . In one embodiment, the configuration builder  224  generates a data structure representing a set of configurations that conform to the input received from the secondary users. In some embodiments, the data structure may be a tree and may include all configurations that conform to the received input. The data structure may be generated based on the received input and the configurable parameters  154 . The configuration handler  226  is configured to traverse the data structure using one or more predefined techniques such as depth-first search and breadth-first search, and/or provide one or more configurations in the generated data structure to the parameter manager  204 . 
     As described above, the parameter manager  204  may designate a configuration to be applied, based on input from the primary user. For example, the primary user may select a configuration from the set configurations and place an order for purchasing a product or service having the selected configuration. In one embodiment, the parameter manager  204  may also store information indicating which configurations more frequently result from configuration by secondary users. The information may subsequently be provided to the participant module  206  to indicate to the primary user and/or the secondary users which parameters or combinations thereof are frequently selected by other users. The configuration viewer  228  generates one or more views of the set of configurations for output to the end users  214 , which may include the primary user, the secondary users, and/or other users of the web application  150 . The views may textually represent the configurations and/or graphically depict a product having the configurations (thereby providing a preview of the product). Accordingly, the primary user may browse the set of configurations and/or select a configuration to be applied to the product or service. 
     As described above, in one embodiment, a primary user and/or one or more secondary users may configure a product or service using the web application  150 . To this end, the web application  150  may perform a sequence of operations, which are described as follows. The parameter manager  204  may retrieve the configurable parameters  154  for the product or service and provide the configurable parameters  154  to the activity filter  216  of the web application  150 . Next, the activity filter  216  may associate activities, input controls, and/or parameter values to each configurable parameter  154 . The activity mapper  218  may then associate the configurable parameters  154  with a specified social networking application. Next, the application adapter  220  connects to the specified social networking application. The application adapter  220  may also prompt each secondary user for input for each configurable parameter  154 . The application adapter  220  may also receive input from the secondary users and provide the input to the input validator  222 . The input validator  222  may then determine whether the values for the configurable parameters  154  are valid. The input validator  222  may also determine whether combinations of the values are valid. Next, the configuration builder  224  generates the data structure representing a set of configurations that conform to the validated input. The configuration viewer  228  may then generate one or more views representing for each configuration in the set and/or for a respective product or service having the respective configuration in the set, for output to the primary user or the secondary users. Additionally or alternatively, the configuration handler  226  may provide the set of configurations to the parameter manager  204 , such that a desired configuration of the set of configurations can be designated by the primary user. 
     As described above, although embodiments are described herein with reference to the use case of configuring a new car, those skilled in the art will recognize that any product or service may be configured using the techniques disclosed herein. For example, in one embodiment, a primary user may desire to organize an event to attend a movie showing at a theater with friends, which the primary user may designate as secondary users for configuring parameters of the movie showing. The parameters of the movie showing may include a movie title, a theater location, a showing date, a showing time, etc. In this embodiment, the web application  150  may additionally receive calendar information of the primary user and/or of the secondary users. The calendar information may be received from any calendaring application or any other application that includes a calendaring module. Further, in this embodiment, the one or more rules may specify which combinations of movie title, showing time, and showing date are valid for a given theater location. The input validator  222  may evaluate each parameter value and/or configuration based on the one or more rules. Based on the evaluation, the input validator  222  may mark a parameter value and/or configuration as invalid. 
     As another example, in one embodiment, the primary user may desire to purchase a new computer, which may be a laptop or desktop computer. Further, the primary user may desire to seek assistance of one or more secondary users in configuring the parameters of the new computer. The parameters of the new computer may include processor manufacturer, processor model, processor speed, memory manufacturer, memory capacity, hard disk manufacturer, hard disk type, hard disk storage capacity, hard disk speed in revolutions per minute (rpm), graphics card manufacturer, graphics card model, graphics memory capacity, motherboard manufacturer, motherboard model, support for RAID (Redundant Array of Independent Disks), support for gigabit Ethernet, etc. Assume that a first friend of the user is knowledgeable about hard disks and that a second friend of the user is knowledgeable about graphics cards. The primary user may designate the first friend to configure parameters such as hard disk manufacturer, hard disk type, and hard disk storage capacity. The primary user may also designate the second friend to configure parameters such as graphics card manufacturer, graphics card model, and graphics memory capacity. The primary user may configure other parameters himself/herself. 
     As a further example, in one embodiment, the primary user may be a business owner, product designer, product manufacturer, or service provider who desires to introduce a new product or a new variation of an existing product into the marketplace. Accordingly, the primary user may want to discover what kind of new product or new variation may be desirable to existing customers and/or prospective customers. In one embodiment, the primary user designates a group of existing customers and/or survey participants as secondary users. The secondary users are allowed to configure the parameters of the new product or new variation. In this particular example, the web application  150  determines one or more desirable configurations of the new product or new variation, based on input received from the secondary users. Advantageously, using the web application  150 , the primary user may more conveniently have a product or service configured using input from other desired participants—regardless of whether the primary user desires to purchase the product or service or introduce the product or service into the market. Accordingly, the primary user may more conveniently determine configurations of a product or service to be provided/sold to other users. In this regard, the primary user may more conveniently perform marketing research for the product or service, using the web application  150 . 
       FIG. 3  is a flowchart depicting a method  300  for configuring a product or service via social interactions, according to one embodiment of the invention. That the methods are described herein with reference to configuring a product is merely exemplary and is not intended to be limiting of the invention. Other embodiments, such as configuring a service via social interactions, are broadly contemplated. As shown, the method  300  begins at step  310 , where the web application  150  receives a selection, by a primary user, of a product that the primary user desires to be configured. At step  320 , the web application  150  receives an indication of one or more configurable parameters of the selected product. At step  330 , the web application  150  receives a selection, by the primary user, of at least one secondary user from a personal network of the primary user, to participate in configuring the selected product. At step  340 , the web application  150  requests the at least one secondary user to provide input pertaining to the one or more configurable parameters of the selected product. At step  350 , the web application  150  determines one or more configurations for the selected product based on the input provided by the at least one secondary user responsive to the request. The method  350  is further described below in conjunction with  FIG. 4 . After the step  350 , the method  300  terminates. 
       FIG. 4  is a flowchart depicting a method  400  for determining one or more configurations for a product or service, according to one embodiment of the invention. The method  400  corresponds to the step  350  of  FIG. 3 . As shown, the method  400  begins at step  410 , where the web application  150  receives one or more rules specifying valid configurations of the product. At step  420 , the web application  150  enters a loop to process each configuration of the product that results from the input provided by the at least one secondary user responsive to the request. At step  430 , the web application  150  determines whether the respective configuration is valid according to the one or more rules. If so, the web application  150  designates the respective configuration as being a candidate for selection by the primary user (step  440 ). At step  450 , the web application  150  determines whether more configurations of the product remain. If so, the method  400  returns to the step  420  to process a next configuration of the product. Otherwise, the method  400  terminates. 
     Advantageously, embodiments of the invention provide techniques for configuring a product or service based on social interactions. One embodiment of the invention provides a web application for configuring a product or service. The web application may receive, from a primary user, an indication of a desired product or service to be configured. The web application may also receive an indication of configurable parameters of the desired product or service. The web application may also receive a selection of one or more secondary users to participate in configuring the desired product or service. The web application may determine one or more configurations for the desired product or service, based on input received from the one or more secondary users. Advantageously, at least in some cases, the primary user may more conveniently have a desired product or service configured using input from other desired participants. 
     While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.