Inspiration
This started with a conversation with a wildlife filmmaker, who told us about research from the Cornell Lab of Ornithology showing that North America has lost nearly three billion birds since 1970. A huge part of the problem is habitat loss in the everyday spaces around us, yards, parks, and school grounds that are landscaped with ornamental plants that do not support local wildlife. That conversation made us want to build something that has a positive impact on native plants and animal habitats. When the challenge brief came out and asked us to make climate action local and real, it clicked. We realized schools were the perfect place to focus: most campuses have green space that does little for wildlife, and eco-clubs are full of students who want to help but have no easy way to do so. EcoLoco became our answer, a tool that turns a vague, overwhelming problem into something a student can actually act on right outside their classroom.
What it does
EcoLoco identifies the plants around our users, and then based on the user's location, presents its nativity status along with recommended next steps: either how to enhance it if it's native, or how it could be managed and replaced if it's not. Our app also gives recommended actions based on environmental problems it detects in the user's local area. Our EcoScan feature lets users walk their school campus scanning multiple plants and receive a biodiversity score from 0 to 100 based on how well their grounds support local wildlife. From there, EcoLoco generates a ranked action plan of the highest-impact native plants to add, shows how much each one would improve the score, and drafts a letter to school administration requesting permission to plant them, which the student can review and edit before sending it themselves.
How we built it
EcoLoco is built with React Native and Expo for the frontend, handling everything from camera operation to UI design. On the backend, we used Python and Flask, along with the OpenAI API to run the GPT-4o-mini model for plant identification, native status assessment, biodiversity insights, and letter generation. We also used iNaturalist, a public service with real wildlife observation data, to cross-reference plant sightings near the user's location. The biodiversity score is calculated in Python using a weighted formula based on native status, wildlife support level, species diversity, and invasive penalties. To connect the two ends, we ran Flask locally using a virtual environment and used Expo Go to preview and test the app on our phones so that we could simulate what users will see.
Challenges we ran into
The first challenge was figuring out what type of app to pursue, along with its scope. Days of brainstorming as a team and discussing how we wanted to make an impact led us to come to a consensus that formed a strong foundation for the project to come. Next, we had to research and figure out what tools to use, and how to use them. It took a late-night grind to finally set up our error-free expo-go project with flask and the virtual environment. It took even more time to get smooth connection between the frontend and backend. We also made sure to refine the specific output we wanted from the AI in order to improve accuracy and transparency. Finally, we had a challenge that was greater than just project scope: time zones. As a team that is made up of members coast to coast in the US, we had to schedule meetings appropriately. We also had to get familiar with working as a team, because many of us were meeting each other for the first time. It took time for us to get used to this obstacle, often because it made development difficult, but ultimately it pushed our design to be polished in a way we never anticipated.
Accomplishments that we're proud of
We are proud of the accuracy we were able to achieve with our prompt engineering, and how the app handles uncertainty: directing users back to a human expert when the AI isn't confident. We're also proud that EcoLoco doesn't just raise awareness. A student can walk their campus, get a real biodiversity score, see exactly what's helping and hurting, and leave with a ranked plan and a draft letter ready to send to their principal.
What we learned
We learned a lot about what it takes to develop as a team: how to split up tasks, get everyone on the same page, defining the scope, etc. We all learned a lot more about our respective roles, whether it be prompt engineering, API calls, frontend-backend connection, frontend design, etc; by the end of the week, we felt significantly more confident than we did at the beginning. But most importantly, we all understand our native landscapes much more. We learned about how native plants protect other native lives, like butterflies, and we learned how the best gardens aren't only made from native plants, but from a mix of different native plants, that each help the soil and local climate in their own different ways.
What's next for EcoLoco
Our team plans to actively use EcoLoco in our own school communities. Right now, the app runs on our personal computers over a local network, which isn't ideal for sharing it widely, but getting it on a proper server like Railway would allow anyone to use it, anywhere. We'd also love to integrate real verified plant databases like the NWF Native Plant Finder and USDA PLANTS to replace our current AI estimates with confirmed records. Beyond that, we want to let schools track their biodiversity score across multiple audits over time and give users the ability to filter recommendations by what they want to attract, whether that's butterflies, birds, or native pollinators.
Built With
- chatgpt
- claude
- expogo
- flask
- inaturalist
- javascript
- python
- react-native
Log in or sign up for Devpost to join the conversation.