Inspiration
Every week, roommates have to plan a grocery run, coordinate shared and individual items, and figure out how much each person should pay. Even after the shopping is done, there’s still the task of sitting down with the receipt and working out who owes what.
Most of that planning already happens in a group chat. Someone asks for milk, someone wants a specific brand, and two people agree to share eggs. But those decisions get buried in messages, leaving one person to piece together the list and calculate the costs.
We wanted to make that weekly routine easier. GroupCart grew from a simple question: what if the same group chat could organize everyone’s requests, build a shared grocery cart, and keep track of each person’s share along the way?
What it does
GroupCart is a grocery shopping assistant inside a shared iMessage group. Members can request groceries, choose specific products, and build one household cart together. It searches live products at a selected Kroger or QFC store and returns options with names, sizes, and store prices. Asking for “milk” prompts a question about the type; asking for “pasta under $5” filters the options to match that limit. Members can send several items at once and select their choices by number.
Sharing sessions let selected members split the estimated cost of groceries they add. The group can review individual shares, track the household budget, remove items, undo changes, and save recurring weekly, biweekly, or monthly lists with reminders. A companion dashboard displays the same cart and approval status.
Before checkout, everyone must approve the current cart. GroupCart checks availability and suggests replacements for unavailable items, leaving the choice to the group. Once approved, a selected member signs in to Kroger and transfers the items into their account’s cart. They review the order and complete payment in Kroger.
How we built it
We built GroupCart with TypeScript and Node.js, using Photon’s Spectrum SDK to bring the shopping assistant into a shared iMessage group.Photon provides the dedicated messaging number, while Spectrum connects our application to the conversation. It lets GroupCart receive messages, identify which household member sent each request, and reply with product choices, cart summaries, and approval prompts in the same group. We also use it to send recurring grocery reminders, keeping the shopping process inside a familiar conversation.
SQLite stores household members, cart items, sharing sessions, approvals, recurring lists, and change history. The messaging agent and browser dashboard use the same stored cart, keeping their views consistent. We connected Kroger’s Products API for product searches, store prices, and availability checks. We then added OAuth authorization and the Cart API so a shopper could sign in directly with Kroger and transfer the approved items.
Challenges we ran into
Short messages contain more detail than they first appear to. Our early prototype turned a request for Vital Farms organic eggs into generic eggs. That showed us why preserving someone’s brand and product choices mattered. We added product selection and clarification steps so members could choose exactly what they wanted.
Retailer integration brought practical surprises. Prices depended on the selected store, and products could appear in search but be unavailable for pickup. A mismatch between our configured QFC and the shopper’s Kroger pickup location helped us uncover that issue and add an availability check before transfer.
Accomplishments that we're proud of
We’re proud that GroupCart progressed from an echo bot and sample catalog to a working group shopping flow with real products, store prices, and a Kroger cart handoff. Testing it in our own conversation helped us build the details that make it usable: clarification questions, personal and shared groceries, cancellation, undo, approval resets, and recurring lists. Seeing a product requested in iMessage appear in a real Kroger cart was a particularly exciting moment.
What we learned
We learned how much coordination sits behind a simple grocery request. Choosing a product, deciding who shares it, agreeing on the price, and approving the final cart are separate decisions that the application needs to preserve. We also learned the value of testing with real conversations. Our own messages exposed problems that a scripted demo missed, from mixed grocery lists to stale approvals. Each fix made the product easier to understand and more dependable.
What's next for GroupCart
Our next step is a hosted dashboard with household authentication so every member can securely review the cart from their phone. We also want to support more retailers, remember preferred products, and improve how GroupCart handles conversational requests. Adding expense tracking and settlement options would help households follow through after the shopper pays. We want GroupCart to become a useful part of the household routine, from remembering the weekly essentials to getting everyone’s groceries into one cart.
Log in or sign up for Devpost to join the conversation.