Case study
Zesto
A practical meal/recipe discovery PWA.
Overview
Zesto turns a fixed recipe collection into a food decision engine. Tell it your situation — broke, tired, out of ideas, short on time — and it ranks the recipes that fit, with a plain-language reason for each one.
Problem
A recipe app that just lists recipes doesn't answer the actual question at dinner time: what can I make right now, with what I have, for what I can afford. Zesto answers that question directly instead of making the user search for it.
Architecture
A Vite + React 18 + TypeScript PWA with no backend — Zustand stores persist pantry, history, favorites and preferences on-device, Tailwind drives a tokenised design system. The 99 recipes are parsed once from their source book into structured JSON through a Python pipeline (PyMuPDF extraction, validated against the book’s own QC summary) and compiled into the app at build time.
What shipped
A deterministic, weighted scoring engine ranks recipes across ingredient match, budget, time, effort, equipment, calories, diet and leftovers, and explains every result in plain language. An effort score accounts for steps, prep verbs, vessels and attention rather than just a timer. A guided cooking mode, weekly planner, weekly dashboard, and full offline support round out the app. The recipe content is used with permission from its source book's author and is not open content.