It's estimated that around a third of produce grown in the US is left in the soil because it's uneconomical for farmers to harvest. Although some local organizations exist throughout the US to go to the farm, harvest leftover crops, and redistribute it to the community, there are many areas without these organizations. Our goal is to make it easy for individuals to contribute to their communities' food security regardless of existing support networks.
🌽What it does
Glean is a platform for volunteers to find information about farms, schedule and log visits, and keep track of their impact on their communities.
After signing in, volunteers are able to input their availability. Glean then schedules them to an open slot with a local farm. Volunteers are able to find the farm and directions to it in our integrated map. After a harvesting session, volunteers can log the total weight for each of the types of produce they collected that day. They can also use our crop-recognition model to help inputting their contributions. In the long term, Glean keeps track of how much food a volunteer has harvested and a volunteer can progress through the different harvesting ranks by volunteering and recovering more food.
💻How we built it
First created low and high fidelity mockups on Figma before progressing on the actual app development. Then, our designer created illustrations to go along with the application.
We used React Native to build out our interface and navigation. We used the Google Maps API to embed our map with custom markers and custom links which will open Google Maps for more information. We trained our crop-recognition model using a Kaggle dataset in a Kaggle notebook (to around mid-90% test accuracy), then exported the model for use with TensorFlow.js to make predictions completely locally.
We used GCP Cloud Functions with Cloud Firestore to build an easy-to-deploy serverless backend. We also use the cloud functions to handle our scheduling algorithm. We also used Twilio's SMS functionality to send reminder texts when it gets close to a user's scheduled visit 📱.
😓Challenges we ran into
- Debugging front-end dependencies 😩
- TensorFlow.js doesn't support all the types of model layers that standard TensorFlow supports. We had to change up our data preprocessing strategy since TensorFlow.js didn't support our desired preprocessing layer.
- Learning about the Google Maps API and react native wrapper was a fun challenge, but it had interesting quirks like having to adjust the zIndex for some elements to render on top.
- Finding suitable matching algorithms
☺Accomplishments that we're proud of
- Training a model on an unseen dataset to mid-90s% test accuracy
- Learning how to convert and deploy a neural network to run locally in TensorFlow.js
- Designing and building so many pages on the front-end
- Integrating with custom backend endpoints in 24 hours
🤔What we learned
- Jacob's first time building an app with React Native 😤(navigation patterns are interesting to work with, and flexbox is a savior)
- How to use Twilio's SMS product programmatically
- Dealing with image gallery permissions using Expo and image decoding/conversion to tensors with TensorFlow.js
😎What's next for Glean
We'd like to continue building out the platform, making the scheduling more robust, and thinking through how to integrate with local organizations as well.