Inspiration

Everyone, everywhere deserves to know where they can find food in a convenient way, regardless of their level of access to technology.

Half of our group was raised near rural areas of Washington where food security and good connection are both genuine issues. Residents there are still using 3G technology, and navigating traditional search engines and chatbots to find resources to get food is an extremely painstaking process. Loading screens on loading screens, overloads of information, and the barrier of having to know where to look.

In theme with DubHacks, our group felt compelled to bring our technological proficiency to solve real issues from our personal experiences. We wanted to build something that would help real people, realistically.

What it does

Tumbleweed is an SMS/Voice-based chatbot that connects people in food deserts to nearby food resources, assistance programs, and community events with no need for an app, browser, or fast internet. It makes sure that the only time the user has to actively spend time with the chatbot is during sending and reading, not waiting for things to load.

How we built it

Tumbleweed is build around one constraint: people living in rural food deserts with low-connectivity cannot rely on heavy web apps, mobile downloads, or slow loading screens over 3G networks. Every layer in our stack is designed to do all of the processing that would be painstaking for users in the cloud so that the user only every interacts with a fast, lightweight text or voice message.

  1. Message Layer (Photon) Instead of building a front-end app, we used Photon to bridge iMessage and SMS directly to our backend. When a user texts the phone number, Photon captures that incoming message and forwards the payload to our backend webhook.

  2. Python Backend Layer (Railway) We deployed our Python FastAPI backend on Railway, which keeps our service low-latency and persistent as it handles live Photon webhook events. When a message arrives, the backend checks User Context in MongoDB, retrieving the user's last 6 messages, preferred language, and saved ZIP code or county so returning users never have to repeat their location.

  3. AI Layer (Claude API) Our core conversation logic is powered by Claude API, where we make sure it is bound by three constraints:

  4. Claude is never allowed to hallucinate a food bank, address or number. It must use tool calling and query our verified database.

  5. Claude automatically detects and mirrors the user's language, generating culturally familiar recipes when users text in lists of raw pantry ingredients.

  6. Responses must stay concise (Under 300 characters when possible), warm, respectful, and free of too much jargon.

  7. Database Layer (MongoDB Atlas) To make sure Claude's responses are real, we built a geospatial database on MongoDB Atlas that is full with USDA SNAP Retailer Locater data, ZIP code centroids, and hand-curated rural food resources across Adams County, WA and Ferry County, WA. When a user texts a town name or zip code, we resolve its coordinates in a collection for them. We also have an aggregation query to calculate exact driving distance in miles, filtering for open days, SNAP acceptance, and custom curated notes for each user.

  8. Voice Synthesis, Fast Delivery (ElevenLabs) For users who prefer/require audio accessibility, the Python backend sends our generated response to the ElevenLabs API to generate natural-sounding speech in the user's language. The backend then dispatches that voice response back through Photon, delivering the information to the user's ear within seconds.

Challenges we ran into

Designing the system architecture was extremely hard, as we had to rapidly familiarize ourselves with a brand-new tech stack and integrate multiple unfamiliar tools under tight time constraints as students. Connecting a persistent messaging pipeline with Photon, hosting our Python backend on Railway, and connecting together Claude tool-calling, ElevenLabs voice synthesis, and MongoDB spatial queries took significant trial, error, and teamwork.

Accomplishments that we're proud of

We're really proud of building an actual project despite using extremely new and unfamiliar tech stacks along with it being something that demonstrates our commitment to civic engagement. We're proud that we created something that bridges the food access, language, and technological gap for underserved communities.

What we learned

Building for a vulnerable, constrained user base requires designing strictly around real-world limitations rather than flashy features. Because our users are on slow 3G connections or navigating language barriers, being as direct as possible while staying within our boundaries. We learned how to push all the complexity to our backend so the user experience stays as effortless as sending a text message.

What's next for Tumbleweed

Next, we plan to scale our curated geospatial data coverage from Washington counties across food deserts nationwide, along with launching automated SMS reminders for local farmers' markets and food bank distributions. To keep Tumbleweed accessible for end users, we aim to build a sustainable funding model through community partnerships, municipal grants, and sponsorships with regional food banks and civic organizations

Built With

Share this project:

Updates

Submission history