While Visa is a household name around the world, many people don’t realize that they are simply a payment system, and are not the ones who actually issue out any of the credit cards. Our agency partners at Finch-15 developed an algorithm to allow Visa to provide a service like Credit Karma, allowing the system to take input from the users enabling them the ability to recommend the credit card that is right for them.
Verndale was asked by Finch-15 to help build Visa Card Advisor, a service that matches the user to a card based on your personal preferences. With this our main challenge was to translate the vision of having a powerful credit card recommendation engine into a viable, extensible solution within Adobe Experience Manager.
Verndale was tasked with understanding a very complex recommendation algorithm and business logic, and discovering the best way to translate that into the back-end technology, specifically AEM.
For this project, we integrated the following components into the OSGi container to power our business logic and optimize our interactions with the JCR:
From there, our first step was to understand how the card advisor algorithm worked. This is a very complex algorithm that ranks and filters cards based on user preferences. In order to build a viable solution that allows content managers, and the business, to reliably affect the algorithm parameters, we decomposed every single piece of the advisor algorithm to abstract all the key components into content managed components; we also built concrete business logic modules that translate the algorithm into a working system.
We used Java best practices, and time-tested design patterns for laying out this business logic, and leveraged Sling servlets, OSGI components and services, as well as the AEM and Sling APIs to create a seamless experience for the user and pleasant back-end for other programmers to tap into. We created a RESTful Sling Service Layer to power the card advisor single page application experience, Guice for dependency injection, JCROM for mapping Java Objects to the JCR, Model Mapper to automatically determine how one object maps to another and ACS commons to avoid reinventing the wheel and provide a solid tool-set atop of AEM’s.