Inspiration
Traditional machine learning models have always required a large amount of data in order to accurately understand a user's preferences. But at the end of the day, our online behavior is a function of our psychology. We believed that it was possible to abstract away the need to always build a new model in order to accurately predict a person's media consumption preferences. We set out to prove this, and that's exactly what we've done.
What it does
Our web application asks the user to sign in with email, and analyzes their sent email text in order to predict their personality and show them movies, TV shows and music that they are likely to enjoy.
How I built it
- Used the Gmail API in Python to extract a user's email messages, parsed, cleaned (using regex) and concatenated them
- Used IBM Watson Personality Insights in order to extract personality from these emails
- Read a large number of research papers on personality in order to put together actionable insights on the person themselves as well as the kind of content they will like
- Delivered these insights using a frontend rendered using the render_template functionality of Flask = HTML and CSS
- Hosted this entire project locally on a Flask server. ## Challenges I ran into
- We first tried building the frontend in React, and ran into a number of issues with fetching the data from the RESTful API that we had built in Flask for the backend. We therefore had to use the render_template functionality and display the insights and recommendations using HTML/CSS.
- Parsing the email using regular expressions proved to be a very tedious task, as there were a number of different edge cases that we had to deal with.
- Google's documentation for the Gmail API was difficult to decipher and read, and getting the text of the emails was very confusing - we had to decode each email from base64 encoded string values.
- This was our first time using the render_template functionality for the frontend, and I had never used variables within HTML in the way that this framework requires us to use in order to display data. That took a long time to figure out as well! ## Accomplishments that I'm proud of
- Overcoming all the challenges! Connected the frontend to the backend, and it works seamlessly. This means that if someone signs in using their email, we are able to deliver accurate and actionable personality based insights for them to receive better content recommendations, improve their workplace performance, and be happier at work. ## What I learned
- Got much better at Flask
- Learned a lot more about React (even though we ended up not using it)
- Learned how to use the Watson Personality Insights API as well as the Gmail API ## What's next for Watchson
- This could have significant applications as an enterprise software company. With this tech, we no longer need to actually deliver personality tests, as we're able to use email text from each person and give them accurate personality insights! The movie and content recommendations could have applications in recommendation systems, potentially as a new class of recommender system. Currently recommendations are built as content-based filtering or collaborative filtering algorithms. We have essentially built a personality-based filtering algorithm!
Log in or sign up for Devpost to join the conversation.