Inspiration

My closest friend lives deep in rural Mississippi, and the nearest store carrying even a basic first aid kit is over an hour away. That distance is not just inconvenient, it can be genuinely dangerous. I found myself asking: what would he do if he or someone he loves needed urgent care and could not make that drive? The answer has existed for thousands of years: plants. Long before pharmacies, communities around the world relied on the natural remedies growing right outside their doors. I wanted to bring that knowledge into the modern era, building a tool that could tell someone exactly which plants in their immediate surroundings might help with a specific ailment. The best part? My friend does have internet access out there, just barely, but enough. That small thread of connectivity was all the justification I needed. If one bar of signal is all it takes to bridge the gap between someone and centuries of botanical medicine, this app is worth building.

What it does

The Rural First Aid Agent allows users to input their location, upload an image, and describe their symptoms. From there, the app queries a curated ethnobotanical database and returns a list of plants native to that region known to help with the reported ailment. If no region-specific matches are found, the app falls back to a broader search, returning plants known across the user's country that may still be accessible or recognizable nearby. The goal is simple: no matter where you are, you should be able to find a natural remedy that is actually within reach.

How we built it

I researched and compiled multiple regionally confirmed ethnobotanical databases covering TCM, Ayurvedic, African, European, and North American traditions, then merged them into a single MongoDB collection with a tradition filter field and one vector search index. The ethnobotanical collection gets searched first using keywords Gemini derives from the user's uploaded image, detected location, and symptom input. MongoDB Atlas Vector Search uses those keywords to pull semantically relevant results regardless of exact wording, so something like "burning skin" can still match a record describing "wash for irritation and itching." If the ethnobotanical database returns no results, it falls back to Duke's Phytochemical Database, but that secondary search is cross-referenced against the iNaturalist API. iNaturalist identifies plants actually observed in the user's geographic area, and only plants appearing in both the Duke's results and the local iNaturalist observations get returned. That way even the fallback results are grounded in what's realistically growing near the user. The iNaturalist layer is what gives the fallback its credibility. Without it, Duke's would just return globally relevant plants. With it, the results are still tied to the user's actual surroundings.

Challenges we ran into

-Deployment (It was my first time ever deploying and I ran into a lot of issues when starting) -Lack of available information (While there were a bunch of different plant API's and databases I could use, most of them rarely had what I needed. For example I needed safe, nontoxic, medicinal plants, with proper preperation methods IF needed. More often than not there was a lot of gaps in the information and have needed to combine and edit different data tables to make my unified ethnobotany collection in MongoDB) -Ai Implementation (This was a first for me as well, this was quite the hurdle to jump over. I had to better understand google's agents and interface a lot more than what I expected. Nothing learned however is nothing gained)

Accomplishments that we're proud of

  1. Finishing my first hackathon! This was a very exciting achievement for me and I can't wait to do more in the future
  2. Building on a budget! I am a self supporting college student right now so available funds are far and few in-between, this lead me to find alternative solutions to otherwise pricy decisions.
  3. Implementing AI and understanding it to a much deeper level than before this hackathon
  4. Connections and Networking opportunity (I added a couple of judges on Linked In, hoping to connect with them soon) ## What we learned I learned that while syntax and coding is a difficult skill, the real challenge for me was the architecture and design behind the app. Figuring out what the workflow should look like to produce the best results, how to accomplish goals within the constraints of a free tier budget, and how to properly leverage Gemini's tooling were all things that pushed me harder than writing the code itself. ## What's next for Herbal First Aid Agent I want to work on collecting much more data to provide much more accurate responses based on location, I want to add a cache system so users can save responses and access them even without internet, I want to add a more refined frontend and my ultimate goal is reduce time for analyzation because the response time took about a minute which is frustrating for consumers

Built With

  • africanmedicinalplants.org
  • axios
  • ayurvedic
  • bcrypt
  • beanie
  • docker
  • dukes-phytochemicaldb
  • eppo-golbal-database
  • fastapi
  • gemini
  • gemini-text-embedding-004
  • googleadk
  • herb2+tcmwiki
  • inaturalist
  • jwt
  • mongodb
  • mongodb-mcp
  • motor
  • nixpack
  • pydantic
  • python-dotenv
  • railway
  • react
  • tailwind
  • uvicorn
  • vercel
  • vite
Share this project:

Updates