- Commerce · Web
- 2025 – 2026
- Full-stack
Cartlords
Cartlords compares a whole grocery list across the stores near you using real, scraped prices, then finds the cheapest way to buy it, including splitting the cart across two or three stores. It shows the one thing grocery shopping never does: the full cross-store price picture for your actual list, normalized to a true per-unit cost so the comparison is honest. The live app is gated behind sign-in, so this case study leads with a walkthrough of the product.
Problem
Every grocery trip is a blind bet. You see one store's prices at a time, so you never know whether the same cart would have cost less somewhere else nearby. Loyalty apps and weekly circulars show isolated deals, not the total cost of your real list.
Comparing is hard even by hand. The same item is priced by the pound at one store, as a six-count bag at another, and per-each at a third, so there's no obvious apples-to-apples number. That missing comparison is money left on the table on every trip.
What I built
A web app where you build a grocery list, set your location and a search radius, and instantly see what that exact list costs at each nearby store — broken down per item, with the cheapest store for every product and the best overall place to shop.
The headline feature is multi-store optimization: it computes the best one-, two-, and three-store splits of your cart and shows the concrete savings versus shopping at a single store, plotted on a map of the stores around you.
Underneath sits a full data pipeline — collect prices, normalize them to a comparable basis, and match the same product across stores — so every comparison reflects real equivalents rather than guesses.
Architecture
Pricing data is the hard part, so the decision that mattered most was where to get it. Instead of building and maintaining a brittle scraper for every chain's own website, prices come from DoorDash's store pages, which share one consistent structure across retailers. That's one reliable extraction path instead of dozens of fragile, store-specific ones. A headless-browser scraper (Puppeteer) walks each store's listings and product details and writes raw, tokenized price records to MongoDB.
The harder problem is making products comparable. DoorDash prices arrive in incompatible shapes: by the pound, by estimated weight, by count, or as a flat price. Each one gets classified by pricing type, then reduced to a single basis, price per standard unit (ounces for weight, fluid ounces for volume). Items sold per-each, like avocados, are converted to weight through a hand-curated table of roughly 500 average product weights, so a six-count bag, a per-pound price, and an each price all land on one comparable axis.
Matching the same product across stores runs deterministic-first. A tokenizer normalizes and scores product names against a catalog of templates, and a Claude-based classifier backs up only the ambiguous cases. That keeps most matching cheap and reproducible while still absorbing messy real-world names.
For a given list and location, a geospatial lookup finds the stores in range and an exact combinatorial search evaluates every one-, two-, and three-store split, ranking them by total cost with penalties for items a store doesn't carry. The frontend (Next.js, Mapbox) renders the per-item comparison table, per-store totals, and the best-value recommendation.
Stack
Outcomes
- Turns an invisible, trip-by-trip guess into a clear per-store breakdown — plus an exact best one-, two-, or three-store split with a concrete “save $X vs. one store” headline.
- Sidesteps per-retailer scraping by collecting from DoorDash's uniform store pages: one extraction path instead of a brittle scraper per chain.
- Normalizes inconsistent pricing (per-pound, estimated-weight, per-each, flat) to a true price-per-ounce, so savings reflect real product equivalents — backed by pricing-type classification, a ~500-item average-weight table, and token-plus-LLM product matching.
- Private beta, built by a small team over roughly eight months — currently gated behind sign-in with Southern California coverage.