The amount of hours we spend sitting down has dramatically increased at the turn of the last century. Days are spent in classrooms and libraries, with little physical strain. Naturally, we compensate for our lack of daily exercise by going to the gym and doing workouts that are 'unproductive,' meaning this exertion does not provide any real service to the community. We want to offer people a means to locate potential volunteer opportunities to 'exercise' while also helping and making connections as well. We have come to such a disconnected world that it is a shame we cannot use our technology to bring us meaningfully closer. This app uses technology for that reason: to bring people together, not just on the internet, but in person with real conversations and real stories.

What it does

Our app organizes and analyzes volunteering opportunities near a user’s location. To do so, we gathered the zip code of the user, which is sent to Google’s Firebase Realtime Database. We take advantage of the database’s ease of cross-platform synchronization with a Python crawler. This crawler takes in the zip code from the database, then makes a request to with that area code. This allows for scraping of meaningful information on all possible volunteer opportunities in the area. Furthermore, we incorporated a machine learning text classifying to perform analytics on the descriptions of the opportunities words used in the descriptions of the opportunities are analyzed by a text classification machine learning algorithm to determine which opportunities involve physical exercise. Finally, the pruned data is sent to the android app over the database and neatly displayed to the user.

How We Built It

The crawler is written in Python, while we used Android Studio with Java to create the user interface portion of the application. We decided on Beautiful Soup's Python library to facilitate crawling the website, and after retrieving the necessary data for each volunteer opportunity, we incorporated linear regression to predict the physical exertion required. To train our machine learning algorithm, we gave it a large dataset of volunteer opportunities in New York City that we manually classified. Finally, the appropriate opportunities are displayed to the user, with Firebase facilitating the transfer of data between crawler and android app.

Challenges We Faced

Initially, we struggled to implement Firebase’s Realtime Database’s synchronization between the Python crawler and Android Studio, primarily due our inexperience dealing with Google’s newer development tools. We then had to come to a conclusion on the choice of machine learning algorithm for our dataset of volunteer opportunity descriptions. We found that linear regression would be our best choice, with an accuracy of about 70%. Much improvement can be made to the algorithm to improve its performance.

Accomplishments We're Proud Of

GoodWork showed our team the power of Google’s Firebase Realtime Database, as we were are able to see our uploads in real-time. This allowed the communication between Android Studio and the Python crawler to be particularly swift and provided the user with a smooth experience. Furthermore, machine learning was a new skill to our team and successfully integrating it into our project was quite rewarding.

What We Learned

By developing this project, our team garnered vital experience in databasing, web crawling, and machine learning. We hope to continue to hone these newfound skills in further endeavors.

The Future of GoodWork

We plan on extending the machine learning capabilities of GoodWork so that the user can target specific muscle groups when searching for potential volunteer opportunities. Furthermore, we want to broaden our experimentation with more machine learning algorithms to maximize accuracy and display only the most relevant and useful service projects

Share this project: