Thank you for the post, I just want to add that there is some machine learning approaches that automatically estimate the mark objects.
Shameless self-promotion:
https://github.com/GHamrouni/Recommender
it is a C library for product recommendations/suggestions using collaborative filtering (CF).