Meme Recommendation System




Overview

While many people can view memes on Facebook, Instagram, Twitter, Reddit, or another similar app; there is not a dedicated popular application for memes. Meme Feed is a phone application that dedicated to Memes and allows users to cultivate their own presence online as a meme page. Our goal of this project was to both facilitate users in finding memes which they find funny but also to facilitate them in building an online presence and streamline the process to making their own meme page. For my senior thesis I spent seven months working on this project in a team of five where I took the position of the project manager, application designer, and software engineer.

Technologies:

To build our app we used Firebase as our backend where we stored meme and user data. Google Cloud Platform (GCP), facilitated us in websraping our memes and generating our recommendations. We used React Native as our frontend framework for development the user interface.

Frontend Architecture:

The frontend architecture relies on 4 pages, the Home page which displays content from the people you follow, the Explore page which has recommended memes, the Profile page which displays the memes that you have uploaded/liked, and the User page which displays memes that a user has uploaded/liked. From any of these pages a user can react to a meme with any of the 5 possible reactions, if the reaction is in the top 3 reactions that meme gets posted to that users profile, which allows them to have more memes on their profile and provides the backend with more data about the user. This system incentives users to react to more memes which allows the recommendation system to learn more about the user.

Backend Architecture:


The backend Architecture first takes memes from reddit and uses them to fill up the database. These memes are then imported to the app where the users of the application can interact with them via commenting or the reaction bar. When a user reacts to a meme that information is then fed to the recommendation system which generates a feed of recommended memes for each user. These recommendations are then made visible via the Explore page in the app.

Recommendation System

The recommendation system takes information from the users, reddit, the meme itself, and the reactions from that meme. Based on that metadata there are three recommendation systems in place, each of which generates their own recommendations, these recommendations are then compiled in to one set based on a rank voting system based on confidence from each of the recommendation algorithms. These memes are then sent back to the database and made viewable on the application. The first recommendation system finds memes based on users that have a similar taste to a user of interest, the second one finds memes based on genres of memes which are determined from the subreddit source, the third recommendation system generates recommendations based off a users likes.

Project Manager Role

When I first proposed the project, I had to ensure that I had an adequate vision, was able to present my vision, and was able to recruit potential developers for the project. My role as product owner had many documentation responsibilities such as drafting and overseeing project proposals, quarterly release plans, biweekly task plans, testing documents, developer guides, public presentations, and posters. In the release and task plans I had the responsibility of creating realistic project deadlines to ensure team progress. Additionally, I organized team meetings three times a week to discuss progress, setbacks, and achievements; I also met with team members one on one to help with complications and communicate instructions. Furthermore, in order to ensure that our project could rsun in a cost effective way I communicated with Google several times to secure funding for our cloud services. From a more technical point of view, I was as much of a leader on the project as a developer. As the lead developer I was in charge of designing the application architecture for the frontend, backend, and the recommendation system. Using React Native and Google Firebase I implemented features like as posting, commenting, and viewing memes in a feedlike format. In regards to the recommendation system I was responsible for preprocessing the data, creating a pipeline, and implementing various recommendation systems.

Results and Accomplishments

Perhaps the biggest accomplishments of this project were having the app be accepted to the google play store and the app being released as a beta on the apple store. While the app was accepted to the google play store it is no longer available as we wanted to take it off the platform for public use.

Furthermore after it's initial release, we saw an increase in users which allowed us to get more user data to test out our recommendation system.