Inspiration
As two of our teammates descended into a moment of discord, we found the importance of a ubiquitous yet significant natural force-human laughter. Our two comrades bore their fangs at each other due to their disagreement on whether Waterloo was a great school or not. They disputed on and on about Waterloo’s courses and faculty, but it took a third party to completely end their debate. Our third member finally intervened with a simple yet true joke; UW is tundra in the winter, do you guys think you can live as polar bears? Suddenly, all three parties broke the tension with their thunderous laughter, and the conflict was resolved. The inspiration for this game came after two students on our team shared a moment of uncontrollable laughter. We discovered laughter’s great healing abilities and wanting to share the great gift of laughter with others, our team decided to create a try not to laugh app.
What it does
Our web app presents users with hilarious shorts from Youtube and Reddit, giving them opportunities to laugh and rid themselves of the worries that they have accumulated throughout the day. The goal of the app is to be as funny as possible; inversely, the users’ goal is to avoid laughter as much as possible. Every time the user avoids laughter, they are rewarded a point, and if the users find themselves with as little as a grin on their face they lose their streak. Finally, their score is tallied and they are granted a place on the leaderboard when compared with their friends. Then an AI learns the user’s laughter patterns and tries to predict the type of video they find funny. This way, the users help us understand how to make them laugh.
How we built it
We built this project with multiple goals in mind. We wanted to make use of as many sponsored services as sensibly possible, and we wanted to use our collected skills to the best extent. Therefore, we ended up choosing a CERN stack (CockroachDB, Express, React, NodeJS) along with Co:here to stretch our abilities to the point of improvement. Then we used Bootstrap to ensure the app’s scalability. We then used a javascript API that allows us to detect emotions through a webcam. The next steps came naturally and successively: we integrated the API into the main stack, found a method to scrape funny Reddit and Youtube videos, and worked frantically to put all of the puzzle pieces together, eventually coming to the entity known as Laugh-a-lot.
Challenges we ran into
Time constraints played a large part in the scale of our projects. An idea too ambitious would take more than just one weekend, and an idea too unambitious would leave you with nothing else to do over the weekend. Furthermore, we had to take into consideration our team's limitations. Although 4 people could work non-stop on a project for the whole weekend, sleeping 30 minutes at a time, it was necessary to gauge our teams' ambitions and willingness to sacrifice for the greater good.
Technically, the biggest challenge for us was figuring out the actual algorithm responsible for recommending the videos to users. We started with scraping hundreds of hundreds of videos from JSON data off off "funny" subreddits on Reddit.com. Then, to recommend the videos to users, we started with a simply upvote downvote system- a laugh was equal to 20 upvotes and a non-laugh to -10. However, this meant that at any given time, all users would be shown the same videos; this was not what we wanted. So, we set out on an incredulous journey to PERSONALIZE the appearance. Alongside video links, out scraping had also revealed tons of text bodies (titles) associated with the videos. We then fed these through a drastically altered version of Entity-Extraction system through Co:Here, where, e.g, "Cat falls from roof on dog" = the categories "Animal, motion, damage". We then used a frequency classifier to find user interests (e.g one user is interested, from their laughs, mostly in animals falling off objects; another in fart jokes) and cater the videos to those interests (through weighted graphs). NLP was a HUGE part of this.
Finally, we had to deal with uncertainty because we had chosen a space of liminality between a project that was doable or too ambitious. Therefore, we pushed ourselves to points beyond exhaustion, breaking our own aforementioned rules of sleeping 30 minutes per day.
Accomplishments that we're proud of
(P)roud of our newfound unity as a team (R)especting that we had the opportunity to compete and meet many likeminded individuals who treated us with respect (O)ptimistic that we will have sleep-deprived ourselves for so long that future attempts will seem easier =) (U)nderstanding that we have our own physical limitations and that it is okay to be tired (D)reaming that we will one day be as hard-working or as nice as the seniors that we have met today
What we learned
As noted before, we learned that we have our own physical limitations. Although the idea of working throughout the night to gain significant progress on our project seems like a definite way to completely lose motivation by the second day, it allowed us to form bonds as a team. We learned about not only our own limitations but also our limitations of us as a whole. We found interesting factoids like how Dilreet ate all types of meat except for pork, allowing Arihan and him to bond over their cultural similarities. All in all, we learned that this hackathon was more than just hacking; it was a way to branch out and reach out and form connections we would have otherwise thought were impossible to form.
What's next for Laugh-a-lot
Laugh-a-lot is ready for the next step in an app’s development, but it requires some more improvements. We need to improve the accuracy of the AI’s Cohere section by employing more trials and further attention. After that, we will look towards expanding our user base and employing further tactics to attract users, mainly by word of mouth. We plan to improve Laugh-a-lot until it reaches enough people and a level of intelligence high enough to maybe change the world.
Log in or sign up for Devpost to join the conversation.