Inspiration/Idea
It's the beginning of the school year, and everybody wants to meet people. But when most people meet each other, their go-to small talk questions are things like "What's your name? What's your major? Where are you from?" - oftentimes, these socially-acceptable conversation starters aren't much to fuel a genuinely interesting conversation. We wanted to fix that. When a CMU student enters TartanSpace, they answer questions like "What was your favorite experience with a friends?" and "When was the last time you felt lucky to be you?" These questions might feel too deep and personal to use as small-talk starters, but their substance is much more valuable. The idea was to use this substance to connect students with each other, while still maintaining respondents' privacy. We turned to "space" to do this - after a student answers our questions, their answers are passed through a latent-space embedding algorithm which captures the key ideas of their responses in vectors. Then, these vectors are transformed into 3d points, which we map into a visual 3d space. With this space, students can roughly learn who had similar (or different) answers to them, which can then lead to a DM - a chat over lunch - and ultimately, a connection.
What it does
TartanSpace takes users' input to various life questions and embeds them into a 384-dimension latent space. We then perform dimensionality reduction on this latent space embedding to compress the information into three dimensions, and map these 3D points like stars in a visual 3d "galaxy". Users can zoom and pan around the galaxy to see all the "stars" representing other users' answers.
How we built it
The embedding is performed with SentenceTransformers all-miniLM-L6-v2 model, which uses HuggingFace transformers and Pytorch under the hood. Dimensionality reduction uses the PCA algorithm. The frontend is built on React, and visuals are rendered with the Three JS library. On the backend, we used the MongoDB Atlas database and Flask for our webserver. Our Server is an AWS EC2 instance. We hosted on Vercel.
Challenges we ran into
We were unfamiliar with many of the tools in our tech stack. For instance, none of us had used Three JS. We leveraged ChatGPT for buggy starter code, then speed-read documentation to fix the bugs. Learning so many tools was undoubtedly the hardest part.
Accomplishments that we're proud of
We're proud to have a polished frontend and a fully-functional backend. The embeddings and dimensionality reduction work without a hitch. We're especially proud that we were able to achieve al this with very little experience in the tools we used. Additionally, two of our team members had no prior hackathon experience and no web experience beyond HTML/CSS, and they made big contributions to our ML algorithm scripts and React UI.
What we learned
- Effectively leveraging ChatGPT: We learned that small prompts asking for minimal code samples are often most reliable, while larger pieces or pieces building on each other are often hard to trust. GPT cannot replace documentation and normal first-principles thinking; once we realized that, we started working much faster.
- Time management: At the beginning of the competition, we spent too much time trying to fix bugs and perfect small features. Towards the end of the project, we set more deadlines on ourselves to ensure that we'd finish on schedule.
- Tools: ThreeJS, MongoDB Atlas, Sentence Transformers, Flask
What's next for TartanSpace
We hope to launch this live on campus and start connecting people ASAP (it's already at tartanspace.xyz!!) More questions will be added, and ideally we'll have a way for users to message each other and control the visibility of their responses.
Built With
- amazon-web-services
- flask
- javascript
- mongodb
- pca
- react
- sentencetransformers
- three.js
Log in or sign up for Devpost to join the conversation.