A personal shopping list with per-supermarket price history, fully controllable from a chat conversation — add or remove items, log a price you just saw, or ask where something’s cheapest right now, all in plain language.
Architecture
- SQLite for the list and the price history
- An MCP server (same pattern as my homeserver MCP) exposing the CRUD/query operations as tools an LLM can call
- A Mistral Workflow — durable execution built on Temporal — that OCRs a receipt photo, matches each line against the current list, and computes the real discounted price in code, never trusting an LLM to do the multi-step arithmetic itself (verified in testing: it silently gets it wrong on tickets with discounts and multi-buy promotions)