Inspiration
We kept running into the same problem: we'd come home from the grocery store, forget half of what we bought, and watch it expire in the back of the fridge. On top of that, we wanted to track our macros and get real cooking ideas from the food we already had. Nothing connected all of those pieces, so we built the app we wanted to use ourselves.
What it does
Ripe is an iOS app that turns a grocery receipt into a smarter kitchen.
- Scan a receipt and Ripe turns cryptic lines like
ORG SPNCH 5OZinto clean pantry items ("organic spinach, 5 oz"). - Know what's about to expire. Every item gets an estimated shelf life, so nothing sits forgotten.
- Get meal plans built around the food that's expiring soonest and the calories and macros you have left today, synced with Apple Health and your calendar.
- Chat with a chef that suggests swaps and recipes and only changes your plan once you approve.
- Stay safe. Your allergies and diet are enforced in code, so a recipe containing an allergen never reaches you.
How we built it
- App: Expo and React Native, with Expo Router, Apple HealthKit and calendar integration.
- Backend: A Node 22, TypeScript, Express 5 API running on Google Cloud Run.
- Database and auth: Supabase Postgres with row-level security on every table, plus Google sign-in.
- Gemini on Vertex AI: Gemini 2.5 Flash reads receipt photos, plans meals and powers the chef chat, always returning structured JSON that our server validates before anything is saved. A smaller Gemini 2.5 Flash-Lite model runs alongside the chef to catch hidden allergens that keyword lists miss, like soy sauce in pad see ew.
- Perceptron reads receipt text first, and Gemini reads the photo directly if the scan fails.
- USDA FoodKeeper and nutrition data are the source of truth for shelf life and nutrition, so Gemini fills gaps instead of making things up.
- VEYZL audits our AI routes.
We designed Gemini to be useful but never the final authority. Allergies come from the database and not the prompt, allergen items are removed before the model sees them, and any generated recipe that still contains one is rejected.
Challenges we ran into
Apple Health was by far our biggest headache. Getting it to sync reliably with the app was finicky, and it took far more time than we expected. Beyond that, turning messy receipt text into trustworthy pantry data and keeping AI output safe around allergies took a lot of careful validation.
Accomplishments that we're proud of
We built a full-stack iOS app, from receipt photo to meal plan, that we'd willingly use every week. Getting this many services working together (Gemini, Perceptron, USDA data, Supabase, Apple Health and calendar) was a big win for a team of three.
What we learned
- How to use Supabase to build a secure, well-structured backend with row-level security.
- What it takes to build a native mobile app and not a web app, including its permissions and platform quirks.
- How to treat an LLM as a helper that gets checked, not as a source of truth.
What's next for Ripe
- Monetization: either a monthly subscription or optional ad-supported uploads, where watching a short video unlocks a receipt scan.
- Shared family pantry so households can track food together.
- Notifications sent straight to your messages to nudge you before food expires.
- Partner with companies to push certain food products and make the app sustainable.
Built With
- expo.io
- express.js
- gemini
- google-cloud
- google-oauth
- ios
- node.js
- perceptron
- postgresql
- react-native
- supabase
- typescript

Log in or sign up for Devpost to join the conversation.