-
-
1024 × 1024 uncropped Rice app icon
-
Rice landing page
-
New user — choose Cook with what you have (Cook now) or Set your week
-
Home screen with a weekly plan set
-
Press + to cook with what you have (Cook now) - scan or type
-
Reorder or swap dinners in your weekly plan
-
Swap a planned dinner
-
Take a photo of your kitchen
-
Review photos before analysis
-
Confirm, change or add ingredients
-
Cook with what you have (Cook now) results — best match and near matches
-
Recipe card — ingredients, also visible toggles to method and nutrition
-
Settings and account controls
-
Rice Pro subscription
-
Saved recipes
Inspiration
Rice started because after a long day, the last thing I want to do is sit down and surf pages and pages of recipes to decide what I will eat for the next several days.
The ingredients are always at the bottom of a very long, I’d say bottomless, page. I scroll down, copy everything into Notion, after I’ve pasted ingredients for all the recipes, I will add up quantities with Chat GPT and turn it into a shopping list. I like good food. I like trying recipes. But I hate everything that is required to make eating happen.
I assumed I couldn’t be the only person frustrated by this, so I started asking people how they deal with dinner. I tried to speak to a deliberately varied group — younger, older, different careers, a student, a boxing trainer, a middle aged couple. Read hundreds of Reddit comments and recorded the ways people manage dinner in a spreadsheet. I’ve found theme nights, rotating meal lists, freezer systems, shared notes, “Unless I’m craving something. Open the fridge/freezer. The oldest in there gets cooked/eaten.”
Everyone had invented some kind of workaround for this very ordinary problem that comes back every day. Now, most products solve the burden of choosing by giving us even more things to choose from. Rice came from the opposite idea: one good decision, made, beats a hundred possibilities.
There were two moments we wanted to solve.
The first is immediate: I have food. What can I cook right now?
The second is repetitive: I do not want to make this decision five more times this week.
So Rice has two core loops.
In Cook Now, you scan or type the ingredients you have and Rice gives you three recipes you can make.
In Plan My Week, Rice chooses five dinners for the week, creates the shopping list and gives you three swaps. If something does not work for you, change it. Otherwise, stop choosing.
What we built
Rice is now live on the App Store and Google Play with 117 recipes.
Cook Now recognises ingredients from a photo or manual input, lets the user confirm what it found, then returns three recipes.
Plan My Week chooses five dinners using rules around cuisine, protein, cooking time and recent repetition. Each plan has three swaps, enforced server-side, and Rice combines the ingredients from all five dinners into one grouped shopping list. Free users get one weekly plan; Pro users get unlimited plans.
Nutrition information (calories, protein, carbs and fat) is available for most of the library, but it does not drive recommendations. Rice is not built around hitting calorie or macro targets.
We also added saved recipes, scan history, anonymous use before sign-up and push notifications, including a Sunday reminder to set a weekly plan. Rice is deliberately restrained, so we use copy to carry more of the personality. The notifications are one of the places where the brand can be a little louder. They should be useful enough to earn the interruption, but written to catch attention and, ideally, make someone smile.
How we built it
Rice is a two-person project.
I’m Alexandra, and I owned the product side: the original idea and user research, product strategy and scope, feature decisions, flows, UI/UX, visual identity and brand, recipe/content work, monetisation, testing and QA, landing page, launch and social strategy. I was also the person continuously deciding what Rice should, and, increasingly, should not, become.
Ilia owned the engineering side. He built the iOS and Android apps, backend, architecture, payments and AI pipeline, including testing different models and approaches for ingredient recognition and recipe ranking. He also challenged product decisions when the technical implications changed what made sense to build.
There was a clear division of ownership, but we shaped the product together, challenged each other’s decisions and tested everything together.
Rice is built in Flutter with one codebase for iOS and Android. The backend is Supabase. RevenueCat handles subscriptions and PostHog handles analytics.
Recipes are currently managed in Notion and published to Supabase with a Node script. Ilia is now building us an admin panel so that this no longer involves treating Notion like a CMS.
Scanning was one of the parts that changed most while we built it.
On iOS, Apple Vision extracts label text on-device and Rice creates several fixed zoomed crops. The image, OCR text and crops are then sent to the model, which maps what it sees onto our ingredient taxonomy. Android currently sends the image directly.
Once the user confirms the ingredients, our app finds the recipes that fit them and an AI model reranks the strongest results. If the AI call fails, Rice falls back to the database ranking rather than leaving the user with nothing.
A lot of the technical work ended up being about striking a balance that would make Rice smart enough to be useful without making a simple dinner decision expensive, slow or fragile.
How Already became Rice
The first version was called Already, as in, you already have dinner. When I started working on the app, I didn't want the design to simply say “meal planning” with vegetables and recipe cards. I started by trying to design the feeling after the decision has already been made, e.g. I explored a sigh, a closed menu, a finished plate, everything being handled/completed.
That led me to a sleepy, satisfied cat, then to exploring mascots more seriously. A hare took me into Aesop's fables, and eventually I found The Fox and the Cat, which fitted the product almost too well. Already was a red cat (red because tomato, ketchup, cooking), a much louder visual identity, elaborate screens and animation.
I kept redesigning it because something felt wrong. Eventually I realised we had created a contradiction because the product was supposed to reduce cognitive load, but the interface itself was constantly asking for attention. An app someone might use every day had to feel invisible.
I started aggressively stripping it back and Already became Rice. Ordinary, something that can fit into any cuisine, that supports the meal without needing to become the meal.
We removed the fable, but kept the lesson (one good decision, made, beats a hundred possibilities). The same rule started affecting product decisions too. Whenever a feature made the core experience harder to understand or introduced a dependency we were not ready to own, we cut it.
The hard parts
Food data is much more chaotic than it looks.
One recipe asks for a teaspoon of ginger; another asks for three centimetres. The same ingredient appears under different names, levels of specificity and measurement systems. Some ingredients are essential, some interchangeable, some optional.
This becomes very obvious when I scan my fridge and the matcher confidently returns tomato salad as my best match and I do not have a single tomato…
We spent a surprising amount of time on ingredient taxonomy, normalisation, required versus optional ingredients and what it actually means for a recipe to be a “match.”
Small product ideas also had a habit of opening much larger problems. If someone swaps one dinner, the shopping list has to know which ingredients disappear, which are still needed elsewhere and whether quantities should change. Smarter inventory introduces another layer again.
Content was another thing we initially underestimated.
Our working recipe library grew the way home recipe collections often do: our own and family recipes, recipes shared by friends, things adapted from bloggers and websites — including a few that no longer exist — and material collected over years. The photography is similarly mixed between original images, stock photography and some AI-generated or AI-assisted images.
That let us build and test the product quickly, but it also made the next problem very clear: a commercial recipe product needs a deliberate long-term system for original or licensed content, attribution, photography and contributions from cooks.
At one point I became worried about something more basic: I wasn't using Rice very much myself. (I did start regularly using Rice once the product settled into its current form)
But at that moment that was uncomfortable, because dinner planning had been my problem in the first place. After thinking about it, I realised I already knew most of the library. These were recipes I had collected, cooked or come across over years, so when I wanted something genuinely new (often), I still ventured out into the wild.
That, in turn, exposed a bigger problem. A new user may find 100 recipes exciting, but after enough time those recipes become familiar to them too. The interface should limit how many choices someone has to make at once, but the library underneath it cannot feel equally limited.
That changed how we think about content. Original recipes and contributions from cooks, I now understood, is what I would want to solve not only licensing but would become a part of what would make Rice worth coming back to and offer exciting opportunities of collaboration with people across my favorite industry.
What we learned
A two-month hackathon sounds like a sprint, but it did not feel like one. There were weeks when we moved very quickly and weeks when we lost momentum. I underestimated how much pacing would matter.
I also spent time looking sideways at what everyone else was building. The more I watched other Shipaton projects, the harder it became to judge our own. Eventually I had to put the blinkers on, tunnel vision, and get back to Rice.
I thought I would build in public throughout the hackathon too. I tried Twitter because that seemed like a more sustainable platform that required text, tweet an update and no video production house needed. It did not feel natural and I produced very little.
Seven days before submission, I’ve struck gold with content ideas for Instagram.
If you think about it, the product went through the same process. I reopened Figma repeatedly because things still felt wrong. We changed the name, abandoned animation concepts, removed screens and cut features we had already spent time on.
The useful lesson was very simple: time already spent is not a reason to preserve a bad decision. If I remember, this has a name, the sunk-cost fallacy.
The biggest lesson was scope.
Food looks like a narrow problem until you start pulling at it. Everyone eats, but everyone has different preferences, habits, leftovers, favourite recipes, ingredients they refuse to eat, diets, partners, children, and their own invented system for making dinner happen.
We discovered far more things we could build than we could possibly build in two months. Learning how to cut back has been invaluable.
What's next for Rice
We have several competing bets for what Rice should do next.
Recipe import is one of them. People already have recipes they trust — in Notes, screenshots, bookmarks, cookbooks, saved posts and forgotten browser tabs — and eventually Rice should be able to plan around their food, not only ours.
There are other forms of personalisation we want to explore, for example allergies and dietary restrictions, calorie ranges for people who it is important, and clearer explanations of why a particular meal was recommended. The larger idea is to gradually require less explanation from the user.
A much better version of Rice would remember the kitchen it lives in and learn from how you actually use it. It would know the staples you tend to keep around, what you bought for this week’s plan, what you have probably already cooked, what needs using first, and roughly what is left; at the same time, it would learn taste from behaviour rather than from a giant onboarding questionnaire — what you repeatedly choose, swap, reject or ignore, whether you tend towards spicy food, or whether a 45-minute recipe is something you will happily cook on Sunday and never touch on Wednesday. The recommendations could then become much more specific: not simply three recipes that technically match a list of ingredients, but three things you genuinely want to eat tonight, accounting for time, effort, equipment, quantity, preferences, dietary constraints and what you have eaten recently. Eventually, Cook Now and Plan My Week should feel like one continuous system: if I plan five dinners on Sunday and change my mind on Wednesday, Rice should already understand the plan, what I bought for it and what I have probably used, and suggest something else without quietly wrecking Thursday and Friday in the process.
And underneath all of that, the recipe itself has to be excellent. Clear ingredients, sensible measurements, short steps, useful substitutions and portions that can change.
Some of the next decisions are more practical. We have already had users tell us they would share Rice with family members if it were available in Spanish, so localisation is another direction we are considering.
But our most immediate problem is much simpler, it’s reach.
We started App Store and ChatGPT ads three days before submission. Right now, distribution and product development are really a chicken and egg problem. We need more people using Rice, because real use will tell us which of these bets is worth pursuing and what Rice actually needs to become.
One of my favourite things about launching Rice has been seeing where it has travelled. So far, people in Sudan, Austria, Spain, the US have downloaded it. Food is a universal language, so is the daily question of “what am I eating tonight?”. It is a small thing, but we are very proud that something we built around our own kitchen table is already being used far beyond it.
Since August 1st, Rice has stopped feeling like a hackathon project we would abandon after submission.
We want to keep going.
Built With
- dart
- deno
- flutter
- onesignal
- openai
- posthog
- revenuecat
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.