When we heard about the different challenges in this Hackathon, the common theme was well-being. We asked ourselves what tool an employee could use that would improve his/her quality of life. We knew that volunteering is an incredibly fulfilling hobby as it consists of meaningful societal work and a great way to meet new people and friends. Additionally, volunteering helps reduces stress, anger, and anxiety, which is a great way to improve mental health. So we figured that a way to connect volunteers with companies would make is easier for the volunteer to get involved, as well as get a position that they will enjoy and thrive in.
What it does
Volunteers sign up through a quick form consisting of a few questions about what they enjoy doing, and then get matched with companies who are looking for volunteers with their skillset and interests. Availabilities are synced up with google calendars by comparing the schedules of the volunteers versus the events in which help is needed, and when the volunteer accepts the job, their calendar gets updated. Volunteers who will attend the same event get added to a group chat, in which they can talk through multiple different messaging services.
How I built it
Using pycharm as our IDE, we used Python Flask to create our UI that shows a sign up form for the user to fill in. The information filled in is then put in our Firebase Database to store and is also prompt the user to login and connect their Google calender with our web app. This gives our app access to the calender events in which we are able to find the empty time slots using the Google calender API and Google OAuth 2.0. Each user will have a calculated heuristic that determines what kind of volunteer work that is suggested to them and will also match people with each other, using the Zendesk API to connect the two people through their preferred form of messaging.
Google Calender API, Google OAuth2.0, Python, Google Firebase, HTML, Zendesk API
Challenges I ran into
Making technologies interact with each other was a struggle, as each platform had to get the input of the previous, and it had to be modified to fit that technology every time. This made the separation of tasks useful up until we had to reconvene.
Accomplishments that I'm proud of
Figuring out a clean solution for the matching algorithm after many hours of debugging was nice. Finally getting the information flow from calendars to forms to scripts, etc, was cool to see.
What I learned
We learned how to delegate responsibilities efficiently within a team setting, giving the roles of project manager, front end, database, and API, and the importance of rapid programming. Each of us were assigned our tasks and set a deadline for it so that we can come together, combine our parts, then delegate responsibilities again accordingly until we finished our product.
What's next for Donate Time
The Donate Time project is a functional prototype, but has room for expansion. Chiefly, once the service garners enough data points, such as a volunteer's rating of how they found their role at an event, and how helpful the company found specific volunteers to be, we can train a supervised machine learning algorithm to even better predict what matches would be successes on both ends, and continuously tailor the job matching for the volunteers and companies. We also have many additional functions and data visualization techniques we had ideas for that could make it easy for companies to see on their calendar which jobs were covered and which still needed an employee for example. We also will add a much better UI for the experience to be seamless.