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},
],
);
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.
Top comments (0)