Expand my Community achievements bar.

Product Combo?

Avatar

Level 2

Hi all,

I am a beginner in developing AEM, and I'm trying to understand the product class.

I have seen that there are products with predefined API product characteristics.

 I want to do a Combo product containing products.

            Example:

            Product item1 = hamburger

            Product item 2 = chips

            Product item 3 = cokes

            Product ComboProduct = item1 + item2 + item3

my question is ...

Is this idea possible? If the answer is yes, what is the best way to group products

into a new ComboProduct component?

Thank you for your time

5 Replies

Avatar

Administrator

Hi

Yes, we can achieve this but for that we need to create a component with our custom logic.

Link:- http://stackoverflow.com/questions/2323768/how-does-the-amazon-recommendation-feature-work

 

Recently i read an article covering "How does the Amazon Recommendation feature work?"

It is both an art and a science. Typical fields of study revolve around market basket analysis (also called affinity analysis) which is a subset of the field of data mining. Typical components in such a system include identification of primary driver items and the identification of affinity items (accessory upsell, cross sell).

Keep in mind the data sources they have to mine...

  1. Purchased shopping carts = real money from real people spent on real items = powerful data and a lot of it.
  2. Items added to carts but abandoned.
  3. Pricing experiments online (A/B testing, etc.) where they offer the same products at different prices and see the results
  4. Packaging experiments (A/B testing, etc.) where they offer different products in different "bundles" or discount various pairings of items
  5. Wishlists - what's on them specifically for you - and in aggregate it can be treated similarly to another stream of basket analysis data
  6. Referral sites (identification of where you came in from can hint other items of interest)
  7. Dwell times (how long before you click back and pick a different item)
  8. Ratings by you or those in your social network/buying circles - if you rate things you like you get more of what you like and if you confirm with the "i already own it" button they create a very complete profile of you
  9. Demographic information (your shipping address, etc.) - they know what is popular in your general area for your kids, yourself, your spouse, etc.
  10. user segmentation = did you buy 3 books in separate months for a toddler? likely have a kid or more.. etc.
  11. Direct marketing click through data - did you get an email from them and click through? They know which email it was and what you clicked through on and whether you bought it as a result.
  12. Click paths in session - what did you view regardless of whether it went in your cart
  13. Number of times viewed an item before final purchase
  14. If you're dealing with a brick and mortar store they might have your physical purchase history to go off of as well (i.e. toys r us or something that is online and also a physical store)
  15. etc. etc. etc.

If we talk about Amazon.com, the four big take-a-ways you should have are:

  1. Amazon (or any retailer) is looking at aggregate data for tons of transactions and tons of people... this allows them to even recommend pretty well for anonymous users on their site.
  2. Amazon (or any sophisticated retailer) is keeping track of behavior and purchases of anyone that is logged in and using that to further refine on top of the mass aggregate data.
  3. Often there is a means of over riding the accumulated data and taking "editorial" control of suggestions for product managers of specific lines (like some person who owns the 'digital cameras' vertical or the 'romance novels' vertical or similar) where they truly are experts
  4. There are often promotional deals (i.e. sony or panasonic or nikon or canon or sprint or verizon pays additional money to the retailer, or gives a better discount at larger quantities or other things in those lines) that will cause certain "suggestions" to rise to the top more often than others - there is always some reasonable business logic and business reason behind this targeted at making more on each transaction or reducing wholesale costs, etc.

 

Link 2:- http://stackoverflow.com/questions/794870/algorithm-for-suggesting-products

Simple and straightforward (order cart):

Keep a list of transactions in terms of what items were ordered together. For instance when someone buys a camcorder on Amazon, they also buy media for recording at the same time.

When deciding what is "suggested" on a given product page, look at all the orders where that product was ordered, count all the other items purchased at the same time, and then display the top 5 items that were most frequently purchased at the same time.

You can expand it from there based not only on orders, but what people searched for in sequence on the website, etc.

In terms of a rating system (ie, movie ratings):

