As incoming first year students, who we spend the next year of our life living with is a scary decision. Hearing stories about those “nightmare roommates” and the nerve-wracking experience of moving away from home and moving in with someone you have never met is a scary thought. Thorough introspection resulted in a list of basic priorities that could be used to bring together like-minded individuals. Of all the stress associated with going to university, our goal was to minimize that of finding a roommate. This issue, though commonly attributed with first year students, is universal to university students. Finding roommates is no easy task, and generally a lot of work which university students do not have time for. We envisioned a common platform for students to find potential roommates with whom they can have an enjoyable living experience. Speaking to our target demographic, we heard overwhelming support for the idea simply based on their own experiences. Ingenuity is birthed from adversity; this is no secret. Faced with a nerve-wracking situation and nightmarish anecdotes, we sought out to find a feasible way to minimize our fears and stresses. With that, Dioscuri was born.
What it does
The website is directed at university students who are struggling to find compatible roommates for their time spent studying on campus. We aim to create a smooth and easy experience where finding roommates no longer contributes to the stresses accompanying residency. We take a simple and efficient intake form to assess users. Using data, we compile resident “profiles” to pair potentially successful partners for sharing a residence. Potential candidate profiles are presented to the user along with an opportunity to message the candidate in order to further investigate compatibility. Successful pairing of roommates removes both users from the database to avoid repeats. The goal is to successfully pair two individuals with similar values to be roommates.
What makes this unique
Other options exist for finding roommates. There are University roommate request forms, Facebook groups, Instagram stories, and so on. But here's what makes our platform unique:
- Rather than praying that a University finds the right match for you and then leaves you stuck with that roommate, our platform gives you multiple options and the chance to refresh your top matches
- Unlike Facebook groups, our platform does the matching for you so you don't have to scroll through people's posts/profiles or praying that other people reply to your post/profile
- Unlike Instagram stories, you don't risk getting no response or finding no relevant matches due to your social media following being small because we store a large database of users
- You have the ability to actually talk with and get to know your roommate before choosing to share any personal information and get in contact outside the site, ensuring privacy, comfort, and safety
- You don't have to worry about accidentally contacting someone who already has a roommate, since matched roommates are removed from the database
In summary, we provide an in-depth, data-driven, focused platform solely for finding a roommate. We cut out unnecessary distractions and help you feel at-ease finding that perfect roommate, because you know that everyone else on this platform is looking for someone to room with, their roommate profile/information is on full-display for you, and you don't get forced into picking your top match.
How we built it
Subeka designed the website's U/I on paper and then converted it to a Canva graphic. From there, Jennifer wrote the HTML, utilizing Bootstrap's open-source CDN, to create the website's static pages and connect static components (e.g. the home page to the profiles page). Lavan and Lucifer worked together to create a Flask backend that serves Jennifer's HTML to the browser and receives data from the only non-static page (the form itself). From there, the two of them created a FireStore database, since non-relational document files were much easier to understand for complete beginners to backend/database infrastructure. The Flask app received the post request from Jennifer's HTML form and stored values into a document on the Firestore database. From there, Lucifer designed an algorithm to match two users based on their form data, and Lavan implemented the algorithm in Python by searching through other users in the database, calculating compatibility scores of this user and others with Lucifer's algorithm, and returning the top matches to Jennifer's HTML using Flask templates.
Challenges we ran into
Subeka, Jennifer, and Lucifer had never done hackathons nor written full-fledged coding projects before, and Lavan had never worked in-depth in Python. He had also never worked with Flask or any sort of database before. Thus, the group spent a lot of time simply debugging basic things like converting graphics into HTML sites, displaying the HTML with Flask, putting data into the database, and retrieving values from the database. In order to match candidates, we were forced to evaluate candidates on a spectrum rather than assigning certain choices as wrong and certain choices as right. The form was not intended to judge their personality, but rather to match them with students that may carry similar if not the same priorities in order to minimize incompatibility. This made designing a matching algorithm more difficult than we had originally thought.
Accomplishments that we're proud of
We are quite proud of creating a functional, aesthetic, innovative, and useful full-stack application that can actually be deployed in just 24 hours, especially when a majority of us had never written full-fledged code before. We are specifically proud of coming up with such a cool idea that solves a problem we're all currently facing (most of us are still looking for roommates for our first year at Waterloo!!) and learning so many new technologies in such a short amount of time.
What we learned
We learned so many hard and soft skills over the weekend.
- The entire team learned a lot about the planning process, and it really streamlined our development workflow. Coming up with a plan for how to split the workload, when each of us would be accomplishing certain tasks, and what specific end product we wanted to achieve shaved off lots of time that would have been wasted scrambling to figure out the next step in our project.
- We also did a decent amount of market analysis prior to the hackathon weekend to identify a key issue for university students and have an innovative idea in mind ahead of time, which allowed us to focus on creating graphics, writing code, and testing our final product. # Hard Skills: Through attending workshops, talking to mentors, and attending many JamHacks workshops, our team learned many new things
- Jennifer learned about HTML, CSS (specifically flexbox!), and Bootstrap
- Subeka learned about HTML, CSS, Canva, wireframing and U/I design, and Git
- Lucifer learned about HTML, CSS, Flask, FireStore, and Git
- Lavan learned about Flask and FireStore
What's next for Dioscuri
The usage of Dioscuri has been optimized for universities and university students. However, expansion is just a hop, skip, and a jump away.
- Including a vast range of residences and apartments, we can very easily expand the service and the website to select between student and general users
- By taking in different data and using the same data matching algorithm, we can adapt the idea easily and expand outwards to benefit a larger demographic
- With time, we can have a more detailed form to compare larger amounts of data and improve our algorithm’s accuracy
- As well, we could implement a fully-functioning chatting platform to allow potential roommates to share personal details securely and answer prompts given by the site to further test compatibility