Try it out here

Default Login Credentials (for the demo site)

Username: William
Password: 12345

Motivation

With existing solutions, finding a volunteering opportunity is not hard. However, the way that volunteering opportunities are presented on these applications, akin to shopping for volunteering opportunities on an e-commerce platform, makes volunteering a one-off event that fails to encourage long-term commitment.

Furthermore, aspiring volunteers are also unable to find out more about an organisation beyond the usually general details that an organisation may choose to present. We also noted that many volunteers tend to volunteer in hopes of learning something from the process. Hence, we aimed to create a platform that encouraged volunteering by offering volunteers an opportunity to learn, facilitating a buddy system, and in the process hope to encourage widespread and long-term participation in volunteering.

What it does

The main objective of the app is to promote the process of volunteering, and make it more accessible than before. We achieve this via a three-pronged approach.

Firstly, we allow for users to match up with buddies that may have the same volunteering interests as themselves. This gives them a chance to participate in these volunteering opportunities with a friend, or find out more about an organisation from an experienced volunteer. Through this, volunteers will feel more inclined to volunteer together through positive peer pressure.

Next, our app optimises searching for volunteering opportunities. Instead of a monotonous text search, aspiring volunteers can describe their interests/passions into a text box and the app, using the power of Natural Language Processing (NLP), returns suitable volunteering opportunities that best fits their interests.

Lastly, many volunteers want to learn something out of the process of volunteering. Hence, we made a custom AI model that suggests training programs for the organisations to offer to volunteers. This encourages more volunteering by emphasising on mutual benefits of volunteering opportunities.

We also have basic features of volunteering platforms such as the ability to view other's profiles and experiences they have written regarding a volunteering opportunity, as well as organisational page, reviews and more!

All in all, our app aims to lower the barriers to entry for volunteering, and make volunteering easier and more widespread. 😊

How we built it

Frontend

For the frontend, we used ReactJS and Material-UI libraries hosted on a Linux server served with Nginx

Backend

For the backend, we used NodeJS and MongoDB along with fastify as our web server. Our ML models were trained using a CPU server.

For the auto-generation of training programs suggestions, we used LBL2Vec, an NLP model for unsupervised text classification based on the paper Lbl2Vec - An Embedding-based Approach for Unsupervised Document Retrieval on Predefined Topics by T. Schopf. Given the title and description of a volunteer activity, the model assigned two predefined categories with the highest similarity score to that activity. These categories were then mapped to relevant training programs, among which the first three were suggested to the user.

For the text-search, we used Sentence-BERT’s’ MSMACRO models to calculate the cosine-similarity between the user’s description of their interests and the volunteering opportunities available.

Challenges we ran into

Firstly, since the auto-generation of training programs was a niche feature specific to our app, there was no open source dataset we could use. The 24-hour time limit also prevented us from labelling our own dataset from scratch, which meant we were unable to utilize the readily available state-of-the-art models such as BERT. Thus, we set our sights on unsupervised algorithms, among which Lbl2Vec stood out the most for its performance and straightforward implementation. This model, however, is one of the newer developed algorithms; our data preprocessing and fine-tuning were completed without much guidance.

Secondly, the multitude of features of our app, each of which relied on different frameworks, meant that assembling them together was quite an obstacle. For instance, linking the model scripts in Python to our NodeJS server required a slightly convoluted workaround i.e. passing data via stdout. This issue was compounded by the fact that we only had 1 production server to work with.

Thirdly, our members have different frontend coding habits with varying sense of aesthetics. Reaching a consensus and ensuring that the UI turned out neat and organized with all components synchronized was a challenge we had to overcome. On the other hand, the diversity in perspectives proved to be one of the team’s greatest assets; the end product is elegant yet dynamic, a mix-and-match of styles that brought out the best in each of us.

Accomplishments that we're proud of

  1. Full-stack development (frontend, backend API, backend NLP) within 24 hours!
  2. Created a custom trained model from scrapping to deployment
  3. Built something that would make our world a little nicer :)

What we learned

  1. Teamwork is invaluable, and that the undying bug we were grappling with for an hour could probably be squashed in a minute by someone else with a new perspective
  2. Even among ML algorithms, NLP models can be exceptional and yet utterly incomprehensible at the same time
  3. The frameworks and libraries used to built the app, and most importantly, how to connect all of them together

What's next for NotSus

  1. Better fine-tuning of the interest search, buddy search and training program generation models
  2. More refined UI/UX
  3. Touching up on general features such as Profiles Pages etc.
Share this project:

Updates