DEV Community

Renee Chung
Renee Chung

Posted on

I learned how to build an AI wrapper by shipping a real app

I'm not an AI researcher. I'm a backend developer with 16 years of Laravel and PHP experience who wanted to build something with AI.
So I did what made sense — I built a real app.

The idea

Simple Plate is an AI recipe generator. Tell it what ingredients you have, your dietary preferences and cuisine mood, and it generates three recipe ideas for you. Simple problem. Simple solution.

What I didn't expect was how much I'd learn about working with AI APIs by actually shipping something real.

The "AI" part is simpler than you think

The core AI integration is straightforward:

dartfinal response = await openai.chat.completions.create(
  model: 'gpt-4o-mini',
  messages: [
    {'role': 'system', 'content': systemPrompt},
    {'role': 'user', 'content': userPrompt},
  ],
);
Enter fullscreen mode Exit fullscreen mode

That's it. The API call itself is not the hard part.

Prompt engineering is everything

The hard part is getting consistent, useful output. My prompts evolved significantly:

  • First version: vague, inconsistent results
  • Added dietary restrictions: better but still repetitive
  • Added cuisine mood: more variety
  • Added avoid list for recent recipes: solved repetition
  • Added pantry scoped history: solved repetition properly

The prompt is where 80% of the real work lives in an AI wrapper.

The non-AI parts took longer

Honest truth — the OpenAI integration took a day. Everything else took weeks:

  • Apple App Store: 8 rejections before approval
  • Email verification with Supabase and custom SMTP
  • Deep linking on Android
  • RevenueCat subscription setup across iOS and Android
  • UTC timezone bugs in recipe scheduling
  • Image generation and caching in Supabase storage

What I'd do differently

Start with the prompt engineering earlier. I spent too long on UI before nailing the core AI output quality. The prompt is your product — treat it that way.

The result

Simple Plate is live on both the App Store and Google Play. Built solo in about a month using Flutter, Supabase, OpenAI, and RevenueCat.

Zero subscribers so far. But it's real, it's live, and I learned more about AI integration by shipping it than I would have from any tutorial.

Sometimes the best way to learn is to just build something real.

Apple Store | Google Play Store

Top comments (0)