It becomes more difficult when you throw in ratings. Rather than a discrete basket of items one has purchased, you have a customer history of item ratings.

At that point you're looking at data mining, and the complexity is tremendous.

A simple algorithm, though, isn't far from the above, but it takes a different form. Take the customer's highest rated items, and the lowest rated items, and find other customers with similar highest rated and lowest rated lists. You want to match them with others that have similar extreme likes and dislikes - if you focus on likes only, then when you suggest something they hate, you'll have given them a bad experience. In suggestions systems you always want to err on the side of "lukewarm" experience rather than "hate" because one bad experience will sour them from using the suggestions.

Suggest items in other's highest lists to the customer.

 

I hope this will help you.

Thanks and Regards

Kautuk Sahni



Kautuk Sahni

Avatar

Level 2

kautuksahni wrote...

Hi

Yes, we can achieve this but for that we need to create a component with our custom logic.

Link:- http://stackoverflow.com/questions/2323768/how-does-the-amazon-recommendation-feature-work

 

Recently i read an article covering "How does the Amazon Recommendation feature work?"

It is both an art and a science. Typical fields of study revolve around market basket analysis (also called affinity analysis) which is a subset of the field of data mining. Typical components in such a system include identification of primary driver items and the identification of affinity items (accessory upsell, cross sell).

Keep in mind the data sources they have to mine...

  1. Purchased shopping carts = real money from real people spent on real items = powerful data and a lot of it.
  2. Items added to carts but abandoned.
  3. Pricing experiments online (A/B testing, etc.) where they offer the same products at different prices and see the results
  4. Packaging experiments (A/B testing, etc.) where they offer different products in different "bundles" or discount various pairings of items
  5. Wishlists - what's on them specifically for you - and in aggregate it can be treated similarly to another stream of basket analysis data
  6. Referral sites (identification of where you came in from can hint other items of interest)
  7. Dwell times (how long before you click back and pick a different item)
  8. Ratings by you or those in your social network/buying circles - if you rate things you like you get more of what you like and if you confirm with the "i already own it" button they create a very complete profile of you
  9. Demographic information (your shipping address, etc.) - they know what is popular in your general area for your kids, yourself, your spouse, etc.
  10. user segmentation = did you buy 3 books in separate months for a toddler? likely have a kid or more.. etc.
  11. Direct marketing click through data - did you get an email from them and click through? They know which email it was and what you clicked through on and whether you bought it as a result.
  12. Click paths in session - what did you view regardless of whether it went in your cart
  13. Number of times viewed an item before final purchase
  14. If you're dealing with a brick and mortar store they might have your physical purchase history to go off of as well (i.e. toys r us or something that is online and also a physical store)
  15. etc. etc. etc.

If we talk about Amazon.com, the four big take-a-ways you should have are:

  1. Amazon (or any retailer) is looking at aggregate data for tons of transactions and tons of people... this allows them to even recommend pretty well for anonymous users on their site.
  2. Amazon (or any sophisticated retailer) is keeping track of behavior and purchases of anyone that is logged in and using that to further refine on top of the mass aggregate data.
  3. Often there is a means of over riding the accumulated data and taking "editorial" control of suggestions for product managers of specific lines (like some person who owns the 'digital cameras' vertical or the 'romance novels' vertical or similar) where they truly are experts
  4. There are often promotional deals (i.e. sony or panasonic or nikon or canon or sprint or verizon pays additional money to the retailer, or gives a better discount at larger quantities or other things in those lines) that will cause certain "suggestions" to rise to the top more often than others - there is always some reasonable business logic and business reason behind this targeted at making more on each transaction or reducing wholesale costs, etc.

 

Link 2:- http://stackoverflow.com/questions/794870/algorithm-for-suggesting-products

Simple and straightforward (order cart):

Keep a list of transactions in terms of what items were ordered together. For instance when someone buys a camcorder on Amazon, they also buy media for recording at the same time.

When deciding what is "suggested" on a given product page, look at all the orders where that product was ordered, count all the other items purchased at the same time, and then display the top 5 items that were most frequently purchased at the same time.

