Skip to content

Roadmap Item: Release 0.3 — Smart Shopping

Status

PROPOSED

Date: 2026-02-07

Changelog

Date Revision Description Author
2026-02-07 1.0 Initial version @souperk

Context

Shopping lists are currently manual. Users must know what they need and add items one by one or use the add-recipe-items flow. This release introduces always-stock targets ("staples"), auto-generated shopping suggestions based on selected recipes and current inventory, and frequent-items derived from restock history for quick trip building.

Proposal

Overview

Always-stock targets, auto-generated shopping suggestions, and frequent items for frictionless trip creation.

Goals

  • Staple items with target quantities ("always keep 2L milk, 6 eggs")
  • "Generate shopping list" from selected recipes + staples minus current inventory
  • Frequent items derived from restock history with quick-add to trips
  • Suggested quantities based on consumption patterns

Non-Goals

  • Retailer-specific routing or trip splitting (v0.4)
  • Price optimization or cheapest-option selection (v0.6)
  • Recommendation engine for what to cook (v0.7)

Technical Details

Approach

  • New Staple entity linking ingredient to target quantity and unit
  • Shopping plan generation service combining recipe needs, staple gaps, and inventory
  • Restock frequency analysis from InventoryActivity history

Dependencies

  • v0.2 must be complete
  • Existing inventory and shopping trip infrastructure from v0.1

TDs

  • TD-003: Smart Shopping (planned)

Backwards Compatibility

  • New endpoints only; existing trip creation flow unchanged
  • Generated lists create standard ShoppingTrip + ShoppingTripItem records

Implementation Plan

Phase 1: Staple Items

  • Staple entity + repository
  • CRUD endpoints for staple management
  • Migration

Phase 2: Shopping Plan Generation

  • Plan generation service (recipes + staples - inventory)
  • POST /trip/generate endpoint
  • Tests

Phase 3: Frequent Items

  • Restock frequency analysis
  • GET /ingredient/frequent endpoint
  • Quick-add integration with trip items

Open Questions

  • Should staples be per-user or per-household?
  • How should the system handle partial unit matches (e.g., 500g target vs 1kg package)?
  • Should generated lists be editable before creating a trip?

References

  • TBD