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.












