Due to the recent situation with the Pandemic and the large amount of free time available to most students and young adults, we thought we should try and do our part on delivering a positive difference. That’s why we created ViralCheck, to provide a social media experience for aspiring business people looking for a platform to share ideas, find inspiration, and even get creative with some of the machine learning features.

What it does

Our project consists of a web-app, whose main feature is predicting the number of likes a YouTube video will get, based on past and current data such as the subscriber count, title of the video, and average views. The user has to simply enter the URL of the video, and our app will automatically extract the required data, using the Youtube API v3. The other features of our web-app include a forums page to allow users with accounts to post questions, ideas, and answers, as well as a thumbnail gallery. We also built a login system, so that users can create accounts and post in the forums. On top of this, we have a special section to allow logged in users to adjust their credentials if they wish and even customize their own profile pictures.

How we built it

The Machine Learning Model

The model takes data from the video and the youtube channel as input (such as subscriber count, average view count of the channel, number of comments, current view count, time of uploading etc.), and outputs the expected number of likes the video will get. For this prediction, we used a python-based Random Forester Regressor classifier, implemented using the sklearn library and trained using a dataset extracted from Youtube’s 8M dataset. To save the model after training, we used a .pickle file.

Youtube API

We wanted to make our app such that the user can predict the number of likes using only the URL of the video. For doing this, we first extracted the unique video-id from the URL. Then, we used this id to get the rest of the data using the Youtube API v3. We then fed this data into our ML model.


The front-end of the web app itself is built with Flask, using templates with html and css. We used the library bootstrap and semantic UI for responsiveness and design. We are proud of the counting up animation of the likes prediction, kudos to Jeremy Nguyen.

Back-end and hosting

We used flask and sqlalcehmy for the back-end as well as encrypting libraries like bcrypt to secure users passwords. We're hosting on since it was a nice and simple way for our entire team to collaborate in real-time coding while seeing the final website hosted already for us.

Account manager and forums

Users are able to adjust their account details and profile picture for more customization. We used bcrypt with sqlalchemy for the password management system. We also implemented a 'forgot password' using flask_mail, as well as updating you email, profile pic etc.

Challenges we ran into

Most of our team were mostly accomplished in the backend and the model, so we had difficulty designing our web app to ensure a pleasant design. We also had troubles with deployment as our model was very heavy containing about 1 gig of data. Since none of us were very experienced in web-hosting trying to get the app deployed in Azure was one of the biggest challenges.

Note that the hosted demo is just a REPL and does not have the ML functionality. We could only do that in the localhost app and not in the web-hosted one. It however does have the accounts and forums functionality.

Accomplishments that we're proud of

We're proud of our successful integration of a flask app with machine learning, sqlalchemy, and bootstrap . We're also proud of the abundance of user authentication features available to make sure users get the best experience. We are proud of the ML model that we pulled off in one day.

What we learned

We learned how to effectively use the Youtube V3 API as well as how to extract and use the data from the API. We also learned how to implement a Random Forester Regressor using python sklearn libraries, as well as save trained models in .pickle files. We also learned how to make a full fledged account management system. Another important key detail we learned was directed towards creating small features that had a large impact. One of these would include the forgotten password email reset form that we implemented using flask and some native email modules.

What's next for ViralCheck Social Media App

We would like to complete our idea of a gallery for other thumbnails as we believe it would be useful for creators seeking inspiration and to have an idea of what works. We would also like to improve the ML model by adding stuff such as views prediction, thumbnail quality detection, clickbait detection, and much more. We can also improve the quality of the prediction, via a better and more refined dataset.

Built With

Share this project: