According to the National Organization on Disability, nearly ⅕ of all Americans -- more than 54 million men, women, and children -- have a physical, sensory, or intellectual disability. These people are often ignored, mistreated, and not given adequate support by society.
The best supporters are those who have gone through similar experiences, so our web application Sensei strives to provide the best support for these individuals in need by connecting them with mentors, or “senseis”. Mentors are people who started in the same spot and have navigated through their physical, sensory, or intellectual disability during their lives. They are best qualified to use their life experience to provide support to mentees with similar disabilities.
What it does
Sensei is a web application that allows people with special needs or disabilities to connect with mentors who have similar experiences. Sensei has an accessible and inclusive user interface design with accommodations such as text-to-speech compatibility.
Users sign up as either a mentee or mentor and will provide a personal biography about their experiences. Our application contains a machine learning model that will utilize users’ personal biographies to calculate how similar users are to others in the database. Each mentee will receive a list of possible mentors sorted by similarity, and, by the same token, each mentor will receive a list of possible mentees. Users will then be able to read through biographies and decide who they would like to possibly connect with. If a mentor/mentee pair both mutually want to connect, they will form a match, receive each other’s contact information, and gain access to a shared bulletin board that supports multimedia file uploads. Here, mentors will be able to send periodic assignments, check-ins, and image/video content to their mentees, which helps provide them with step-by-step advice.
How we built it
We built the large majority of our project using Node.js, MongoDB, Express, and React.js, which altogether served as the frontend and backend of our project. On the frontend, we utilized MaterialUI and various other libraries in order to develop a clean, yet simplistic user interface that can cater to our audience’s needs without complicating the process of connecting with a mentor. We also made use of tools like the Cloudinary SDK for mass content upload (images and videos) into a centralized storage bucket. On the backend, we wrote our various REST API routes with Node.js and Express, and persisted our data in MongoDB.
For calculating the similarity between two user biographies, we built a machine learning/Natural Language Processing model using Python and the Gensim library. We processed a group of selected Wikipedia articles into our training data, and then we trained the ML model using Doc2Vec, an unsupervised algorithm which is used to represent every document as a vector. After we got the model working, we had to improve its accuracy using Hyperparameter Tuning. We went a step further by serving up this machine learning model via an API exposed by a Flask web application — this enabled us to scale up our web application and process a much greater volume of prediction requests, which will inevitably be useful as we grow our project and expand to fit more users on our network.
Challenges we ran into
The biggest challenge we faced was making the user interface of the website as accessible as possible for a wide variety of users. We did research on different disabilities and how to accommodate them, and then we tried our best to build as much as possible into the website. This is something we’ve never had to do before when building a web application.
In addition, getting the machine learning model right was tricky, especially because we don’t have the most experience in ML. We had to think carefully about how our training data would be structured and how to apply the model after it was trained. We also spent a significant amount of time tuning the model’s parameters using various techniques that we researched to make the model as accurate as possible. In the end, we are very happy with the accuracy of the ML model and how it turned out overall. This is also our first time integrating a machine learning model into the backend of a web application, which was a great learning experience.
Accomplishments that we're proud of
We’re proud of the fact that we were able to work towards an issue that we all care deeply about, and deploy an extremely functional project that has the potential to change lives. Throughout the past few years, we have been involved as disability rights advocates in one way or another, be it getting involved in our high school’s Best Buddies club or taking part in youth initiatives to raise awareness for stigmatized topics like autism or disabilities. We’re hopeful that our project, Sensei, will assist members of these communities in forming invaluable bonds with mentors/mentees who have their advice, love, and compassion to share with each other.
What we learned
Throughout this hackathon, we gained plenty of technical experience in web development, machine learning, and utilizing a microservice-based architecture. First and foremost, we picked up experience with machine learning and integrating a machine learning model into a web application. We served up our machine learning model on a Flask web server running on a Heroku Dyno, enabling us to query our model for rapid predictions with just one API call to our microservice. Additionally, one of our “backend specialists” took on the task of developing the frontend of our project, and learned how to utilize UI frameworks like Material UI and React Bootstrap in order to design clean, functional components for the frontend of our application. Finally, through this project, we learned about how to design websites with accessibility and inclusiveness in mind. More specifically, we spent a lot of time researching UI and UX techniques that are especially accommodating towards those with disabilities. We also learned about the screen-reader functionality on modern browsers and how we could write our code in such a way that those who are vision-impaired are able to utilize our website to the same extent as those without.
What's next for Sensei
In the future, we plan to create group connect functionality which would allow the users to create support groups and talk about their journeys. In addition, we also plan to have a dashboard which allows the mentees to track and discuss their progress as they get over obstacles. We would also like to have SMS reminders for scheduled mentor-mentee appointments, possibly using CRON jobs alongside the Twilio SDK.