Inspiration

The idea for Clustr came out of a problem that our friend group encountered after being sent home during the COVID-19 pandemic. We struggled to find the same rhythm that our conversations had when we were in person. Group chats were too intrusive, taking too much time to engage in and supplying an endless stream of notifications. Post-based social media apps seemed too formal and took too much effort to update frequently. We needed an app that allowed us to have the type of conversations that we had in our common rooms. We needed a virtual environment that would let us talk on our own terms. Beyond just our own needs, we were interested in reimagining online communication for all groups. We saw how much people were struggling with the loneliness of remote work and school, and we wanted to create a product that would help them reinvigorate their social connections and make new ones all together. We decided that the best solution to this problem would be a new type of social media app that creates an open environment for communities which people can engage with at whatever level suits them. This idea became Clustr. We are excited to begin this journey at HackPrinceton, and we fully intend on developing it into a startup going forward.

What it does

Clustr is a mobile app where friend groups can collectively create customizable communities. Within these communities, multiple conversations take place, each with a set of active participants. Conversations are viewable to everyone, but only notify the included members, reducing the barrier to start a new conversation. Additionally, users can create topics under which they may post conversation starters. This feature allows people to share small moments in their lives as they would in person and helps combat group inactivity. Supplementary features such as event scheduling, a collective white board, and video chat make Clustr an excellent fit for all types of groups.

Further from the frontend experience, several machine learning and data driven models improve the user experience and promote authentic group interactions. Clustr contains natural language processing models to suggest group names and cluster similar conversations. These features can aid in conversation discovery. Additional user analytics classify users by their interests, allowing us to display relevant conversations and suggest potential friends.

From our preliminary research, Clustr is the only mobile app working on sustaining fluid group conversation. Several platforms exist for direct messaging, and Slack and Discord are our biggest community competitors. We differ from these competitors by providing a vehicle for fluid conversations suitable for friend groups and workplaces alike.

How we built it

Clustr contains multiple interconnected components - a mobile application, a backend server, an NLP suite, and a user analysis simulation. Let's take a look at each:

  1. Mobile Application: We built the user facing mobile application using React Native on an Expo managed workflow. We utilized Redux to handle state, Firebase for authentication, and Stream Chat API (https://getstream.io/chat/) to integrate real-time messaging features. We first created detailed mockups in Figma before translating them into HTML, JavaScript, and styling.
  2. Backend Server: On the backend, we used FastAPI in Python to communicate with the React Native frontend. We set up a MongoDB Cluster using Atlas hosted on Google Cloud, and designed several endpoints to perform CRUD operations for the following entities: Users, Clusters, Conversations, Pin Boards, and Posts. Detailed documentation was generated using FastAPI and Python function decorators.
  3. NLP Tools: In addition to the basic CRUD operations, the backend server also handled communication between the mobile application and NLP tools designed to improve the user experience. We used Google Cloud Named Entity Recognition to suggest group names based on past conversation and a custom Python pipeline (involving GenSim, NLTK, TF-IDF, and Latent Semantic Indexing) to compute conversation similarities within a cluster.
  4. User Analysis Simulation: Additionally, we developed an algorithm to estimate a user's interests given their recent conversation history. We built a simulation using Python, Pandas, SciKit Learn, and MatPlotLib to test the validity of this method under several circumstances.

Challenges we ran into

Our project contained many moving pieces, i.e. the frontend, backend, database, ML models, etc. Creating each individual component and gluing components together required adaptive planning and frequent check-ins from the team. With the frontend, we faced challenges debugging the starter code for the Stream API and having it mesh well with our existing React Native project. On the backend, it was our first time using MongoDB properly, so there was a steep learning curve! We also pivoted several times while deciding the optimal models for the NLP toolkit and user analysis simulation.

Accomplishments that we're proud of

Coming into the hackathon with just an idea, it's great to look back and see just how far we were able to come in 36 hours. Like many programming projects, we got stuck a couple times, most notably while implementing the Stream Chat API. We were also unfamiliar with many of the tools and topics used, but used this as an opportunity to learn and grow. We are proud of our success in designing, developing, and debugging the React Native project such that we can now run Clustr on our own devices. We are excited to build off of our experience at HackPrinceton and continue building Clustr in the future!

What we learned

Working at the edge of our abilities, we all were exposed to new knowledge, whether it be technical or interpersonal. We picked up several new frameworks and languages, including MongoDB, Figma, Stream Chat API, and more. We also gained experience collaborating in realtime on a complex project with many moving parts. GitHub and frequent Zoom calls were critical in avoiding blockers and making consistent progress. Finally, we all learned to communicate, embrace uncertainty, and enjoy the journey in addition to the destination.

From another direction, we learned a lot about our idea and refined it several times during the hackathon. As we added more and more impactful features, we realized this project has a scope beyond just a weekend diversion, and could make a positive difference in real people's lives. We are very excited about Clustr and the problems it can solve, and look forward to pursuing this even after HackPrinceton ends.

What's next for Clustr

We believe that Clustr helps to solve some of the very real problems that exist with current social media and methods of online communication. We see a need for our product and know that it has the potential to have a positive impact on the world of virtual communication and relationship building. For these reasons we fully plan on developing Clustr into a startup. We are ready and willing to invest our time into Clustr to bring it to life. We will continue to refine our features, improve our design, and build Clustr into a usable and useful app. Thank you to everyone at HackPrinceton for being a part of our creative process. We cannot wait to continue working on Clustr!

Share this project:

Updates