Ever found yourself stumped while faced with the task of gifting someone like a new colleague at work or some distant family relation and end up going for a generic option like Cadbury’s or that Bikaner vaali mithai hamper?
Here’s where we come in, with our Project Salamander. Salamander aims to recommend personalised gifts after analysing the social media preferences of the target person and his friends. The idea being that the public profiles followed by a person give an insight about what product they may like being gifted with. We use a hybrid of Content-based and Collaborative Filtering recommendations methods to achieve this.
How does Salamander work?
The user logs in using their Instagram credentials. We then retrieve the user and their friends’ data (hashtags from the public pages followed by the user, and their friends) from Instagram by using web-scraping methods. These hashtags are then sent in a search-query to the Amazon site. Using web scraping, the Top 5 products from Amazon-feed are then extracted to create a matrix of followers and corresponding products. Using Matrix factorization we compare co-occurrences of product-pairs to know what products are more likely to be recommended together. Finally, the Top 6 recommended gifts are displayed out for the user with a clickable link which redirects them to the corresponding product page on Amazon.
The Perfect Gift is just a click away! 😊
1)Unavailability of APIs: Using an API would have simplified the process of fetching data and saved us some time. We could not use e-commerce APIs like Amazon's Product Advertising API, as they required us to register with a billing account. Therefore, we had to incorporate extensive web-scraping methods using Selenium and Selectorlib.
2)Appropriate data procurement: We had to discuss rigorously to decide upon the exact data to be collected so that the recommendations are properly personalised. Ultimately, we went for hashtags from the public verified accounts a person follows.
3)Wrestling with Data Structures: We are dealing with a lot of data, with intricate mapping relations (from people to their corresponding Hashtags to the corresponding Products. This meant a lot of utilizing, manipulating and navigating between data structures-be it Dictionaries, Pandas Dataframes, Matrices or good ole lists. This was a programming challenge that soundly tested our DS/A skills.
4)Integration, Testing and Debugging of the various features of Salamander: As the popular saying goes, Debugging is twice as hard as writing the code in the first place. Integrating the features and running tests was quite a challenge as we were not physically present to be of aid to each other- both in terms of intelligence and moral support! We overcame this by holding frequent meet sessions after every update and ensuring that everyone was aware of each others' work.
5)Virtual Hack InOut🥺: Hack InOut being Virtual this time, the isolated coding sessions made coordination a tough task. However, we deftly dealt with this issue by coming up with a Buddy system: i.e Pairing off for every work session- no matter how small or insignificant it may be. Although we do miss all the good fun we might have experienced were it not for the Pandemic-this system of ours, allowed us to bond, debug together and build our idea.
Discussion