When selecting a product or service to buy, a shopper may consider factors such as his/her social (e.g., environmental), health, financial, and/or other objectives. The shopper translates these objectives into product attributes that reflect the extent to which particular products are aligned with the shopper's objectives. Typically, when given a choice a shopper will choose a product, for example a specific brand, size, type of container, etc., that meets at least to some minimum degree the objectives the shopper desire to achieve through the purchase. The shopper may have to make tradeoffs between different attributes. To an average shopper, this product selection process is often difficult and time consuming, especially when the number of products to choose from is large and different products have different sets of product attributes, product information is scattered and it is not always obvious to the shopper which product attribute(s) will influence the user's objectives without requiring close examination.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
Techniques for recommending products to users are disclosed. In some embodiments, user-associated product values reflecting the value of that product to that particular user are determined for each of a subset of a set of a plurality of products. In some embodiments, the product values are determined based on one or more user-associated or user-specific individual product attribute values reflecting the value to that particular user of each such product attribute in the context of that product. The user-specific product attribute values may be specified and adjusted by the user via a user interface. In some embodiments a list comprising one or more products selected from the products in a product category is generated and displayed or otherwise communicated to a user.
In some embodiments, the set of a plurality of products belong to or are selected from a product category or subcategory, or a group of substitutable products. In some embodiments, selecting the product includes selecting a product having the highest user-specific product values from the set of products. In some embodiments, selecting the product includes selecting a plurality of products having the highest user-specific product values from the set of products. In some embodiments, selecting the product includes displaying or otherwise communicating the selected products to a user. In some embodiments, the user-specific product value is based at least in part on a plurality of user-specific product attribute values associated with a plurality of product attributes. In some embodiments, the user-specific product value is normalized. In some embodiments, the user-specific product value is measured as a difference between a determined user-specific product value and a baseline value. In some embodiments, the user-specific product value is normalized for example against the product size, quantity, or purchase price by dividing a determined user-specific product value by the product size, quantity or purchase price. In some embodiments, the user-specific product value is measured as a difference between a determined user-specific product value and a baseline value and the difference is normalized for example against the product size, quantity, purchase price by dividing the difference by the product size, quantity or purchase price. The normalized value is sometimes termed as product score. In some embodiments, a product score is determined for each of at least a subset of the set of products based on the user-specific product value determined for the product, and the product is selected based on the product scores determined. In one example, one or more products with the highest product scores are selected. In some embodiments, the product score of a product is equivalent to a normalized net value of product and it is determined based on the user's purchase price, which may be specific to the user based on where and when the user purchases the product and the type of deal the user may be getting (e.g., personalized offer). In some embodiments, the net normalized value of a product is calculated based on the user's purchase price and the determined product value determined based on user-specific product attribute values.
In some embodiments, each of at least a subset of a set of products is defined as a set of product attributes. A user-specific monetary value is calculated for each of the subset of the set of products based on how the user values each of the set of product attributes associated with the product. A normalized net value is calculated based on the user's purchase price for the product and the determined product value for each of the subset of the set of products. The user's purchase price may be specific to the user. A product with the highest normalized value is selected for recommendation to the user.
The user interface 104 may be a graphical user interface. In some embodiments, it is configured as a web-page, an email or other suitable form and may be executed to be displayed on one or more user devices 106 (represented by a single user device). The user devices 106 may be any suitable computing devices that enables user input into and output from the system, such as a personal computers, laptops, palmtops, notebooks, wired/wireless phones, television, and various other devices and appliances. The user devices 106 are configured to be in communications with the server 102 via various communications links 108, such as wired, wireless, interne, intranet, and/or intranet links.
The server 102 may be a centralized system having all components centralized in one geographical location or distributed computing system having various components distributed in geographically diverse locations. The server 102 may include one or more communication interfaces 110 for communicating with external computing environments, one or more processors 112 for running various processes for processing user inputs and generating user outputs including generating product recommendations for displaying to the users. The server 102 may also include one or more data storages 114 for storing various data files, for example user profiles 116 such as user login information, user preferences and user histories, product profiles 118 such as product attributes, prices, descriptions, names and locations of the retail stores, various rules, policies, and/or algorithms of the system 120. The server 102 may also be configured obtain product information from various sources and via various means. For example, the server 102 may be configured to crawl the web and gather product information from manufacturer, retailer, and/or advertiser websites, the server 102 may be coupled a user interface for receiving product information from for example users, manufacturers, retailers and/or advertisers. The operation details of the system 100 are discussed below.
At 202, a user-specific product value is determined for each of at least a subset of a set of products. In this example, the user-specific product value is based at least in part on a user-specific product attribute value associated with an attribute of the product. The user-specific product attribute value in some embodiments reflects the value of that attribute to that user in the context of that particular product. In some embodiments, the user-specific product attribute value is determined based on at least in part on a user specified preference level for that attribute. In some embodiments, the user-specific product attribute value is determined based on a user indication of preference for a product, such as a user selection of a product from a set of plurality of products. In some embodiments, the user-specific product value is determined in a way that constraints the average of product values determined for the products in the product category or subcategory based on the input from the sliding scale controller to 0% of a baseline product value (e.g., a national average product value for the product category or subcategory or an original baseline product value constructed from component product attribute values of component product attributes for the baseline product).
In some embodiments the set of products are products of a product category with respect to which the user is interested in receiving product recommendation. In some embodiments, the set of products are selected from or belong to a product category or subcategory with respect to which the user is interested in receiving product recommendation. In some embodiments, the set of products are selected from or belong to a group of substitutable products for a product the user has selected, or has purchased, or has put on his/her shopping list. In some embodiments, determining a user-specific product value of a product includes modifying a baseline product value associated with the product with the user-specific product attribute value. In some embodiments, the baseline product value is a national average price for the category or subcategory of products the set of products are selected from or belong to. In some embodiments, the set of products are products of a product category (e.g., selected from the product category), determining a user-specific product value of a product includes modifying a baseline product value of the product category associated with the product with the user-specific product attribute value. In some embodiments, the user-specific product attribute values comprises a plurality of user-specific product attribute values, each associated with one of a plurality of product attributes of the product. In such cases, determining a user-specific product value in some embodiments comprises modifying a baseline product value (e.g., for the set of products or a product category containing the product) with the plurality of product attribute values. The details of various embodiments of product value determination are illustrated in reference to another figure below.
In some embodiments the product value of a product comprises a utility value of the product to the user that measures a use value of the product to the particular user. In some embodiments, the product value is a utility value of the product to the user. In some embodiments, the product value is measured in units of a common value such as a common monetary value or a common goods value (e.g., as a percentage of the common value). Examples of common monetary values include U.S. dollar, Canadian dollar, Australian dollar, European dollar, British pound, deutsche mark, Japanese yen, and Chinese yuan. Examples of common goods values include value of a baseline product for a product category that has a set of baseline product attributes. In some embodiments, the value of the baseline product is constructed from the baseline product attribute values of the baseline product, by for example adding up the values of all the product attributes of the baseline product. The individual product attribute values may be determined using regression analysis from pricing data of products of a category or subcategory of products. In some embodiments the baseline product value is set to be an average price (e.g., a national average price, a regional average price) of a product category or subcategory the product belongs to.
In some embodiments the user-specific product attribute value comprises a utility value of the product attribute to the user that measures a use value of the product to the particular user. In some embodiments the user-specific product attribute value is a utility value of the product attribute to the user. In some embodiments, the user-specific product attribute value is measured in units of a common value such as a common monetary currency or a common goods value (e.g., baseline product value associated with a set of products). In some embodiments, the user-specific product attribute value and/or the associated product attribute are configured to be customizable to the user via for example user inputs. The user may customize the type of the product attribute and/or may customize the associated value of the product attribute. In some embodiments, it is configured that the user may choose to not customize the types of product attribute and/or associated value and choose instead to use a default setting of the product attribute and/or associated value. In some embodiments, the default setting having a default product attribute and/or the associated default product attribute value is automatically retrieved and used as the product attribute and/or the product attribute value for determining the product values. In some embodiments, the user may input a preference value for the product attribute (e.g., via an adjustable sliding scale controller displayed in a user interface) and the preference value is automatically converted to a user-specific product attribute value.
At 204, a product is selected from the set of products based on the determined user-specific product values. In some embodiments, selecting the product based on the determined user-specific product values includes determining (e.g., calculating) a product score for each of at least a subset of the set of products based on the determined user-specific product value of the product. The selection may be carried out automatically using a processor. In some embodiments, the determined product scores are calculated by normalizing the determined user-specific product values, such as with a retail price of the product. In some embodiments, selecting the product includes selecting a plurality of products from the set of products. The products are each selected based on an associated determined user-specific product value. In some embodiments, products are rank ordered based on the calculated product scores. For example, the product with the best score (e.g., highest score or lowest score) is selected. In some embodiments, a limited number of products such as top 100 products with the best user-specific values (e.g., best product scores) are selected. In some embodiments, only a single product with the best user-specific value (e.g., best product score) is selected. In some embodiments, each of at least a subset of the selected products is a unique shelf product sold by a specific store of chain of stores and has a specific retail price point. In some embodiments, each of at least a subset of the selected products identified by a product id (e.g., unique product name, product description and/or product UPC number), the retail store selling the product, the location of the retail store, and the retail price of the product. The retail price may be determined via user, manufacturer, retailer, and/or advertiser inputs, and/or via web crawling from manufacturer, retailer, and/or advertiser websites. In some instances, the determined retail prices may differ from the actual retail prices of the products. The quality and accuracy of the actual prices may be evaluated using one or more criteria, such as the source, when was the price information gathered (e.g., with in a predetermined period of time such as a week, and retail advertising cycle, etc.). In some embodiments, the selected products are communicated to the user and displayed on the user devices. For example, the selected products may be emailed, texted, faxed, twitted, uploaded onto a website (e.g., Facebook), downloaded to a user device or otherwise presented for viewing by the user. In some embodiments, the selected products are presented to the user together with the user's current product selection for the product category (e.g., in the form of a shopping list) associated with the selected products. In some embodiments, the reasons for the recommendation, such as product attributes contributed to the recommendation, is identified and communicated to the user.
In some embodiments, one or more products are automatically selected and presented to the user. The user picks one or more products from the set of a plurality of products. In some embodiments, the product picked by the user belongs to the one or more products selected and presented to the user. In some embodiments, the product picked by the user does not belong to the one or more products selected and presented to the user. In some embodiments, one or more user-specific product attribute preferences and/or values associated with one or more product attributes are readjusted automatically based on the product pick of the user. For example, if a user selects one or more organic products but the user has specified a low product attribute preference and/or value that reflects a low preference or dislike for organic products, the user-specific product value for the product attribute “organic” may be automatically adjusted to reflect a higher preference for organic product based on the fact that the user has selected the one or more organic products.
At 304, a baseline product value for the user selected product category is determined. In some embodiments the baseline product value is retrieved from data storage. Various algorithm and/or methods can be used to generate and store the baseline product value for each product category. The baseline product value for a product category represents a value (e.g., utility value) of a product having a baseline set of product attributes. In some embodiments, the baseline product value is measured or quoted in units of a common value such as units of a common monetary value. For example, for the product category of refried beans, the baseline product value is $1.00. This represents the utility value of refried beans having the baseline product attributes of “8 oz size”, “canned”, “non-organic” and “of medium quality”. In some embodiments, the baseline product value is set as a unit and is used to measure the values of other values of other products in the product category. That is other product values of the product category are measured in units of the baseline product value of the product category. For example, values of other products in the refried beans category will be measured in units of the baseline refried beans, such as a percentage of the value of the baseline refried beans.
At 306, user-specific types of product attributes and/or associated attribute values are received. In some embodiments, the user selects, from a list of available predefined types of product attributes, one or more types of product attributes that the user care the most about and that will make a significant difference to which product the user will select over other products in the product category or subcategory. The user then defines personalized or user-specific values for each of at least a subset of the one or more selected product attributes. In some embodiments the user can choose to use a default setting of types of product attributes and values but has the option of customizing the default setting to suit the user's personal preferences.
At 308, a user-specific product value specific to the user is determined for each of at least a subset of products of the product category, the user-specific product value is determined by modifying the baseline product value with the user selected and defined user-specific product attribute values, so that the contribution of the product attributes to the product value can be taken into consideration and calculated into an overall value of the product. In some embodiments, the user-specific product value of a product in a product category is calculated using the following equations:
Where V is the user-specific product value of the product; Vb is a baseline product value of a product category the product is in; and ma is the product attribute value for product attribute a and is expressed as (1+x %), where x is a percentage increase in value of the product having the attribute a with respect to products having no product attribute a.
At 310, a product score is determined based on the determined user-specific product value. In some embodiments, a product score n is calculated using the following equation:
Where n is the product score or normalized product value and is calculated by normalizing the product value against the retail price of the product. In this way, value per unit price of the product is calculated, indicating to the user whether the particular product as priced is a good deal.
In some embodiments a product score n is calculated using the following equation:
Where n is the product score or normalized product value and is calculated by normalizing the product value against the retail price of the product. In this way, value per unit price of the product is calculated, indicating to the user whether the particular product as priced is a good deal.
In one example, the product category being considered for product recommendation for a user is the refried beans, the baseline product value for the product category Vb is $1.00, three product attribute-value pairs are inputted by the user includes:
The product value V measured in dollar is calculated as follows:
V=$1.00×1.2×1.1×1.5=$1.98
If the retail price of the product is $1.00, a user-specific product score or is calculated by normalizing the value of the product to the price of the product is calculated as follows:
User-specific product values and scores are calculated for each of at least a subset of a set of products in the product category. A list of recommended products can be generated based on the product scores, wherein the products on the list are rank ordered according to the product score for presentation to the user. In some embodiments, only a certain number of products with the best scores (e.g., the lowest scores or the highest scores depending on how the products are scored) that represent the most desirable products to the user are placed on the list. In the example shown here, the products with the highest scores are preferably placed at the top of the list. In some embodiments, all products in the set of products, including products on the list and products not on the list, are displayed to the user, where the products on the list are displayed at the top and highlighted or otherwise emphasized as the selected products to the user.
At 502, a product category for product recommendation is associated with one or more types of product attributes based on the user input. In some embodiments, a list of available types of product attributes for the product category is presented to the user for selection. The user selects from the list one or more types of product attributes. The selected types of product attributes presumably are product attributes that the user cares the most about and will make a significant difference in the user's decision in selecting one product over another product in the product category. In some embodiments, the available product attributes may be generated based on at least in part on the product category interested by the user for product recommendation. In some embodiments the available product attributes may be generated based on user profile, past user product selection history, past user input regarding product attributes. In some embodiments, the available product attributes are organized into and presented to user according to categories each of which will affect one of high level objectives of the user. For example, the available product attributes may be organized into at least one or more of the following categories: product or product category/subcategory specific attributes, diet, health and nutrition related attributes, allergen related attributes, life style related attributes, environmental related attributes such as product carbon footprint score, social or society related attributes such as animal-friendly, free of child labor, and financial objectives. The selected product attributes are associated with the product category. At 504, a product attribute counter i is set to be 1. The product attribute counter indicates the current product attribute being processed. At 506, the process checks whether the product attribute counter is greater than the number of product attributes associated with the product category. If the answer is yes, the process ends, if the answer is no, the process proceeds to 508. At 508, a user's choice as to whether to define the current product attribute as an always-requirement, a never-requirement, or a preference level is received. In some embodiments, these choices are presented to the user via a graphical user interface. The user then selects one of the choices as an input into the system. For example, the user may select for the product attribute “organic” for the product category “refried beans” as an always-requirement, requiring all refried beans products recommended to the user to be organic. The user may select the product attribute “organic” as a never-requirement, requiring all products recommended not being organic. The user may select the product attribute “organic” as a preference level, indicating that the user prefers products that are organic, but that preference may be balanced out with other product attributes such as price and brand. At 510, the process determines if the user has elected to define the current product attribute as a preference level. If yes, the process proceeds to step 512, if no, the process proceeds to step 514. At 512, a user-specific preference level for the current product attribute is received, the user-specific preference level are specific to and/or customizable to the user. In some embodiments, the user specific product attribute preference level is received via a user adjustable sliding scale controller displayed in a graphical user interface. The user-specific preference level is adjustable by adjusting a pointer on the sliding scale controller. At 514, the product attribute counter i is set to i+1. The process returns to step 506 until the product attribute counter is greater than the number of product attributes associated with the product category.
In some embodiments, different positions on the sliding scale controller corresponds directly to different product attribute values for the product attribute associated with the controller. In some embodiments, different positions on the sliding scale controller correspond to different weights and/or preference levels user assign to the product attribute. The weights and/or preference levels can be automatically converted to product attribute values for product attribute associated with the controller. In some embodiments, different positions on the sliding scale controller correspond to different preference balance between two product attributes scale controller corresponds to different attributes, adjusting the controller in favor of one product attribute necessarily decrease the preference for the opposing product attribute. In one example, different positions on the sliding scale controller correspond to different balance between “organic” product attribute and “cheap price”. If the user increases the preference for “organic” product, it necessarily lowers the user's preference for “low price product”.
In some embodiments, an indicator that indicates a position on the adjustable sliding scale controller that corresponds to a product attribute value that an average shopper assigns to the product attribute associated with the sliding scale controller. In some embodiments, this position is a mid-point of the adjustable sliding scale controller. In some embodiments, the plurality of sliding scale controllers has the same scale range (e.g., all have a range of −100% to 100% of a baseline product value). In some embodiments, the plurality of sliding scale controllers have different scale ranges (e.g., one controller may have a range of −5000% to 5000% of a baseline product value) and the scale range may be determined based on or adapt to the type of product attribute. For example, a product attribute of made in gold may affect the value of a product dramatically (e.g., relative to a baseline product value), therefore the sliding scale controller associated with the product attribute of made in gold may have a larger scale range (e.g., −1000% to 1000%). A product attribute of spicy will not include the value of the product dramatically, so the sliding scale controller associated with the product attribute of spicy will have a smaller scale range (e.g., −1% to 1%).
In some embodiments, the sliding scale controller is color coded to indicate a range of product attribute value where products with the product attribute associated with the controller may be selected from the set of a plurality of products for recommendation to the user. In some embodiments, the sliding scale controller is color coded to indicate a range of product attribute preference value where products with the product attribute associated with the controller will always be selected from the set of a plurality of products for recommendation to the user. In some embodiments, the sliding scale controller is color coded to indicate a range of product attribute preference or value where products with the product attribute associated with the controller will never be selected from the set of a plurality of products for recommendation to the user.
At 604, a user-specific product attribute preference level is received. In some embodiments this is reflected by a position of the sliding scale controller pointer received. At 606, the user-specific weight and/or preference level for the product attribute is correlated with a value (e.g., utility value) of the product attribute specific to the user based on a predefined conversion scheme. In some embodiments, the value is measured in units of a common value, such as a common monetary value (e.g., dollar) or a common goods value (e.g., baseline product value).
A list 816 of products selected from products in the refried beans category is displayed. In the example shown, the list rank order products according product scores determined based on user-specific product values determined based at least in part on the user-specific product attribute preference levels specified using the sliding scale controller. In the example shown, each product on the list is identified by product name, size, retailer, and retail price at the retailer. Select/Deselect buttons 818 that toggle between “select” and “deselected” can be used for user to select or deselect products from the recommended list of products for a product category. In the example shown, detailed description of the product selected by user 820 is displayed in a separate pane. In the example shown, user can readjust product attribute preference levels and the readjustments of the product attribute preference levels results in automatically re-selection and re-ranking of the list 816 of products for recommendation.
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
Number | Name | Date | Kind |
---|---|---|---|
7672876 | Bonner et al. | Mar 2010 | B2 |
7734513 | Bonner et al. | Jun 2010 | B2 |
7739157 | Bonner et al. | Jun 2010 | B2 |
7742952 | Bonner et al. | Jun 2010 | B2 |
7783527 | Bonner et al. | Aug 2010 | B2 |
7792710 | Bonner et al. | Sep 2010 | B2 |
7848964 | Bonner et al. | Dec 2010 | B2 |
7917405 | Bonner et al. | Mar 2011 | B2 |
20040117290 | Shacham | Jun 2004 | A1 |
20060080274 | Mourad | Apr 2006 | A1 |
20070255696 | Desbarats | Nov 2007 | A1 |