MVP proposal · clickable demo

Recipes that keep up with your cycle

The first release does one job well: it tells a woman what to cook this week for where she is in her cycle and how she eats, then writes the shopping list. Everything here works with simple rules and example data, so we can put it in front of real users quickly and cheaply.

Watch the walkthrough Open on Loom
4
capabilities in v1, one loop
0
AI calls on user data
~$23
a month to run at beta scale
10–12
weeks to a closed beta

The loop we want to test

  1. Tell us about youGoal, diet, optional cycle dates
  2. Get recipes that fitFiltered, ranked, explained
  3. Plan the week3–5 dinners, swap freely
  4. ShopOne merged list by aisle
  5. Tell us how it wentThumbs, cooked, check-in

If women come back each week to plan, the idea works. Every screen below exists to make that happen or to measure it.

Screen 01 · Capability 1

A two-minute quiz, not a form

Fourteen short screens, one question each, with a progress bar and an illustration throughout. Single answers move on by themselves, and every question can be skipped.

What it does

Asks about her goal, age group, energy, what gets in the way, diet, allergies, foods she skips, weeknight cooking time, household, optional cycle dates, reminder and name. Two info screens explain the four phases and our privacy promise before we ask anything sensitive.

Why it's in v1

Quiz-style onboarding feels like being looked after, not filling in a form, and each answer visibly shapes the plan. It's also our best first-week signal: how far people get, and what they skip.

Under the hood

Answers are saved as she goes, so she can come back to it. Sign-in (Alt Auth, our own WNC auth service: magic link, Apple or Google) comes at the end, once there's a plan worth saving. Health answers are stored apart from the account record, behind explicit consent.

What we measure

Drop-off per screen, skip rate per question, and how many share cycle data. If few do, the phase feature needs rethinking.

Try it:Open in the app

Screen 02 · Capabilities 2 and 3

"Your first week is ready"

A short build screen runs the real rules, then the results page shows what she gets and, line by line, why.

What it does

Ticks through matching recipes to her phase, removing what she avoids, planning four dinners and writing the list. Then it shows the numbers and a "because you said…" list tied to her answers.

Why it's in v1

It closes the loop from quiz to value straight away. Showing why each choice was made earns trust before we ask her to sign up.

Under the hood

Nothing is faked: the checklist runs the same ranking and grocery code as the app, and the numbers are the real plan.

What we measure

Quiz-to-signup conversion, and whether people who read the "because" list keep their plan.

Try it:Open in the app

Screen 03 · Capabilities 2 and 4

Today: a plan for her day, not just a feed

Today shows where she is in her cycle and a short plan she can tick off: a breakfast idea, a one-minute read for her phase, tonight's dinner and a wind-down with calm sounds. Above it, five drawn faces ask about her energy today, and below sit recipes picked for her, each with a sentence on why it fits.

What it does

Ranks the recipe library for this person, today. Tapping "Drained" or "Low" on the energy faces moves iron-rich, slow-release meals up straight away.

Why it's in v1

It's the core value. The "why it fits" line is what sets us apart from a recipe app, and it builds trust because the logic is visible.

Under the hood

Rules, not AI: filter, score, explain. The weights live in the database so the nutritionist can tune them without a release.

What we measure

Recipe opens from the feed, how often she logs her energy, and whether higher-ranked recipes get cooked more often.

How a recipe gets its place

StepRuleEffect
FilterDiet, allergens, foods she skipsRemoved, never relaxed
ScoreTagged for her current phase+3
Each nutrient her phase needs+1
Each nutrient her goal needs+1.5
Liked / hidden before+2 / −5
ExplainBuilt from the tags that matched"Iron and vitamin C for your menstrual phase"
Try it:Open in the app

Screen 04 · Capabilities 2 and 4

A recipe that explains itself

The recipe view puts the reason first, then the actions: add it to the week, more like this, fewer like this, I cooked this.

What it does

Scales ingredients to her household and lists allergens on every recipe. Feedback changes the next ranking straight away.

Why it's in v1

Feedback is "support that adapts over time" at its simplest. It also tells us what people cook, not just what they browse.

Under the hood

Curated content, entered in our self-hosted admin panel and approved by a nutritionist. No generated recipes, so no allergen surprises.

What we measure

Cooked per recipe, the like-to-hide ratio, and which "why" lines lead to adds.

Try it:Open in the app

Screen 05 · Capability 3

The week, planned in a minute