You can expand it from there based not only on orders, but what people searched for in sequence on the website, etc.

In terms of a rating system (ie, movie ratings):

It becomes more difficult when you throw in ratings. Rather than a discrete basket of items one has purchased, you have a customer history of item ratings.

At that point you're looking at data mining, and the complexity is tremendous.

A simple algorithm, though, isn't far from the above, but it takes a different form. Take the customer's highest rated items, and the lowest rated items, and find other customers with similar highest rated and lowest rated lists. You want to match them with others that have similar extreme likes and dislikes - if you focus on likes only, then when you suggest something they hate, you'll have given them a bad experience. In suggestions systems you always want to err on the side of "lukewarm" experience rather than "hate" because one bad experience will sour them from using the suggestions.

Suggest items in other's highest lists to the customer.

 

I hope this will help you.

Thanks and Regards

Kautuk Sahni

 

Please, I would like to rephrase my previous question adding more details

 

The use case I am dealing with is when a customer buys a combo product instead of some isolated products

 

Example

Prices for individual products

  • Hamburguer – 3$
  • Chips - $2
  • Coffe - $2

 

However, if the customer buys these 3 products, the price in the shopping cart is $5,5 instead of $7, because these 3 products are equivalent to 1 combo product more cheaper

Prices when combo product is applied

 

  • Combo product $5,5 (Hamburguer – 2,5$, Chips - $1,5, Coffe - $1,5)

 

And finally, in the shooping cart, if one of these products (i.e. chips) is removed, the price would be updated with the original values (it is not longer a combo product but 2 isolated products (hamburger and coffe)

 

Example

If the customer has uploaded into the shopping cart the Hamburguer, with chips and a coffe, he will be charged by $7. However, if he removed the chips, the price for the hamburguer and the coffe will be updated to $5, instead of $4

 

I wonder if it would be possible to define a combo/bundle product. My understanding is that it would help me to manage the situation when any item is removed from the shopping cart

 

I would appreciate any idea regarding this topic

Avatar

Level 10

What you want to do is possible; however, it would require extending some of the base Java classes that are part of the eCommercne API framework. Here is Javadoc for those APIs:

https://docs.adobe.com/docs/en/aem/6-1/ref/javadoc/com/adobe/cq/commerce/api/package-summary.html

I wish we had helpx articles that show you how to do this. However - there are none. We plan on creating them as we know this is important subject matter. 

It depends on how do you want to handle this combo products based on your PIM (Product Inventory Management)

Are you managing the products in AEM or some other platform like hybris ?

Option 1:

I would suggest, to create a new product with the combination of products in your PIM and use it as another product

Option 2:

Create a new component where authors can select multiple products to create a combo product on a page.

 

Regards,

Lokesh

Avatar

Level 2

Hi, 

Before writting this post, i considered extend product API, following this step:
    1.- Download cq-commerce-core-5.13.12.jar 
    2.- Decompile with JD-gui.exe
    3.- Try to modify the product.class ( cq-commenrce-core-5.13.12\com\adobe\cq\commerce\api), to extend this interface 
    4.- Add funcionality in AbstractJcrProduct.class that extends product.class(cq-commenrce-core-5.13.12\com\adobe\cq\commerce\common)
    
But we have a problem in AbstractJcrProduct.class, after of decompile it, in the source code appear     some errors, and i don't know if i've done some wrong

(, [Ljava.lang.String.class).

public Iterator<String> getVariantAxes() { String[] axes = (String[])getProperty("cq:productVariantAxes", [Ljava.lang.String.class); if (axes != null) { return Arrays.asList(axes).iterator(); } return new ArrayList().iterator(); }

 

We want to try extends the necessary API to add this COMBO funcionality, Could you tell us the API that we need to extend to add this funcionality?
The process to extend API is correct or there are other process?

Can you tell us any other process to extend some of the base Java classes that are part of the eCommercne API framework?

Thanks and regards