Inspiration
As UCSD students, we're always trying to stretch our budgets at the grocery store. We'd find ourselves checking multiple store apps and websites before each trip, manually comparing prices on the same items — eggs at Ralphs vs Target vs Trader Joe's. It's tedious and time-consuming. We thought: what if AI agents could do that comparison shopping for us, navigating real store websites in real time and coming back with the best deal?
What it does
CartQuest takes your grocery list and zip code, then dispatches parallel AI-powered browser agents to real store websites — Ralphs, Target, and Trader Joe's. Each agent navigates the actual site: setting the store location, searching for each item, and extracting real prices. Once all agents report back, the optimizer compares prices per item across stores and calculates whether it's worth splitting your trip across multiple stores or just going to one. It factors in the time and gas cost of an extra stop, so the recommendation is practical, not just theoretical. The final dashboard shows a side-by-side price comparison, highlights the cheapest option per item, and gives you an optimized shopping plan with estimated savings.
How we built it
The backend is a FastAPI server that orchestrates multiple Browser Use agents running in parallel via asyncio. Each store has its own agent with a tailored prompt that knows how to navigate that specific retailer's website — setting zip codes, dismissing popups, finding store-brand alternatives. The agents use a custom tool to report structured price data back to the orchestrator. Results stream to the React frontend via Server-Sent Events, so you can watch each agent's progress in real time. The optimizer handles edge cases like out-of-stock items and uses a scoring system that penalizes stores with missing products rather than treating them as free.
Challenges we ran into
Bot detection was our biggest hurdle — Walmart's "press and hold" verification blocked our agents entirely, forcing us to pivot to stores with less aggressive anti-bot measures. Each store's website behaves differently, so our agent prompts needed constant iteration: a generic "find the price" instruction wasn't enough — we had to write step-by-step navigation guides for each site. Parsing Browser Use's result format was also tricky since the structure of agent outputs isn't always consistent, requiring defensive parsing with fallbacks. Out-of-stock items initially broke our optimizer by counting as $0, making stores with missing products appear cheapest — we had to rethink our scoring to penalize missing items.
Accomplishments that we're proud of
Getting parallel browser agents to reliably navigate three different real-world retail websites and return structured, comparable data — that felt like magic the first time it worked. The optimizer logic handles real-world messiness well: out-of-stock items, varying product sizes, and the practical question of whether saving $2 is worth driving to a second store. The live SSE streaming makes the demo compelling — watching three browser agents shop simultaneously is genuinely fun to watch.
What we learned
LLM-powered browser agents are powerful but brittle — the gap between "works in theory" and "works on a live website" is huge. We learned that agent prompts need to be extremely specific and procedural rather than high-level. We also learned a lot about how grocery pricing works: store brands vs name brands, how prices vary by location even within the same chain, and how much shipping and trip costs eat into theoretical savings.
What's next for CartQuest
We want to add more stores — Costco, Aldi, and Instacart (which would give us access to multiple stores through one site). We'd like to build a mobile-friendly version with push notifications: "Your grocery list is 15% cheaper at Ralphs today." Historical price tracking would let us tell users whether a sale price is actually a good deal. Longer term, we'd love to integrate with store loyalty programs and digital coupons to factor in personalized discounts, and add a meal planning layer where you input recipes and CartQuest builds the optimized grocery list for you.
Built With
- browseruse
- fastapi
- javascript
- playwright
- pydantic
- python
- react
- vite
Log in or sign up for Devpost to join the conversation.