Five weekday dinner slots. Fill them from her top picks, swap any she doesn't fancy, or leave nights empty.

What it does

"Fill my week" takes the best-ranked recipes not already planned. "Swap" brings in the next best. Nothing is locked in.

Why it's in v1

Planning turns inspiration into a habit. A weekly plan is the retention event the whole MVP is built to test.

Under the hood

One API endpoint builds the plan from the same ranking. Plans are stored per week, so we can see repeat behaviour.

What we measure

Plans made per user per week, how many slots get filled, swaps per plan, and week-4 retention.

Try it:Open in the app

Screen 06 · Capability 3

A shopping list that writes itself

Every planned dinner flows into one list. It merges duplicates, scales to her household and groups items the way a supermarket does.

What it does

Two recipes with lemon become "2 lemons". Spices and oils are marked as worth checking in the cupboard first. Tick items off in the shop.

Why it's in v1

It's the practical payoff that brings people back on shopping day, and it's cheap to build well.

Under the hood

Ingredients carry an aisle and a unit, so merging is plain code. "Copy list" covers sharing, without integrating with a delivery service.

What we measure

List opens, items ticked, and copies. Heavy copying would tell us a delivery integration is worth building next.

Try it:Open in the app

Screen 07 · Trust

Her data, in plain sight

The profile screen shows exactly what we hold, lets her change any answer, and deletes everything in two taps.

What it does

Lists the goal, diet, foods to avoid and cycle numbers, and how much feedback she's given. "Delete my data" asks once to confirm, then really deletes.

Why it's in v1

Under UK GDPR, cycle and diet data is health data. Being clear and easy to leave builds trust, and the law requires it.

Under the hood

Row-level security, so a user can only read her own rows. Export and deletion run as a proper job, with a set retention period.

What we measure

Nothing about health. Analytics see events like "plan_created", never "luteal phase, PCOS".

Try it:Open in the app

How it's built

One small server in London, about $23 a month

The cheapest setup that is still safe for health data: the API, database, sign-in and admin panel all run on one EC2 instance in eu-west-2, managed with Docker Compose. It's plain Node and Postgres, so we can split parts out onto managed services later without rewriting anything.

LayerChoiceWhyTrade-off
FrontendReact Native + ExpoOne codebase for both stores, push reminders, over-the-air fixesLess polished than fully native for heavy animation
ServerOne EC2 t4g.small, Docker ComposeA fixed, low bill. Everything in one place, easy to reason aboutOne point of failure. We patch the OS and keep it secure ourselves
DatabasePostgres 16 on the same serverNo RDS fee. Relational data, and the rules are readable in SQLBackups and upgrades are our job. Move to RDS when uptime matters more than cost
AuthAlt Auth, our own WNC serviceAlready built and in production: magic link and OTP, Google and Apple sign-in, TOTP two-factor for the admin panel, Stripe subscriptions. No per-user fees, data stays in LondonOne more container on the server, and its updates are ours to ship. Apple sign-in still needs a $99 a year developer account
AdminSelf-hosted admin panel (AdminJS)The nutritionist edits recipes, tags and rule weights in a browser. No CMS subscriptionSimpler than a CMS: no drafts or image pipeline. Fine for about 150 recipes

Monthly cost, on-demand, London (eu-west-2)

ItemSize and usageUSD / month
EC2 t4g.small2 vCPU, 2 GB RAM, about $0.0188 an hour × 730 hours13.72
Public IPv4 address$0.005 an hour, charged even on an Elastic IP3.65
EBS gp3 disk30 GB, encrypted, plus weekly snapshots≈ 3.50
S3 backupsNightly pg_dump, 30 days kept, a few GB≈ 0.30
Amazon SESAbout 2,000 sign-in emails at $0.10 per 1,0000.20
Route 53 + domainOne hosted zone, a .com spread over 12 months≈ 1.60
Data transfer outUnder the 100 GB a month AWS gives free0.00
Umami, Expo EASUmami runs on our own server. Expo's free tier covers beta builds0.00
Atflow (WNC)Workflow automation: reminders, alerts and ops workflows. In-house, so no new licence cost—
Infrastructure totalAbout £17 a month. A 1-year Savings Plan brings it to about $18≈ 23
App store accountsApple $99 a year, plus a one-off $25 for Google Play. Not infrastructure, but needed≈ 8.25

