Inspiration

When I listened to Eitan Bernath describe how people are overwhelmed with recipes yet struggle to actually cook them, it immediately resonated with me. Recipes today live everywhere. Cookbooks, Instagram reels, YouTube videos, blog posts, and saved screenshots. The real friction happens between seeing something you want to cook and actually having the ingredients in your kitchen to make it.

My partner and I had discussed building a solution in this space for quite some time. We wanted something that connects inspiration, pantry awareness, and grocery execution into one seamless system. This hackathon was the push we needed to finally bring that idea to life.

ShelfChef was built to reduce the gap between inspiration and execution. The focus was not just on recipe discovery, but on helping people actually cook more.


What it does

ShelfChef is an AI powered kitchen companion that connects pantry tracking, recipe importing, grocery list management, and cooking tools into one unified platform.

Users can:

  • Import recipes from any URL using structured Schema.org parsing with AI fallback
  • Manually add and organize recipes in one central collection
  • Track pantry items with expiration dates and storage locations
  • Ask “What can I cook?” and see match percentages based on pantry contents
  • Receive AI generated recipe suggestions based on available ingredients
  • Generate grocery lists from recipes
  • Scan barcodes using ML Kit to auto populate grocery items
  • Move purchased items directly into pantry inventory
  • Use built in kitchen tools such as timers, converters, recipe scaling, and substitution guides

The goal is simple. Make it easier to turn a recipe idea into a meal on the table.


How we built it

ShelfChef is a native Android application written in Kotlin using Jetpack Compose and Clean Architecture with MVVM.

The architecture separates Presentation, Domain, and Data layers to ensure maintainability and scalability.

Core technologies include:

  • Room with SQLite for offline first local storage
  • Retrofit and OkHttp for networking
  • Jsoup for structured recipe extraction using Schema.org
  • OpenAI GPT-4o-mini for recipe parsing fallback and AI suggestions
  • Firebase Auth and Firestore for authentication and cloud sync
  • Google ML Kit and CameraX for barcode scanning
  • RevenueCat SDK for subscription management and entitlement handling
  • Kotlin Coroutines and Flow for asynchronous state management
  • Hilt for dependency injection

A custom FeatureGateManager controls access to premium features by observing RevenueCat subscription state. This enables a meaningful free tier while providing a clear upgrade path for advanced functionality.

This was my first full mobile application built and shipped end to end, including managing builds, signing keys, and Google Play Console testing tracks.


Challenges we ran into

Recipe parsing reliability

Not all websites implement structured data consistently. I built a layered extraction strategy that first attempts Schema.org parsing and then falls back to GPT-4o-mini when structured data fails. Balancing reliability, cost, and latency required careful design.

Subscription and identity synchronization

Linking Firebase authentication with RevenueCat entitlements across devices required precise identity handling. Logging in and out had to correctly map or reset subscription state.

Seamless system integration

This project integrates multiple external systems including OpenAI, RevenueCat, Firebase, Google ML Kit, Open Food Facts, and Google Play Console. Ensuring all services worked together smoothly required significant debugging and testing.

Designing a freemium experience

I wanted the app to feel valuable in the free tier without feeling restricted. Designing upgrade prompts that feel natural rather than intrusive required thoughtful UX decisions.


Accomplishments that we're proud of

  • Shipping a fully functional production ready Android app
  • Designing and implementing a complete freemium subscription model with RevenueCat
  • Building an AI assisted recipe parsing and suggestion system
  • Creating an offline first architecture with optional cloud sync
  • Successfully integrating multiple APIs and services into a cohesive experience
  • Turning a long discussed idea into a real, working product

This project represents more than a hackathon entry. It represents a full product lifecycle from idea to release.


What we learned

This project taught me how much goes into shipping a real mobile application beyond just writing code.

I learned:

  • How to configure and test releases in Google Play Console
  • How subscription entitlements and offerings are structured in RevenueCat
  • How to securely manage API keys and build configurations
  • How to architect a scalable mobile app using Clean Architecture principles
  • How to design proper feature gating logic for monetization
  • How to coordinate authentication, cloud sync, and subscription systems together

Using Claude Code as a development assistant accelerated progress, but architectural decisions, debugging integration issues, and product design required careful human reasoning.

This was my first complete mobile application and it gave me a deep appreciation for system orchestration across services.


What's next for ShelfChef

The next step is expanding ShelfChef beyond Android.

I plan to:

  • Port the app to React Native to support Android, iOS, and web
  • Improve AI recipe generation with more contextual pantry intelligence
  • Add cookbook collection support while respecting copyright constraints
  • Expand social features such as sharing recipes or grocery lists
  • Continue refining the subscription experience and paywall optimization

ShelfChef began as a hackathon project, but it has the foundation to evolve into a full cross platform cooking ecosystem.

The ultimate goal remains simple. Help people cook more often by removing the friction between inspiration and action.

Built With

  • camerax
  • clean-architecture-+-mvvm
  • coil
  • compose
  • firebase-auth
  • firebase-firestore
  • firebase-storage
  • flow-+-stateflow
  • google-credential-manager-(google-sign-in)
  • google-ml-kit-(barcode-scanning)
  • gson
  • hilt-(dependency-injection)
  • jetpack-compose-(material-3)
  • jetpack-datastore
  • jsoup-(schema.org-parsing)
  • kotlin
  • kotlin-coroutines
  • okhttp
  • open-food-facts-api
  • openai-api-(gpt-4o-mini)
  • retrofit-2
  • revenuecat-sdk-+-revenuecat-ui
  • room-(sqlite)
Share this project:

Updates