Back to work
PM Case Study · GHW: Hacking for Good

MealPlan

In 2026 the average SNAP benefit is about $6.17 a person per day, and no free tool tells people what to eat this week, what it costs, and where they fall short. In six days I led a four-person team to build MealPlan, a meal planner that turns a real budget into an honest week of food, and says so plainly when the budget can't cover a fully nutritious one.

MealPlan home screen Set up your plan, budget, household, dietary needs Your 7-day plan with cost and nutrition Consolidated shopping list by aisle
The shipped product · set a budget, get an honest 7-day plan, shop once · live at planmymeals.vercel.app
ContextGHW: Hacking for Good
My roleProduct Lead · PRD · Survey · Prototyping
Team4 people
TimelineJune 13–18, 2026 · 6 days
Liveplanmymeals.vercel.app
Built with
ClaudeClaude CodeLovableGemini API
01 · The Problem

By law, the most SNAP can give you is the cost of a nutritious week.

SNAP's maximum benefit is pegged to the USDA Thrifty Food Plan, so most recipients start at, or below, the floor for a fully nutritious week. Spending less isn't a mistake; it's the math. Meanwhile grocery prices have climbed and the planning tools that exist aren't built for this budget: they're generic, unpriced, and ignore dietary needs.

That gap is the product. The hard part isn't generating recipes, it's being honest about money without being useless about it.

The insight the whole product rests on

"Budget too low" isn't an edge case. It's the normal case, so the product has to handle it with dignity, not hide it.

What people have to spend vs. the cost of a nutritious week
Typical single adult≈ $41.50 / week
What the budget covers
↔ gap to the USDA floor
Typical family of four≈ $198 / week
What the budget covers
↔ gap to the USDA floor
What the budget covers Cost of a nutritious week, the maximum SNAP benefit, by law
$6.17
Average SNAP benefit per person, per day in FY2026 (≈ $188 / month)
+29%
Grocery prices since 2020, food-at-home CPI, Mar 2020 to Dec 2025
0
Free tools that say what to eat, what it costs, and where you fall short
Why MealPlan, not a Google search
ToolWhat they doWhere they fall shortMealPlan's edge
Google / RedditGeneric cheap-meal ideasNot personalized; no nutrition, price, or diet filter; ~45 min of diggingOne form: personalized, priced, validated, fast
FoodSwitchNutrition swapsNot US-budget focused; no meal planningBudget-first, full weekly planning
FoodiePrepAI meal planningPaid; no SNAP-budget alignmentFree, built around SNAP budgets
MealimeQuick dinner ideasNo budget input; no breakfast or lunchAll meals, all budgets
02 · Research & Who It's For

Two households with the same dead end, for very different reasons.

I wrote the survey and sent it before we built anything, then grounded the product in two composite households at opposite ends of the problem: a single adult on a tight budget, and a family balancing kids' needs against the same shortfall. Reviewing the personas under a critical PM lens is what told us a single persona wasn't enough: a student and a SNAP family behave differently, which is why the household input ended up by age and gender, not a headcount.

M

Maya

24 · 1 person · about $41.50 / week

Goals

  • Eat a real week of food, not just whatever's cheapest
  • Spend minutes planning, not an evening

Coping today

  • Googles "cheap healthy vegetarian meals," gets generic boards and old threads
  • After ~45 minutes gives up and falls back on instant ramen
VegetarianBelow USDA floor
D

Darnell & Keisha

Family of 4 · kids 6 & 9 · about $198 / week

Goals

  • Find gluten-free meals their youngest needs, within budget
  • Stop running out of good food mid-week

Coping today

  • Shop from memory and rotate the same five staples
  • Run out of good food by Wednesday
Gluten-freeBelow USDA floor
An honest note on the research

These personas are composites, built from public USDA, Census, and Federal Reserve data, not interviews. The survey went out June 15; real user research is the immediate next step, and we won't publish quotes until we have them. Holding that line was deliberate, the same honesty the product is built on.

03 · Approach & Decisions

With six days, the first real PM decisions were about what to cut and what to never fake.

I wrote the full PRD, problem, personas, MoSCoW scope, success metrics, and a dependency-mapped timeline, and held the team to a hard feature freeze on June 16. A tight scope is what let four people ship something solid. The decisions below are the ones I'd defend in a review.

The six days
Jun 13
Brainstorm and lock the idea and team name.
Jun 14
Draft and send the user survey. Competitive analysis.
Jun 15
Synthesize research, write the PRD. Figma mockups start.
Jun 16
Vibe-code the prototype, build the deck.
Feature freeze
Jun 17
Finalize, test, and film the demo walkthrough.
Jun 18
Final review and submit.
1pm EST
Honest feedback, not a fake plan

Below the USDA minimum, the app still delivers the best plan possible and names the shortfall instead of hiding it. Trust over polish.

No login, no account

Friction kills adoption for this user. Zero barriers between landing and first value.

Household by age & gender

SNAP families include kids with different caloric needs, so nutrition is checked per person, per day, not a flat headcount.

Diet rules in the data, not the model

Halal, gluten-free, and dairy-free run on exclusion lists in our food data, so a plan can't quietly break a restriction.

Feature freeze on June 16

Anything not locked two days out was a liability. I enforced it in the PRD and timeline, and it held.

Demo on prepared plans

The live demo runs on prepared plans across the filters, real output, citing the USDA plan, so nothing breaks on stage.

A sequencing flaw we caught before building

Reviewing the architecture with Claude as a critique partner surfaced a real bug-in-waiting: the plan was being generated before dietary filtering, so the AI could return foods that violated a restriction. We flipped the order, pre-filter eligible foods, then generate only from that set, before a line was written. Fixing it on paper saved hours of debugging on the clock.

What we said no to, on purpose
Out of v1
  • User accounts
  • Food-swap tool
  • Plan sharing
  • Barcode scanning & health scores
So v1 nails the basics
  • Budget → 7-day plan
  • Cost + nutrition per meal
  • Honest shortfall warning
  • Six dietary filters · shopping list · regenerate
04 · The Product

One short form becomes an honest week of meals.

Three inputs turn into seven days of breakfast, lunch, and dinner, sized to the household, priced to the budget, and checked against nutrition guidelines. Three screens, no account.

Screen 01

Set up your plan

A monthly budget, who's eating (adults by gender, plus children), and any of six dietary needs, multi-select. Nutrition targets are calculated individually by age and gender using USDA/WHO guidelines, so the plan fits the actual table, not an average.

Set up your plan screen, budget, household counts, and six dietary filters
Setup · budget, household, and six dietary filters
Screen 02

Your 7-day plan, honest, day by day

Every meal shows cost and full nutrition; every day gets a pass/fail flag and the header summarizes week total versus budget and calories per person. When the budget can't reach a full nutritious week, a banner names the gap and cites the USDA minimum, the shortfall is never hidden behind a plan that only looks complete.

7-day plan, week total, calories per person, days meeting nutrition, and expandable days with per-meal cost and nutrition
The plan · per-meal cost and nutrition, with a daily pass/fail flag
Screen 03

Shop once

Check the meals you want and the plan becomes one consolidated list, grouped by aisle with per-person quantities, built to take to the store. Tap to check items off as you shop, and save, copy, or download the list to your phone.

Shopping list grouped by aisle with per-person quantities and tap-to-check-off
Shopping list · grouped by aisle, per-person quantities, tap to check off
05 · See It Run

The full walkthrough, deck and live prototype, end to end.

MealPlan demo walkthrough
Walkthrough · ~9 min

The screens above tell the story in seconds; the recording is here for anyone who wants the full pitch and a live run through the prototype.

06 · How I Worked With AI

AI for speed, product judgment for direction.

The point of this project, for me, was learning where AI accelerates PM work and where it can't replace it. I brought the opinions; the tools brought the execution speed.

Claude · critique partner

Drafted each PRD section, then had it pushed back on as a senior PM would. It caught the filter-then-generate sequencing flaw before build.

Claude Code · vibe coding

Described what I wanted in plain language, reviewed the output, redirected, iterating on the dietary filters and budget-validation flow myself.

Lovable · scaffolding

Rapid front-end setup without boilerplate, so the team spent its time on what mattered to the user.

Gemini API · generation

Generates plans from the pre-filtered USDA food list only, with pre-cached fallbacks so a rate limit can't break a demo.

The takeaway on the tools

AI is most useful when you have a strong enough opinion to know when it's wrong.

07 · What I Learned

Honesty was the product strategy, and the team strategy.

01
Survey first, build second

Writing the survey before the PRD forced me to separate what I assumed users wanted from what they'd actually say. That gap is exactly why household composition became age-and-gender, not a headcount.

02
The PRD is the source of truth, or it's nothing

The feature freeze held because the PRD was specific enough that "is this in scope?" always had a clear answer. Vague PRDs create scope creep; precise ones prevent it.

03
Vibe coding changes the PM-dev dynamic

When I could prototype a hypothesis myself, I wasn't waiting on a teammate to test it. I could build it, show it, and hand off something concrete. PMs who can build, even roughly, move faster.

04
Honest products beat impressive-looking ones

Telling users when their budget falls short, instead of faking a complete plan, was the right call. It's the difference between a tool that builds trust and one that quietly erodes it.

The takeaway

The honest call, naming the gap instead of hiding it, was the whole product. Everything else was execution.

"We never fake a plan that fits. We get as close as the budget allows, and show exactly where the gap is."
Back to all work