← Back

Sporta — voice-first grocery lists, sorted by your supermarket

Personal project · in testing ·

Problem

Writing a grocery list is typing on a phone with your hands busy, and shopping it means zig-zagging the store because the list is in the order you thought of things — not the order the departments come at you.

Role

Built solo, end to end: database schema, AI parsing pipeline, mobile app and store builds.

Technical choices

  • On-device speech-to-text in Italian: dictation works in the kitchen, no audio leaves the phone.
  • AI parsing (Claude API via Supabase Edge Functions): free-form speech becomes structured items with quantities and indicative prices.
  • Department-aware sorting: the list re-orders itself to match the layout of your supermarket chain, so shopping mode follows the aisles.
  • Shared lists, no accounts: a list travels as a link or a QR code; whoever opens it joins and edits, and every row shows who added it. Capability-link model with membership-based Row-Level Security.
  • Receipts into prices: photograph the receipt — or feed it a PDF or several photos for the long ones — and Claude vision turns it into per-item prices, reviewed line by line before saving.
  • Diet plans into shopping: a nutritionist's plan (PDF, photos or text) becomes a weekly menu and the lists to buy it. The plan itself never leaves the device.
  • Offline that holds: dictation, edits and check-offs work with no signal — a deterministic parser splits speech into items, and departments fill themselves in when the network returns.
  • Loyalty cards: store your supermarket cards in the app and show the barcode at checkout.
  • Flutter + Supabase: one codebase for iOS and Android, PostgreSQL with Row-Level Security behind it.

Outcome

In testing on real grocery runs: dictate the list at home, share it with whoever shops with you, pick the store, and check items off department by department with a running total — one app from "we're out of butter" to the checkout.

Site and privacy policy: sporta.family.

Three Sporta screens: planning grouped by department with supermarket chips and voice input, a shared list showing who added each item, shopping mode grouped by department with running total Three Sporta screens on a dark background: planning grouped by department with supermarket chips and voice input, a shared list showing who added each item, shopping mode grouped by department with running total
Planning with voice input, supermarket picker with loyalty cards, and shopping mode grouped by department with a running total