SimpleMeals: Cutting Through the Noise

Inspiration

I built SimpleMeals out of frustration. The modern recipe ecosystem is broken. If you google "chicken recipe," you are bombarded with SEO-optimized blogs, pop-up ads, and a 2,000-word essay about the author's childhood before you even see an ingredient list.

I wanted a tool that respected my time and my groceries. I didn't want to browse; I wanted to cook. The inspiration was simple: Ingredients + AI = Dinner No fluff. No scrolling. No ads. Just a direct path from "What's in my fridge?" to "Here's what you can make."

How I Built It

The core philosophy of the engineering was Simplicity and Speed.

  • Native Android (Kotlin + Jetpack Compose): I chose native development to ensure the app felt snappy and premium. Compose allowed me to iterate on the UI rapidly, creating a clean, modern interface that gets out of the way.
  • The Brain (Google Gemini): The "chef" is Google's Gemini AI. Instead of a static database of recipes, the app generates them on the fly. This means it can handle weird combinations that a database would reject.
    • Implementation: I used structured prompt engineering to force the AI to return strict JSON data, ensuring the app can always parse and display the result beautifully, regardless of what the AI "thinks" of.

Challenges I Faced

  • The "Hallucination" Problem: Early versions of the AI would sometimes invent ingredients the user didn't have. I had to refine the system prompt strictly: "Use ONLY these ingredients, plus basic pantry staples."
  • Latency vs. UX: AI takes a few seconds to "think." To keep the app feeling fast, I focused heavily on the UI states—playful loading animations and skeleton screens so the user never feels like the app has frozen.
  • Camera Integration: Implementing the "Scan Ingredients" feature was tricky. Balancing speed (using a thumbnail) vs. accuracy (uploading a full image) required robust error handling and asynchronous coordination between the Camera API and the AI service.

What I Learned

  1. Constraint is Creativity: By limiting the app to just recipe generation (no social feed, no grocery delivery integration yet), the core feature became incredibly polished.
  2. AI as a Function: Treating the LLM not as a chatbot but as a deterministic function (String -> JSON) unlock massive potential for meaningful apps.
  3. User Trust: Users must trust the app because it doesn't waste their time. High utility equals high retention.

Built With

Share this project:

Updates