A cross domain, highly scalable, and extensible Recommender System for SAP employees
We’re all familiar with Recommender Engines, whether on YouTube, Twitter, or in news articles. Once a novelty, they are now a dear companion through our daily lives. In this post, we won’t go into the essence of Recommender Engines, but will explain how we preserve a user’s pseudonymization and how we can train multiple Recommender Engines simultaneously, resulting in a combination of recommendations for different platforms.
We have multiple content sources at SAP, and a crucial question was how to combine them while remaining open to new content. The answer is: a custom Recommender Engine that works on the plug-in principle. At the same time, we want the user to remain private and provide a mechanism that gives them the right to be forgotten.
Our approach is based on a cross-domain distribution of unique identifiers to all opt-in users’ browsers. You, as a user, are in control not only of the decision of whether you want to give our service a try, but to choose which specific platforms you want to get personalized recommendations from.
Who are our customers?
At this point we would like to clarify that this is not a standard SAP product and is for internal purposes only. If you are interested in Recommendation Services provided by SAP, please refer to the information provided further below under Outlook. Our customers are SAP employees on a global level who would like to receive a recommendation for different SAP platforms based on their analysed interests.
What’s the difference?
Our architecture consists of several microservices, each of which has a specific responsibility. We host two ML services on-premises and two services on SAP Business Technology Platform (BTP). The first service in our cloud is a composite service that retrieves recommendations from other services and applies a custom ranking strategy to the items. The second service takes care of enabling and disabling a specific platform for each user and identifiers distribution. For example, it is possible for a user to enable SAP Corporate Wiki but disable SAP Jam. Additionally, we use SAP Web Analytics to track a user’s interaction behaviour with an item.
We currently provide recommendations from three different platforms to more than 100,000 employees. Because our ML services are deployed on a managed Kubernetes cluster, we can easily scale up replicas to reduce latency, which typically increases with more usage of our service. The more usage we have, the more concurrent users occur.
If a new platform needs to be added to our Recommender Engine, we can easily extend our solution as only two steps are required. First, we need to enable pseudonymized tracking on the platform in question. Second, we need to add the platform to our data retrieval pipeline.
What technology do we use?
We maintain a microservice architecture with an entry point on SAP BTP. This service pulls all the threads from the rest of the core services, such as a cold start service, the recommendation service, and pseudonymous ID processing, as well as connectors to other recommendation services within SAP.
Our services are based on Python and for our ML services we use it in combination with Docker and a managed Azure Kubernetes cluster. We monitor all our services with Elasticsearch and visualize the activity with Kibana. Our ML services are currently replicated in threes and have proven themselves in a stress test simulating a larger number of concurrent users. . If a user has seen too few articles in the past, we consider this a cold start. Our strategy to mitigate this is to compute trending articles for the user’s region and offer them first.
There are some ideas we’ve held back for the future to further enhance the employee experience. Since our architecture is built on the idea of being able to easily add new platforms, we plan to add those. We also want to improve our cross-domain recommendations, which help when a user has only been very active on one platform but not on another. Ideally, we’ll be able to make good recommendations for platforms a user rarely uses. Additionally, we need to learn which platforms are more likely to be used by a user and adjust our ranking strategies that prioritize the list of recommendations for different platforms. For example, a user who spends more time on Corporate Wiki should see more recommendations from that platform than from a platform that is barely used.
For our interface to the new enterprise portal – SAP One, we are looking forward to adding expendable recommendation cards. This will allow us to add content-based approaches that will be used to present metadata of this item and similar items like the extended item.
AI based Recommendation Service for SAP customers
If this article has raised your interest and you would like to learn more about the Recommendation Systems offered by SAP, we would like to refer you to our colleagues from the SAP AI Business Services team. They provide an excellent AI based Recommendation Service for our customers which is currently embedded natively in SAP solutions such as SAP Commerce Cloud and SAP SuccessFactors Learning. We are also in close contact with our colleagues to evaluate if and how the AI based Recommendation Service can be extended to meet our needs as well.
Should you have further questions regarding our internal recommendation service, please reach out to us and send us an email to firstname.lastname@example.org.
Patrick Müller // Technical Lead, Machine Learning Engineer and Architect
Nataliia Zahriazhska // Data Scientist and Developer
Emanuel Greilinger // IT Product Owner
Manuel Janitzek // IT Co-Product Owner