https://github.com/Joshua-mb/shiny-barnacle
FreshStart: Building with Empathy at the Table
Created by Grant Clark, Joshua Mburu, Wahbo Sharif, and Josue Flores Sanchez
Inspiration
Food insecurity affects over 1 in 10 households in Minnesota, yet the experience of accessing food shelf resources is often fragmented and stressful. People don't always know what's available before making a trip, and once home, turning a random collection of donated items into an actual meal can feel overwhelming.
We wanted to change that. FreshStart was inspired by a simple question: what if technology could meet people where they are — at home, with what they have — and help them cook with confidence? We wanted to build something that didn't feel charitable or clinical, but genuinely useful and dignifying.
What We Built
FreshStart is a mobile app with three core features:
- Pantry Scanner — users scan items at home using their camera for instant ingredient recognition
- Live Food Shelf Inventory — browse what's available at local food shelves before making a trip
- AI Recipe Engine — receive meal suggestions generated from the intersection of what you have and what's nearby
The core matching logic prioritizes recipes that maximize ingredient overlap, minimizing waste. If a user has $n$ pantry items and a food shelf carries $m$ additional ingredients, the engine surfaces recipes satisfying:
$$\text{score}(r) = \frac{|\text{ingredients}(r) \cap (P \cup S)|}{|\text{ingredients}(r)|}$$
where $P$ is the user's pantry set and $S$ is the local food shelf inventory — essentially a coverage ratio rewarding recipes you can actually finish.
How We Built It
We built FreshStart as a working prototype using React Native for the cross-platform mobile interface, a Node.js/Express backend, and PostgreSQL for inventory data. The AI recipe layer integrates the Claude API to generate contextual, ingredient-aware meal suggestions. For barcode and label scanning, we used device camera APIs paired with an ingredient lookup service.
The food shelf inventory layer was designed as a mock-but-scalable data model, structured so real shelves could push live updates through a simple dashboard — making the system deployable across Twin Cities food resource networks.
Challenges
The biggest challenge was data dignity — designing an experience that never signals to a user that they're in a scarcity situation. Every UI decision, from copy to color, went through that lens.
On the technical side, ingredient normalization was harder than expected. "Pinto beans," "canned beans," and a barcode for Goya Pinto Beans all need to resolve to the same node in the recipe graph. Building a fuzzy matching layer that handled real-world label noise took significant iteration.
Built With
- anthropic-claude-api-(claude-sonnet-4-6)
- edge-functions
- javascript
- node.js
- postgresql
- react
- realtime)
- supabase-(auth
- tailwind-css
- vite
Log in or sign up for Devpost to join the conversation.