For anyone worn out by tracking food, Just Add turns "what's for dinner?" into a real meal in seconds, by only ever adding to what you already have.

Nothing is counted, nothing is scored, and nothing is ever taken off your plate. It's live on the App Store, built solo during Shipaton, and entered for the Influencer Award (our main category), the RevenueCat Peace Prize, the RevenueCat Design Award and #BuildInPublic.

Inspiration

I built Just Add for my girlfriend. She has lived with food noise for a long time: the constant hum of what to eat, whether it's the right thing, and what it says about her. Every app she tried wanted to count something, and every count was one more thing to get wrong.

The brief for this category asked exactly the question I wanted to answer for her: what can I add to make this meal more satisfying? So I built the opposite of a tracker. The first screen new users see is a short note from me saying just that.

What it does

  • Ask however you like. "Leftover pasta and pesto" is a complete request. So is a photo of what's in front of you, or "feeding the kids and I've got nothing".
  • Pick from three real dinners. Each is built around what you already have and what you're craving, then rounded out with protein, fibre and healthy fat. You never see that as a number, only as a meal you'd actually want to eat.
  • Cook it. A shopping list sorted by aisle (with a widget for the shop), and a cook mode with big single-action steps, timers that survive a locked phone, and hands-free help when your hands are covered in flour.
  • Keep what worked. Everything you make lands in your cookbook. After a meal the app asks one question, "Did that hold you?", and never turns the answer into a chart.

How I built it

React Native (Expo) on iOS with a Swift widget, a NestJS API on DigitalOcean, PostgreSQL with pgvector for taste memory, Redis for caching, Clerk for sign-in and RevenueCat for subscriptions. There's even an MCP server, so your shopping list works inside Claude.

Every answer goes through three steps, in this order:

  1. A distress check comes first. A phrase screen and a small classifier look for signs of restriction or distress. If they find it, no food is generated at all: you get a warm message that points you to real support.
  2. One OpenAI model call writes all three meals, knowing your allergens, your tastes and what it suggested last time. The answer streams, so meals appear as they're written.
  3. A deterministic gate checks the result. Plain code, no AI, reads every finished answer for your allergens, language that moralises food, health claims and anything that measures what you eat. A failing plate is written again once, then withheld.

RevenueCat runs a real free tier (typed meals every day, plus the cookbook and cook mode) and two plans: $39.99 a year with a 7-day trial, or $6.99 a month with a 3-day trial, adding photo, voice and a larger daily allowance. Entitlements are checked on the server, and over 2,700 automated tests run on every push.

Challenges I ran into

Better food, or a guarantee? The first version picked every suggestion from a table already filtered for allergens, so an unsafe suggestion couldn't even be expressed, and the food was dull. Opening the menu to any food in the world (labneh, Red Leicester, a Thai curry paste) made the meals far better and made the gate the only thing between the model and an allergy. So it's tested from both sides: it must catch an allergen hidden in a recipe step, and it must not flag "ask for no fish sauce" or oat milk, because a filter that blocks too much fails silently.

Speed, or safety? Every typed or spoken request waits almost a second for the distress check, which never runs in parallel with the meal: nothing about food should exist for someone it catches. So the screen narrates the wait, and the meals stream in the moment they exist.

One answer, or three? The famous jam study says fewer choices lead to more action, but a 2010 meta-analysis of 50 experiments found the average effect was essentially zero. So three meals aren't about cognitive load, they're about who decides: one suggestion is a verdict, three is a choice, and a single call writes all three.

Can a model keep its own rules? Research on multi-turn edits shows models restate their constraints almost perfectly and then break them anyway, up to 99% of the time. So every change you ask for is a brand-new answer that goes through every check again.

Accomplishments that I'm proud of

  • An app that takes mental load away. Most food apps end up adding work: logging, counting, streaks to keep alive. Just Add asks for one sentence and gives you dinner back, with nothing to keep up with tomorrow.
  • Real meals, in real situations. Leftovers, a restaurant menu, a travel day, feeding the kids: every answer is a named meal you'd actually want to eat, built to hold you, with safety that lives in code, not in a prompt.
  • A demo video and a website that match the product. A motion-designed film cut on a musical grid from real app footage, and a landing page at justadd.app, both held to the same no-counting rules as the app.
  • A fully automated TikTok channel. An autonomous pipeline makes and posts two kinds of video to @justadd.app: "what can you cook with X" recipes and story-led marketing clips. Claude writes the script, OpenAI's image model draws the food, ElevenLabs does the voice, sound effects and music, Remotion renders it, and the Post Bridge MCP publishes it. It posted 30 videos in its first two weeks.

What I learned

  • A prompt is not a safety system. A watchdog study found harmful restriction and body-image content in roughly a third of answers across six major AI platforms. Checks have to be structural, run before and after the model, and tested in both directions.
  • Every question you ask is itself food noise. Our first onboarding had two grids of foods you love and foods you don't, and every early user tapped straight past both. An adaptive swipe deck of about a dozen cards works because the cost is effort per answer, not the number of answers.
  • Helped, or watched? The line between the two is whether the app shows what you told it or what it inferred about you. So your stated likes are editable, and anything learned from behaviour only ever shapes the suggestions, never appears as a profile or a score.
  • Describe the food, never the person. Research on praise shows that praising a person teaches them their worth depends on how they did, and positive affirmations can make people with low self-esteem feel worse. So the app compliments the dish, and the harm research points at comparison, not company, which is why there's no leaderboard.
  • Choice is about autonomy. One suggestion is a verdict; three is a decision that stays yours.

What's next

Android (React Native makes it a configuration change), a cookbook that notices what you've learned to cook, and tables for everyone you feed, where anyone can be added without an account.

Built With

Share this project:

Updates

Submission history