Prices are AWS on-demand list prices for London as of November 2026, from AWS and third-party price listings. Check the AWS Pricing Calculator before committing. EBS and S3 figures are estimates. When to upgrade: beyond a few thousand active users, or once downtime starts to cost us, move to a t4g.medium (about $14 more) and then to RDS for the database (about $25–30 more with backups included).

Keeping one server safe (see GDPR for the full list): only port 443 is open, SSH access goes through AWS Systems Manager with no port 22, disks are encrypted, security updates install automatically, and restoring from a snapshot takes about 30 minutes. This demo is a static site, and the ranking rules in src/rules.js are the same functions the Node API would run, with tests.

Privacy & AI

Trust is the product

Collect the least health data that still makes recommendations useful, keep it in the UK/EU, never use it for ads, and keep generative AI out of anything user-facing in v1.

What we collect

  • Email, for sign-in only
  • Goal, diet, allergies and dislikes, to filter and rank
  • Optional last period start and cycle length, to work out the phase
  • Saves, ratings, "cooked" and a weekly check-in, to adapt the feed

What we don't

  • Date of birth, address, location, phone number
  • Daily symptom, mood or flow logs
  • Contraception, fertility, pregnancy, diagnoses, medication
  • Free-text health notes, contacts, advertising IDs

In v1

Rules, not a model

Filter, score, explain. Predictable, testable, and easy to explain to a user who asks "why this?". AI is used only behind the scenes, to draft recipe tags and descriptions that a person reviews, and no user data goes in.

Later, with trust

Help, not advice

Natural-language search ("quick, no dairy, high iron"), smart ingredient swaps checked against allergens, and a carefully scoped companion. Only with a provider that keeps no data and offers UK/EU processing.

Not at all

Medical claims

No diagnosis, no reading of symptoms, no recipes nobody has reviewed, and no identifiable health data sent to a model without explicit consent and a zero-retention agreement.

GDPR: how the setup meets it

Cycle and diet data is health data, a "special category" under UK GDPR and EU GDPR. That sets a higher bar than ordinary personal data. This is how each requirement maps to the build. It is a working plan, not legal advice: a privacy lawyer reviews it before launch.

RequirementWhat it asksHow we meet it
Lawful basis
Art. 6 and 9
A legal reason for each use, and explicit consent for health dataContract for the account and plan. A separate, unticked consent box for cycle dates, stored with a timestamp and the wording version. Without consent the app works and simply skips phase ranking
Data minimisation
Art. 5
Collect only what the purpose needsTwo cycle numbers, not a tracker. Age band, not date of birth. No symptoms, location, contacts or advertising IDs
Privacy by design
Art. 25
Protection built in by defaultHealth answers in a separate table from the account. Every optional question can be skipped. Analytics and error reports never receive health fields
Her rights
Art. 15–21, 7(3)
Access, correction, erasure, portability, and withdrawing consent as easily as giving itIn the app: edit any answer, "Download my data" (JSON), "Stop using" cycle dates, and "Delete my data", which erases straight away. Backups expire after 30 days
Security
Art. 32
Measures that fit the riskEncrypted disk and backups, HTTPS only, row-level security in Postgres, only port 443 open, SSH through AWS Systems Manager, automatic security updates, admin panel behind sign-in with two-factor and an audit log
Processors
Art. 28
Contracts with every service that handles the dataData processing agreements with AWS (London region) and Expo. Alt Auth and Atflow are our own WNC services, run in the same London setup under the same controls. No health data goes to Expo, and Atflow only sees what a reminder needs
International transfers
Chapter V
Safeguards for data leaving the UKData stored and processed in eu-west-2, London. Any processor outside the UK needs an adequacy decision or the UK transfer agreement before go-live
Impact assessment
Art. 35
A DPIA for large-scale health dataWritten before beta, updated whenever we add a feature that touches health data, such as AI
Records and breaches
Art. 30, 33–34
Know what we process, and report breaches fastA record of processing kept in the repo. A breach runbook: tell the ICO within 72 hours, and tell users if they are at high risk
Accountability
Art. 37, ICO
Registration and oversightPay the ICO data protection fee. Name a privacy lead now, and decide on a formal Data Protection Officer as health data grows to large scale
Cookies
PECR
Consent for non-essential cookiesUmami analytics runs without cookies, so no cookie banner is needed for it. Sign-in uses only a strictly necessary session cookie

Users must be 18 or over: the age question starts at 18, and the app is not aimed at children.

Scope

Deliberately left out of v1

AI companion or chatCostly, hard to make safe on health, and it needs trust we haven't earned yet.
Full cycle trackerFlo and Clue already do this. It brings the most sensitive data. We only need the phase.
Generated or user recipesAllergen and quality risk, and moderation cost.
Grocery deliverySlow partner work. "Copy list" tells us first whether people want it.
Macro and calorie countingA different product, and it carries diet-culture risk.
Community and paymentsModeration and safeguarding come later. Test willingness to pay outside the app first.

After the MVP

Top 5 ideas to move the app forward

Each one reuses something I have already built and run at WNC or Revbox, so it costs weeks, not months. Each also waits for a signal from the beta before we spend on it.

  1. 1

    From WNC · Alt Auth

    Premium plan on billing we already have

    Alt Auth already handles sign-in, two-factor and Stripe subscriptions. Plug it in and a premium tier is a configuration job, not a build: full recipe library, family portions, batch-cook Sunday mode. Test the price with a founding-member offer first.

    Signal: people plan 3 or more weeks in a row. First step: one paid plan behind Alt Auth's Stripe checkout.

  2. 2

    From WNC · Atflow

    Nudges and content flows without engineering time

    Run the lifecycle in Atflow: Sunday "plan your week", "your luteal phase starts Thursday" pushes, win-back emails after two quiet weeks. The dietitian's draft → review → publish flow for recipes runs there too, so the team changes flows without a release.

    Signal: week-4 retention is lower than week 1. First step: one Sunday reminder, A/B tested.

  3. 3

    From Revbox

    First-party analytics we can ask questions of

    Reuse Revbox's event tracking pipeline and its MCP server so the team can ask "where does the quiz lose people?" or "which recipes get cooked, not just opened?" in plain language. It stays first-party and EU-hosted, with no health fields in events.

    Signal: we need answers faster than dashboards give them. First step: 10 core events into the pipeline.

  4. 4

    From Revbox and AdCrier

    Sponsored recipes, done ethically

    Use Revbox's advertiser and publisher tooling to let food and grocery brands sponsor a recipe slot or the one-tap basket. Targeting is by recipe and diet context only, never by cycle or health data, and every slot is clearly labelled. It is revenue that doesn't need a paywall.

    Signal: lots of "Copy list" taps and a steady weekly audience. First step: one partner, one labelled slot.

  5. 5

    From WNC · Sofi

    A gentle companion, private by design

    Bring Sofi's local-first approach (voice, memory and tone that adapts to how you feel) to a cooking companion: hands-free step-by-step cooking, and a tone that softens on "Drained" days. It answers only from our reviewed recipes and keeps its memory on the device. No medical advice.

    Signal: many recipes are opened during cooking hours. First step: voice cooking mode for 10 recipes.

Design system

Calm, fresh and never clinical

A placeholder system until the agency's brand lands, built from tokens so swapping in their palette and type is a one-file change.

Poppins

Friendly, geometric and open

Its rounded letters feel approachable rather than clinical. We use regular and medium only, never heavy bold.

Type rules, applied

  • Soft slate text on a pale green background, never pure black on white
  • Regular and medium weights only, so nothing feels loud
  • Line height 1.65 and slightly open letter spacing
  • Every size in rem, so text grows with the reader's own settings

Working with the design agency

  1. Join early. Review wireframes for feasibility and data needs before the visual design starts.
  2. Share a system, not just screens. Design tokens and a small component set, kept in step between Figma and code.
  3. Hand off with a checklist. Every state covered: empty, loading, error, long text, no cycle data.
  4. Review on real phones. The agency signs off each flow on test builds, not on screenshots.
  5. Put a cost on complexity. "The animated wheel is 5 days, the static one is half a day." Then decide together.

Who built this

Daniel Nikulshyn, product engineer

I work where product and engineering meet: deciding what is worth building first, then building it well enough to put in front of real users quickly.

  • Product thinking first. The MVP is four capabilities in one loop, chosen to answer one question: will women come back each week to plan?
  • Hands-on build. This demo is the real thing: the quiz, ranking rules, weekly plan, grocery maths, saved data and tests, all written for this exercise.
  • Pragmatic with money. One London server at about $23 a month, with a clear path to managed services when the numbers justify it.
  • Trust by design. GDPR built in from the start: explicit consent, as little data as possible, export and delete in the app.
  • Good with design partners. A token-based design system and a clear handoff process, so the agency's brand can drop straight in.