Hub
Pricing About
NodeNode / Sink

Bundle Generator

Scientific StrategyMarket Simulation
Drag & drop
Like

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: www.scientificstrategy.com .

Node details

Input ports
  1. Type: Table
    Input Product Array
    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. Description (string): The description of the Product or the full name of the Product if the Product field contains an identification number.
    3. 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.
    4. Store (string): The name of the Product Store. Including information about the Store allows the user to calculate the total Revenue and Profit for each Competitor in downstream nodes.
    5. Location (string): The name of the Product Location. The Location can be a name, or it can be used flexibly to indicate the speed of delivery as 'Overnight Delivery', 'Second Day Delivery', 'Third Day Delivery', etc.
    6. Family (string): The name of the Product Family. Generally used to link together related Products. Several Product SKUs can all be part of the same Family.
    7. 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.
    8. Platform (string): The name of the Product Platform. The Platform is a general purpose label that can be used in any way. It can, for example, indicate whether the Product is sold both 'Online' as well as 'Offline'.
    9. Price (double): The 'Static Price' of each Product in the Market. This 'Static Price' can be adjusted by the personalized 'Dynamic Price' found in the 'Input WTP Matrix'. 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. Products with missing Prices are deemed to be Out-of-Stock.
    10. Discount (double - optional): A potential Discount offered to individual Customers. If the dynamic 'Price Adjustment Variable' (PAV) has been set in the Input WTP Matrix, then this Discount will override the PAV if-and-only-if the Discount is more generous. The final Bundle Discount is the most generous Discount found among all Products within the Bundle. IMPORTANT: Discount is expressed as a multiple (like PAV). A Discount value of 0.7 indicates Price is reduced by 30%.
    11. 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.
    12. Holding Cost (double - optional): At the end of each period, except the last Liquidation Period, unsold Products with residual Inventory Capacity accumulate a Holding Cost that reduces the overall Profitability of the Product. Holding Cost can also be thought of the Opportunity Cost of not having the capital tied up in Inventory available for investment in other projects. Products that do not have a Capacity Constraint will not be penalized a Holding Cost. If this field is missing then a zero Holding Cost is assumed.
    13. Volume (double - optional): The 'Static Volume' of the Product relative to the Volume of other Products in the Market. For example, if a Product were a twin-pack then its Volume would be '2' while the Volume of the original Product would be '1' (default). Other scales could also be used, so that one Product might be 250 (ml) while another 500 (ml). But care with the scale should be taken as the Units are disregarded and the default of '1' will always be used if a Volume is missing. This 'Static Volume' field in the 'Input Product Array' is only important if an accompanying 'Dynamic Volume' field (or _VOL field) is found in the 'Input WTP Matrix'. Otherwise this field is ignored as Virtual Customers do not distinguish Products by the different Volume they require. The Volume of the Bundled Product will be increased by summing the individual Volumes of the individual Products making up the Bundle.
    14. Units (string - ignored): The Units of Measurement (UoM) associated with the Product's Volume. For example, the Units could be set to 'ml' when the Products are liquids or beverages. But note that this Units field is ignored and only provided as a convenience. No conversion is provided between different Units. The model will not understand, for instance, that 1 'Litre' contains twice as much Product as 500 'mL'.
    15. 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.
    16. 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.
    17. Transactions (integer - optional): A reference number of Transactions for the Product in the actual (real-world) Market. As the Bundle's Transactions cannot exceed the total Transactions sold of any individual Product, the Bundle's Transactions is set to the smallest Transactions across all Products within the Bundle.
  2. Type: Table
    Input Bundle Products
    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. Type: Table
    Input Willingness To Pay Matrix
    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. 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. In addition, there are two types of Dynamic Prices: PAV and PAF. When bundling, the Price Adjustment Fixed (PAF) values are added together (like the Dynamic Costs). But the minimum Price Adjustment Variable (PAV) is selected so that the Customer will receive the greatest discount from the 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. Volume (double - optional): The personalized 'Dynamic Volume' of Product demanded by each Virtual Customer. For example, if the 'Input Product Array' contains a list of beverages of Volume 250ml, 330ml, 500ml, 750ml, and 1000ml then a Virtual Customer with a demanded Volume of '1000' could purchase a Quantity of either 4, 3, 2, 1, or 1 of the Products (respectively). If Customers are buying by Volume then they must purchase in whole number integers. For instance, if a Product had a Volume of 250ml but a Customer demanded 300ml then the Customer would only be able to buy 1 of that Product. Note that the excess Volume of 50ml received by the Customer is deemed to be of no value ! The Price, WTP, and Consumer Surplus are all re-scaled by the relative Quantity demanded. When Customers buy in Volume then the Output Transactions field will differ from the Output Quantity field - otherwise these two values ought to be the same. Note that the 'Input Product Array' need not also contain a 'Volume' field. If the Product Volume is missing then the Product is presumed to be sold in Volumes of 1 Unit.
    3. _VOL (double - optional): The per-Product 'Dynamic Volume' (VOL) demanded by each Virtual Customer. This per-Product 'VOL' value will override the general 'Volume'. For example, a Virtual Customer buying laundry detergent might generally demand a 'Volume' of 2 (Litres) but might only demand a '_VOL' of 1 (Litre) for the concentrated detergent Product. Negative values will be replaced with a Demand Volume of zero '0'. If both of the 'Dynamic Volume' values ('Volume' and '_VOL') are missing then a default of '1' will be used. The Bundled VOL is set to the minimum VOL demanded across all of the Products and reflects the minimum threshold for the Bundle to meet the Customer's need. If a Customer has no desire for a particular Product (VOL=0) then the Customer will also not wish to purchase the Bundle.
    4. _PAV (double - optional): The Price Adjustment Variable (PAV) is the percentage adjustment to the Price (typically a Discount) a particular Customer would receive when they Purchase the Product. For example, if the Customer is entitled to a 10% Discount then the 'PAV' would be set to 0.90. The 'Price Adjustment Variable' column is identified by the Product's Name followed by a trailing 'PAV'. The 'PAV' 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_PAV' or 'Product 02 PAV' or 'Product03pav'.
    5. _PAF (double - optional): The Price Adjustment Fixed (PAF) is the fixed adjustment to the Product's Price. For example, if Customers pay different amounts for Shipping the Product then this could be modeled using the 'PAF' column. If the WTP Matrix contains both 'PAV' and 'PAF' columns, then the Price is first multiplied by the variable 'PAV' before adding the fixed 'PAF'. The 'Price Adjustment Fixed' column is also identified by the Product's Name followed by a trailing 'PAF' in a manner similar to the 'PAV' designator.
    6. _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'.
    7. _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. Type: Table
    Output Product Array
    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'. Note that in many cases, the sale metrics of the Bundle are do not accurately represent the expected sales of the Bundle in the Market. For example, COGS, Revenue, and Profit are all simple sums of the Products that make up the Bundle. Attach the 'Output Product Array' and 'Output WTP Matrix' to a downstream 'Simulate Market' node to more accurately predict the sales performance of the Bundle in a real-world Market.
  2. Type: Table
    Output Willingness To Pay Matrix
    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.

Extension

The Bundle Generator node is part of this extension:

  1. Go to item

Related workflows & nodes

  1. Go to item
  2. Go to item
  3. Go to item

KNIME
Open for Innovation

KNIME AG
Talacker 50
8001 Zurich, Switzerland
  • Software
  • Getting started
  • Documentation
  • Courses + Certification
  • Solutions
  • KNIME Hub
  • KNIME Forum
  • Blog
  • Events
  • Partner
  • Developers
  • KNIME Home
  • Careers
  • Contact us
Download KNIME Analytics Platform Read more about KNIME Business Hub
© 2025 KNIME AG. All rights reserved.
  • Trademarks
  • Imprint
  • Privacy
  • Terms & Conditions
  • Data Processing Agreement
  • Credits