Chart legendWireframe · content sourced from project docs · rail = Surface / Midwater / Deep (Bite / Snack / Meal)
Case study — product management, built not just talked about

I built a production AI product solo in ten months. This is how I think.

Captain Cook turns the recipes you already trust into a week you can actually cook: plan it, audit the ingredient gap, shop, cook, repeat.

A side project, not a startup — built to sharpen my product thinking while I look for the next role, and to prove that AI-assisted development can produce something real, not just a demo.

10 months · zero → production 4 specialized AI agents 27+ evals · run daily Benchmarked against 7 live competitors
Plan tab — weekly planner with the ingredient-gap grocery rail
Surface · bite

The problem

People already have recipes they trust — scattered across bookmarks, screenshots, and cookbooks. Cooking was never the hard part. Deciding what to cook, and figuring out what's missing from the pantry, is what kills the week.

"Buy 4–5 items. Unlock 2–3 good meals this week."

That's the whole wedge. Not another recipe app — an operating system for the recipes you already picked.

Midwater · snack

The loop is the product

Not a feature list. Every feature exists to protect this cycle — and to get users back to step one, next week.

import → plan → audit gap → shop → cook → return next week

Onboarding — splash v3, guest Plan preview before signup
Onboarding
Cook tab — personal recipe library, 37 saved recipes
Cook library
Pantry tab — 82 items on hand, use-it-or-lose-it tracking
Pantry
Shop tab — aisle-grouped list for Shaws, Peterborough NH
Shop
Cook Mode — step-by-step execution with voice control and timers
Cook Mode
Midwater · snack → deep

Three decisions that show how I think

Collapsed by default. Expand any one for the full situation → options → rationale.

1. Plan-first information architecture Reordered the nav so the wedge is the default screen, not a sub-feature.
Situation
Early product surfaces were recipe- and chat-centric. The real job — weekly planning with ingredient-gap visibility — wasn't the default mental model.
Options
(1) keep recipes as home, tuck planning under a sub-feature · (2) add a "Meals" tab without restructuring · (3) reorder top-level nav to Plan → Cook → Pantry → Shop, and show a Plan preview before signup
Decision
Option 3. Plan is the first tab. Logged-out users see a Plan preview behind onboarding.
Why
"If people land on the recipe library and just browse, the product becomes another recipe app. Differentiation isn't content scale — it's operationalizing the recipes someone already trusts."
2. Recipe packs: bootstrap, not the brand Solved cold-start without quietly becoming a content catalog.
Situation
New users with an empty recipe library can't get meaningful planner suggestions or pantry-match scores.
Options
(1) rely entirely on import flows · (2) ship curated recipe packs · (3) license publisher content catalogs
Decision
Option 2, with a guardrail: messaging always leads with "your recipes" before "our packs."
Why
"Packs reduce time-to-first-plan but don't create a moat. Publisher catalogs would reposition this as another content app."
3. Let chat earn its place Shipped a bounded assistant — then demoted my own AI chat feature from the main nav.
Situation
A planner-chat layer could feel magical — or add friction on tasks users finish faster by direct manipulation.
Options
(1) launch a prominent autonomous planning agent · (2) ship "Ask the Cook" as a global launcher for ad-hoc questions only · (3) a compound-request planner assistant, feature-flagged
Decision
Option 2 shipped as default; Option 3 prototyped behind a flag. In July 2026, "Ask the Cook" moved from a top-level nav tab to an assistive launcher once it competed with structured planning.
Why
"Generic chat on top of a planner is a novelty trap. AI earns its place on judgment-heavy, multi-step changes — not on tasks people finish faster themselves."
Recruiters skim in seconds. The teaser line has to work fully collapsed — the expand is for someone already deciding you're worth five more minutes.
Midwater · snack

Where this stands — and what would prove me wrong

I'd rather show an honest diagnosis, paired with the specific test that would resolve it, than a growth chart that wouldn't mean anything for a project this size.

DimensionStatus
Core planning-to-execution loopShipped
Product-market fitHypothesis
Adoption cohortNot yet run
Open questionDo people discover Plan and come back next week?
The most consequential open risk

Is the "escape the rut" segment real and big enough — or founder-market-fit of one?

Named directly, not glossed over. Two specific, falsifiable failure modes — not resolved by more reasoning, only by the first cohort:

Most people don't care enough about weekly variety to pay for it.
The people who do care already have their own working system (batch-cooking, a mental rotation) and won't switch.
Deep · meal

Under the hood

Technical depth, reframed for outcomes — not a tech demo bolted onto a product pitch.

  • Confidence-based routing — the orchestrator classifies intent and only routes to a specialist agent above a 0.6 confidence threshold; below it, it asks a clarifying question instead of guessing.
  • Bounded vs. open-ended AI, deliberately split — Cook Mode voice control and the planner assistant use deterministic parsers first, falling back to an LLM only when needed.
  • One vector store, not two — consolidated pgvector into the primary Postgres database, migrated off a separate ChromaDB instance, eliminating sync bugs.
  • Evaluation as a first-class system — 27+ LLM-judged test cases across 9 categories, daily regression runs, production-query replay against a baseline.
Orchestrator extraction (main.py)
2,047 lines→ 119
Grocery lookup latency
~seconds→ 0.004–0.026s
Recipe parsing accuracy
82%→ 87%
Deep · meal

Market rigor, not just internal conviction

Benchmarked feature-by-feature against 7 named, shipping competitors — the kind of homework that separates a hopeful side project from a founder who understands the category.

MealimePaprikaAnyListSamsung FoodPlateJoySideChefCooklist
Recipe source
Publisher catalogs vs. user-curated + import, here
Ingredient gap vs. plan
Not offered by any of the 7 — core mechanic here
In-store aisle navigation
Only one of 8 with a real visual store map — every competitor: list or nothing
Online order handoff
3 of 7 have it — named internal gap, addressed in the plan below
AI + conversational
Multi-agent, confidence-routed — unproven at recommendation quality vs. PlateJoy/Samsung Food's dedicated engines, stated plainly

The differentiator, and its real limit

The store-layout schematic — a visual, chain-specific, auto-maintained item-location map — is a genuine first; no benchmarked competitor has attempted it, and even Instacart's closest pilot covered only ~80 stores. But there's no importable planogram dataset: every new chain is real, bounded, manual work. Not a self-scaling moat — a deliberate operational investment nobody else is bothering to make.

Real, live: Shaws – Peterborough NH store layout, aisle-by-aisle

The verdict, stated honestly

"Yes, as a combination — not yet as a moat." The full loop doesn't exist intact anywhere else today, but it's assembled from parts that individually exist elsewhere. Real, but time-limited against a well-resourced fast-follower — see below.

"Samsung Food is the most structurally dangerous competitor — free-adjacent, well-funded, and already converging on the same thesis with far more resources."

Naming that threat directly, rather than only listing strengths, is the point: competitive self-awareness reads more credible than a strengths-only pitch. The response: own the emotional positioning ("escape the rut," not health-optimization or content scale) a large incumbent is slower to copy than a feature — and build the premium tier on the multi-agent architecture, not recipe count.

Deep · meal

Path to viability: 0 → 1 on paying subscribers

Not a promise this happens — proof the thinking is already done, if I choose to pursue it.

Captain Cook · freemium (planned) Mealime · $3–6/mo Samsung Food · $7/mo PlateJoy · $69/6mo Paprika · one-time ~$5–30 SideChef · free, B2B-funded
Phase 1 · 0–4 weeks

Prove the differentiator, live

  • Recruit the initial cohort from the Hannaford's/Shaw's region — a targeting decision, not a build item — so the store map is demoable for every user, not a fallback.
  • Ship a minimal "list, not cart" Instacart handoff sized around the gap-audit's short list.
  • Write the "why not just use Paprika + AnyList" objection and its answer, led with the store schematic.
Phase 2 · 1–3 months

Let data replace assumption

  • Instrument the full funnel so retention data shows exactly where the loop breaks.
  • Pressure-test whether AI recommendations actually feel smart to a first-time user before leaning on that claim in marketing.
Phase 3 · 3–6 months

Build the moat, once earned

  • Decide pantry auto-population investment based on real drop-off data, not guesswork.
  • Build the premium tier on the multi-agent architecture — a conversational "what can I make with what's expiring" capability filter-based competitors can't easily copy.
The gap-audit mechanic is what makes an otherwise-weak, shallow "list only" Instacart handoff usable — it narrows a 40–60 item weekly shop to roughly a dozen items, turning a tedious cart-build into a 2-minute task. Connecting a core product mechanic to a business-model weakness is systems-level commercial thinking, not just feature-level thinking.
Deep · meal

How the thinking evolved

Ten months, three real phases — strategy and implementation converged, they didn't arrive together.

Sept – Nov 2025
Platform foundation
Started as a single document Q&A agent. Grocery + recipe features shipped, then a Postgres migration. Multi-agent split followed — grocery extracted first, as the highest-volume, clearest-boundary domain, in 8 days.
April 2026
Strategy crystallizes
Founder strategy work reframed the problem: users don't need more recipes, they need help deciding and auditing ingredients.
May 2026
The wedge ships
Weekly planner and Cook Mode go live — the loop becomes a real, usable mechanic instead of a strategy doc.
July 2026
Plan-first pivot — demoted my own AI feature
Reordered navigation to Plan → Cook → Pantry → Shop and moved the AI chat launcher out of the top-level nav entirely, once it was clear it competed with structured planning. The single biggest UX call in the project's history was restraining the AI, not adding to it.
Deep · meal

What this demonstrates

Product judgment

Said no, on purpose

Turned down discovery-first positioning, publisher content catalogs, and a prominent autonomous planning agent — each faster to ship than what shipped instead.

Stage awareness

Named the hypothesis as a hypothesis

Defined a north-star metric and activation funnel before a single cohort existed, and says so plainly.

Prioritization

Shipped in weeks, alone

Plan, Cook, Pantry, Shop, Cook Mode, packs, and onboarding — while deliberately deferring grocer integrations until retention data justifies the cost.

AI fluency

Knows where AI helps — and where it doesn't

Built orchestration, evaluation, and prompt governance that mirror how real AI products are run — and put AI in the back seat wherever direct manipulation was simply faster.

What I'd do differently with a team

  • Run the founding cohort before the last mile of polish on the Shop handoff.
  • Pair with a designer earlier on Plan-first onboarding experiments.
  • Dedicate an engineer to loop instrumentation in parallel with feature work — metrics debt is now on the critical path.