Political polarization is becoming an increasingly significant issue within American society. People are sorting themselves into political echo chambers both on and off the internet. This in turn makes the issue worse, as people fail to ever genuinely interact with those that differ from them ideologically.

What it does

Convive seeks to solve political polarization by building potentially lasting relationships between people that differ in political beliefs. When creating their account, a user provides information about their interests/hobbies and political views. They are then randomly paired with a user that aligns with their interests, but not with their views. This ideally means the users can connect on things they care about with someone that lies beyond their political echo chamber.

Once a chat session is complete, we used natural language machine learning to determine how positive the conversation was. Users are awarded a crypto-currency (called "change") that we built. A very positive conversation equates to more of our currency given. The objective of this is to encourage users to both use the platform as well as participate in productive and friendly conversation.

How we built it

On account creation, the users can select from a list of interests they have. They also answer a few questions to determine where they lie on the political spectrum. The questions are binary, thus the user either moves farther "left" or "right" with each answer. This is done via Google Forms, which in turn spits out the data to a Google Sheet. A Python script harvests the data and creates user documents on our MongoDB.

A (text) chat session is created for two users that have overlapping interests but lie on opposing sides of the spectrum. The users are free to speak with each other for however long they desire. The chats and messages are saved in our MongoDB.

After a chat session is complete, a Python script interfacing with the GCP APIs sends the chat log off for processing. Google returns information regarding the sentiment of the log, which we condense to a number that denotes how successful the interaction was and how much "change" to reward the two users.

The crypto-currency was built from a small implementation known as "NaiveCoin." It runs on an Ubuntu VM from GCP. There are 4 components: the miner, the operator, the blockchiain, and the node. A node can be linked to other nodes to exchange the blockchain. The operator is a blockchain user with wallet and address IDs. The miners are users who verify the transactions as legitimate in exchange for coins.

Challenges we ran into

Beyond the necessary bug squashing that comes with any code, we had issues arise from using technologies we were unfamiliar with and attempting to link them all together in a cohesive user experience.

  • Directing users from the log in page
  • Using promises in JS
  • Properly authenticating with GCP
  • Grabbing the correct messages for a given chat room
  • Juggling various APIs and tools, then fitting everything together

Accomplishments that we're proud of

This was a large endeavor, thus the completion of everything we originally outlined is something to take pride in. We also worked well as a team, having moved efficiently to accomplish everything while having fun doing it.

We also managed an appropriate amount of sleep.

What we learned

  • A lot about building a full stack platform
  • How to interface with GCP, including sheets and ML APIs
  • How to operate a crypto-currency

What's next for convive

The platform in its current state is too rough for production, however it could be an enjoyable long-term project to build it upon a better infrastructure with the goal of a polished user experience. There are a few things we failed to finish due to time constraints.

Share this project: