Implementation-ready specs for 4 stories: making it easy to get data in, then making that data useful.
Four stories selected to close two critical gaps:
Replace the 8-field form with a one-field quick-add (name only). Optional fields behind "Add details" toggle. Frontend-only, no schema changes.
Collapse new-user journey from 8 screens / 125s to 4 screens / 20s. Defer email confirmation, redirect to scanner after household creation.
Save recipes with ingredient lists, check against inventory. Per-ingredient status: have enough, running low, missing. New top-level nav item.
Infer consumption from purchase frequency. Flag items as "Likely low" when past their average purchase interval. HA sensor slot for Phase 2.
Quick Add
~1 day
Time-to-Scan
~1 day
Recipe Matching
~3-4 days
Passive Depletion
~2 days
Minimum viable pair: If capacity is limited, GRY-002 + GRY-001 address the most urgent pain (getting data in) and deliver a measurably faster experience. INT-001 and GRY-003 can slip to Sprint 6.
| Story | Frontend | Backend | QA | Total |
|---|---|---|---|---|
| GRY-002: Quick Add | 4h | 0h | 2h | 6h |
| GRY-001: Time-to-Scan | 3.75h | 0.5h | 2.5h | 6.75h |
| INT-001: Recipe Matching | 22.5h | 4h | 4h | 30.5h |
| GRY-003: Passive Depletion | 12h | 4h | 3h | 19h |
| Total | 42.25h | 8.5h | 11.5h | 62.25h |
| Story | New Tables | New Columns | New Functions |
|---|---|---|---|
| GRY-002 | None | None | None |
| GRY-001 | None | None | create_household_with_owner() RPC |
| INT-001 | recipes, recipe_ingredients | None | normalize_ingredient_name() |
| GRY-003 | purchase_events | 7 cols on inventory_items | recalculate_depletion() trigger |
GRY-001 depends on GRY-002 for fast post-scan experience. GRY-003 benefits from GRY-002's date_of_purchase defaults. INT-001 is independent but benefits from more inventory data.
| Risk | Severity | Mitigation |
|---|---|---|
| Email confirmation change affects existing users | High | Only new signups change. Test on staging first. |
| Fuzzy name matching is inaccurate | Medium | Start with substring match. Add pg_trgm if insufficient. |
| Depletion estimates unhelpful with sparse data | Medium | 3-event minimum. Confidence indicator. Per-item dismiss. |
| No default categories on new household | Medium | Seed 10 defaults in create_household_with_owner RPC. |
| Bottom nav overcrowded with Recipes | Low | Move Budget out of tabs (Sprint 4 feature). |