We wanted to create a game where users interact with each other in a democratic way to create a story line by line, and then various machine learning and web scraping techniques are used to illustrate and narrate that story. The inspiration came from a childhood game some of us used to play with siblings and friends where we each would say one word and then progressively that sentence would become increasingly funny and senseless.

What It Does

It allows users to create a username and join a collective narrative. Each user is then asked to submit a sentence they want to contribute to the story. The group is then polled to determine the winning sentence to add to the storyline. In the background, while more sentences are being appended to the story, Google Cloud's natural language processing platform is analyzing the sentiment and keywords of each sentence. This sentiment is used to make a music selection ranging from very sad music, to very happy and light-hearted music. The keywords are also used to search google images and pull the first image result which displays. Often times the image doesn't completely match the story, and thats part of the fun!

How We Built It

We wanted to make good use of the tools provided to us by Google Cloud. So from the very beginning, we worked on creating a simple server which would host and display our deployed web app. This was done with Google App Engine. We used Python and Flask to develop the backend, and HTML, Skeleton CSS, and Javascript for the front end. For all of our natural language processing we used the Google Cloud Natural Language API. We also deployed our app by using the "gcloud" SDK and command line interface.

Challenges We Ran Into

Some of the challenges we faced were the basic struggles of any Hackathon. Fatigue led to careless mistakes. Overall there were only a few primary challenges we faced consistently, though. First, we faced several issues with getting working credentials with our Google Cloud service accounts. A second challenge which was daunting at times was the whole idea of having one "group" session with several clients connected simultaneously and asynchronously via their mobile devices. This proved to be very difficult to accomplish with Flask.

Accomplishments that We're Proud Of

Most of all, we're proud that we have built a product that we love. We all enjoy playing the game and we all laugh at some of the images and music that it selects (even wrongly at times). We worked incredibly well as a team and we had few to no frustrations with each other. For two of our members, this was their first Hackathon ever, and we're super proud of them.

What We Learned

We learned that Google Cloud platform is an incredibly powerful and easy to use product suite. The NLP was especially intuitive. We learned about various certification processes for service accounts. We learned the importance of building a planned pipeline from development to deployment. The infrastructure is incredibly important to building each successive step of any project at this scale.

What's Next for GroupThink

We want to add the following features in the future:

  • A better / more efficient voting system
  • A room based game mechanic where multiple "rooms" can play at the same time
  • A leaderboard which displays users who have had several sentences accepted
  • A tournament bracket based voting system for scalability
  • Improving the security of the web app
  • Basic UI improvements
Share this project: