NodeBundle Generator


The Bundle Generator node adds a new Bundled Product to both the 'Output Product Array' and the 'Output WTP Matrix'. The Willingness To Pay (WTP) each individual Customer has for the Bundle is a scaled-sum of the WTP the same Customer has for each of the selected Products within the Bundle.

Generating Product Bundles can help the user explore ways to increase the sales of an existing range of Products. The Bundle should increase the total Quantity sold without merely providing a discount to existing Customers as this Cannibalization may cause total Profitability to decrease.

How to scale individual Customer WTP values depends upon how much additional value the Bundle provides to Customers. In most cases, Customers will suffer from Diminishing Marginal Utility. That is, each additional Product added to the Bundle is less-and-less interesting to Customers. However, in some cases, Bundling together Products can increase the Marginal Value of each. For example, a Customer buying a Bundle of stereo equipment will be confident that each of the components will work together.

There are two ways the Bundle Generator node can scale WTP values:

  1. by applying a general 'Scale Scenario' rule to the simple sum of Product WTP values; and
  2. by applying Booster/Diminisher adjustment factors to individual Products within the Bundle depending upon their relative value to Customers, and other Attributes.

Applying a general 'Scale Scenario' rule is useful when the value of the Bundle will be some fraction of the sum of included Products. For example, Customers may, on average, value the Bundle 15% less than the individual Products. Note that firms may still be willing to sell this Bundle at a 15% discount to encourage Customers to buy additional Products that they wouldn't otherwise buy.

Applying additional Booster/Diminisher adjustment factors can be a useful way to fine-tune the scaling. For example, if a Bundle includes two Products from the same Category then the Customer may more heavily discount the value of the second Product as they'll already be able to consume the value of the first Product.

The Booster/Diminishers work differently than the 'Scale Scenario' rule. The Scale Scenario starts with an aggregated WTP sum and then scales it. The Booster/Diminishers work at a deeper level by looking at the individual WTP value of each Customer for each Product. For example, imagine a Product that you only need to buy once. If you came across a bundle with two of them, then the second Product is worthless to you. This situation would be better handled by a Booster/Diminisher. Setting the 'All Products Booster / Diminisher' to 0.0 would reduce each Customer's WTP for the Bundle down to the level of just the most valuable Product within the Bundle - eliminating the value of all other Products. Note that the 'Bundle Generator' node can apply both the Booster/Diminishers and the 'Scale Scenario' rule, but the Booster/Diminishers are applied first.

The act of Bundling, itself, already changes the nature of the Product Differentiation offered without any scaling. Bundling has the effect of averaging the value a Customer places upon a set of Products. For example, if a Customer has a relatively high WTP for the first Product but a low WTP for the second Product, then the Customer's aggregated WTP for the two Products will be closer to the overall market average. In terms of Product Differentiation, Bundling increases Vertical Differentiation (that is, the mean of the summed WTP) but reduces the relative Strange Differentiation (the standard deviation of the summed WTP) and reduces Horizontal Differentiation (the correlation difference to other Products).

Several Bundles can be generated simultaneously by specifying a list of Bundle Names along with included Product Names in the optional 'Input Bundle Products' table. Alternatively, several Bundle Generator nodes can be cascaded one after the other, with each generating just a single Bundle as specified by the 'Products to Include' column selector.

More Help: Examples and sample workflows can be found at the Scientific Strategy website:

Input Ports

  1. Port Type: Data
    Input Product Array: The set of existing Products in the Market. Each row corresponds to a Product, with the name of each Product also existing in the 'Input WTP Matrix'. The 'Input Product Array' should have the following columns:
    1. Product (string): The name of the Product corresponding to a column of the same name in the 'Input WTP Matrix'. The 'No Sale' Product is ignored. Several Products can be selected to form a new Product Bundle. The Name of the new Bundle itself can also be included in the 'Input Product Array'. This will set the Attributes of the Bundle, including the Brand, Store, Location, and Category of the Bundled Product.
    2. Price (double): The Price of each Product in the Market. By default, the Price of the Product Bundle is set to the sum of the individual Product Prices. The final Bundle Price can be adjusted using the 'Set Price of Bundle' option in the Configuration Dialog.
    3. Cost (double): The 'Static Cost' of each Product in the Market. The 'Static Cost' is the per-unit Cost for the Product that doesn't change regardless of how many Products are sold, and should be used by default. It can be contrasted with 'Dynamic Costs' which vary according to the Customers who Purchase the Product. Like Price, the Cost of the Product Bundle is set to the sum of the individual Product Costs, then adjusted using the 'Set Cost of Bundle' option in the Configuration Dialog.
    4. Brand (string): (optional) The Brand of the individual Product. This is needed if the 'Booster/Diminisher' options are set to adjust the WTP of all same-Brand Products. If the Brand of the Bundle has not been specified in the 'Input Product Array' then it will be set to the first Product Brand found in the Bundle.
    5. Category (string): (optional) The Category of the individual Product. This is needed if the 'Booster/Diminisher' options are set to adjust the WTP of all same-Category Products. If the Category of the Bundle has not been specified in the 'Input Product Array' then it will be set to the first Product Category found in the Bundle.
    6. Quantity (integer): (optional) A reference Quantity sold for the Product in the actual (real-world) Market. As the Bundle's Quantity cannot exceed the total Quantity sold of any individual Product, the Bundle's Quantity is set to the smallest Quantity across all Products within the Bundle.
    7. Capacity (integer): (optional) The Capacity Constraint for the Product. A Product's Capacity may be limited by manufacturing constraints or by inventory levels. If the Capacity level is provided then the Quantity sold for the Bundle cannot exceed the smallest Capacity limitation across all of the Products within the Bundle. If Capacity is not provided, or Capacity is negative, then the Quantity sold for the Product is not limited.
  2. Port Type: Data
    Input Bundle Products (optional): If the user wishes to create more than one Bundle, then the names of the Bundles and the names of the selected Products within each should be specified here. The 'Input Bundle Products' table should have the following columns:
    1. Bundle (string): The name of each Bundle of Products to add to the 'Output Product Array' and the 'Output WTP Matrix'. If this optional Input Table is not connected then the node will generate just the one Bundle named in the Configuration Dialog. The Bundle's Product Attributes, including the Bundle's Brand, Store, Price, Cost, and Quantity, can be set by including the Bundle Name in the 'Input Product Array'.
    2. Product (string): The name of each Product found within the Bundle. The same Product Name is expected to be found in both the 'Input Product Array' and the 'Input WTP Matrix'. To include the same Product twice or more in a Bundle, include the name of the Product here several times in different rows.
  3. Port Type: Data
    Input Willingness To Pay Matrix (double): The Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. The total number of Virtual Available Customers is equal to the number of rows in the WTP Matrix. If the Bundled Products already have a column in the 'Input WTP Matrix' then it will be overridden. In addition to each of the Product's WTP Customer Distributions, this 'Input WTP Matrix' can also contain two types of 'Dynamic Cost' Distributions that depend upon the Customers who Purchase the Product. These 'Dynamic Costs' are simply added together when creating a Bundle.
    1. Product01, Product02, etc (double): Each of the Products listed in the 'Input Product Array' should have a corresponding column in this 'Input WTP Matrix'. Each row represents a different Virtual Customer, and each value represents the Customer's Willingness To Pay (WTP) for each Product.
    2. _CTS (double - optional): The Cost To Serve (CTS) is the additional Cost that must be incurred when a Product is sold to a particular Customer. This is a Dynamic Cost as some Customers are cheaper to serve than others, and is only incurred if the Customer actually Purchases the Product. The 'Cost To Serve' column is identified by the Product's Name followed by a trailing 'CTS'. The 'CTS' designator can be upper-case or lower-case and may-or-may-not be separated by a space, underscore, or other single character. For example, 'Product_01_CTS' or 'Product 02 CTS' or 'Product03cts'.
    3. _CTM (double - optional): The Cost To Make (CTM) depends not upon the individual Customer but upon the number of Customers who Purchase the Product. This 'Cost To Make' can be used to simulate the Law of Diminishing Returns. Starting from the first row in the column, each 'Cost To Make' row represents the incremental Cost of manufacturing each additional Product. If the Product is sold ten-times, then the total Dynamic Cost is the sum of the first 10 CTM rows. The 'Cost To Make' column is also identified by the Product's Name followed by a trailing 'CTM' in a manner similar to the 'CTS' designator.

Output Ports

  1. Port Type: Data
    Output Product Array: The 'Output Product Array' is based upon the 'Input Product Array'. If the Product Bundles were not already included in the 'Input Product Array' then they will be added to the 'Output Product Array'.
  2. Port Type: Data
    Output Willingness To Pay Matrix: The original Willingness To Pay (WTP) Customer Distribution matrix for each Product, along with an additional column of WTP values for each new Bundle. The output WTP values in the new Bundle column are the scaled-sum of the selected Products included in each Bundle. The Output WTP Matrix can be directly connected to a downstream 'Simulate Market' or 'Profit Engine' node.