GroceryAI

From group chat to grocery cart.

GRO, a group chat where people plan grocery runs together, with an AI teammate that checks inventory, suggests dishes and turns the conversation into a shopping list.

Year
2025
Course
DSCI 560 · USC (final project)
My role
Front-end & feature design · user research
Clients
Flutter (iOS · Android · web)
Backend
FastAPI · MySQL · WebSockets
Deploy
Cloud Run · Firebase Hosting
Stack
Flutter · FastAPI · MySQL · OpenAI · Gemini

A team project for USC’s DSCI 560. I designed the front end and the feature set, and ran the user research: interviews with supermarket managers about how their teams actually plan restocking.

How it works

People share chat rooms and talk in real time over WebSockets. Everyone keeps an inventory (stock against a safety level) and shopping lists; ticking an item off a list adds it back into stock. Mention @gro and an AI teammate joins in:

Command What comes back
@gro analyze Low-stock items against healthy ones, with a button to turn the shortfall into a restock list
@gro menu 3–5 dishes from what’s in stock, with the missing ingredients and matching products and prices
@gro restock What to buy, matched to catalogue products with quantities and price estimates
@gro plan Reads the chat, works out the goal, and merges everyone’s requests into one shopping list, dropping things people said not to buy
@inventory Update stock by typing name, stock, safety lines straight into the chat

Results arrive as cards in the conversation. Items are matched to a catalogue of 1,757 grocery products by embedding similarity (OpenAI text-embedding-3-large).

Details

  • Model choice: each user picks OpenAI (gpt-4o-mini) or Gemini on their profile.
  • One codebase, three clients: Flutter builds for iOS, Android and the web, plus an Android Trusted Web Activity wrapper.
  • Deployed on Google Cloud: the FastAPI backend runs on Cloud Run via Cloud Build, and the web app is on Firebase Hosting.
A singer at a microphone, a slanting orange stage light across the face
GroceryAICover: N°01, Procreate
A guitarist in an LA cap looking down at the guitar neck, under blue light
GroceryAICover: N°02, Procreate
A single red rose in slanted window light, a blurred leaf shadow on the wall
GroceryAICover: N°03, Procreate
Three sunflowers on a black ground covered in loose grey scribbles
GroceryAICover: N°04, Procreate
A charcoal drawing of a hand holding a rose and baby’s breath
GroceryAICover: N°05, Charcoal
A black-and-white calla lily wrapped in loose looping lines, with pixelated blocks
GroceryAICover: N°06, Procreate
A black-and-white sketch of a curly-haired guitarist leaning into a solo
GroceryAICover: N°07, Procreate
A dark grey rose emerging from a brushed charcoal background
GroceryAICover: N°08, Procreate
A candle melting in an open hand, lit against the dark
GroceryAICover: N°09, Procreate
A sun sinking into dark water, painted with glitchy horizontal brush streaks
GroceryAICover: N°10, Procreate

About

I’m an engineer with a background in data analytics and systems engineering. I like building things close to the data: recommendation systems, local-first assistants, analysis pipelines, and interfaces that make a model’s output easier to read.

When I’m not coding, I paint, mostly in Procreate and sometimes in charcoal. This site keeps both in one place.