GroceryChop.com

Currently Shipping

AI-Powered Grocery Price Comparison Platform

Feb. 2026 – Present

Overview

GroceryChop is a production AI-powered grocery price comparison platform serving live users today. Shoppers can compare prices across 100+ US grocery chains in 50+ metro areas, view 90-day price histories, and chat with ChopBot — an AI shopping assistant that grounds every response in live data, not training-set memory.

Built solo as founder and full-stack engineer across web and native mobile. GroceryChop ships as a web app plus iOS and Android apps (React Native) live on the App Store and Google Play. Currently serving ~180 daily users while I iterate on AI features and an SEO content engine.

ChopBot Architecture

ChopBot is built on OpenAI function calling with 8 custom tools wired directly to the live Postgres database. Instead of stuffing prompts with stale data, the model decides which tools to invoke and orchestrates them in a loop — a RAG-style pattern grounded in live data.

A runtime SQL rewriter translates the model's tool arguments into safe, parameterized queries against the production schema. Server-Sent Events stream tokens back to the browser for sub-1s first paint while tool calls resolve in parallel.

Request Flow

        ┌──────────────┐
        │     User     │
        └──────┬───────┘
               │  query
               ▼
        ┌──────────────────────┐
        │  Next.js 14  (SSE)   │
        │  TypeScript / React  │
        └──────┬───────────────┘
               │
               ▼
        ┌──────────────────────────────┐
        │   ChopBot Orchestrator       │
        │   OpenAI function calling    │
        └──────┬───────────────────────┘
               │  tool calls (parallel)
               ▼
   ┌────────────────────────────────────┐
   │  8 Custom Tools                    │
   │  search · compare · history · ZIP  │
   │  + product / unit / list / filters │
   │           ▼                        │
   │  Runtime SQL Rewriter              │
   └──────┬───────────────────┬─────────┘
          │                   │
          ▼                   ▼
   ┌─────────────┐     ┌─────────────┐
   │  PostgreSQL │     │    Redis    │
   │  100+ chains│     │  3-tier cache│
   │  50+ metros │     │             │
   └─────────────┘     └─────────────┘

ChopBot's 8 Tools

Each tool has a typed JSON schema, deterministic arguments, and a direct path to live data. The model picks tools dynamically based on the user's question and chains them when needed.

multi_chain_search()

Search products across all 100+ grocery chains by name, brand, or category.

cross_chain_price_compare()

Compare current prices for the same product across multiple chains.

price_history_90d()

Return a 90-day price history for any product or chain.

find_store_near_zip()

ZIP-based store locator returning chains and addresses near the shopper.

product_details()

Lookup full product spec, units, pack size, and UPC matches.

unit_price_normalize()

Normalize prices to per-unit so comparisons across pack sizes are fair.

list_builder()

Build a multi-item shopping list and price it across chains.

category_filter()

Filter and surface deals by category, sale flag, or dietary tag.

AI Product Engineering — Patterns Beyond Chat

ChopBot is more than a chat box. It takes actions, works multimodally, and keeps a human in the loop — the difference between a demo chatbot and a production AI product people can trust with real decisions.

Human-in-the-Loop Confirmation

Before ChopBot saves a list to your account or runs a live scrape, it asks for explicit confirmation. The AI proposes; the user approves — no silent, irreversible actions.

Confidence & Escalation

A live scrape is only offered when database coverage is sparse. Instead of guessing on thin data, ChopBot flags the gap and escalates to the user, offering to fetch fresher data on demand.

Grounded, Hallucination-Free Data

Every product card is rendered strictly from PostgreSQL. The model reasons and phrases, but prices and products always come from the system of record — never invented by the AI.

Multimodal Product Matching

Snap a photo of a product and ChopBot identifies it and matches it against the catalog to run a real price comparison — computer vision plus entity resolution against live data.

Multi-Step Agentic Workflow

Upload a photo of a finished dish and ChopBot generates the recipe, extracts an ingredient list, prices it across chains, and surfaces the cheapest store — a non-linear, multi-step flow.

Multi-Model Routing

Dynamically switches between GPT-4o mini, GPT-5, and Claude Sonnet, balancing cost, speed, and capability per task — with no single-vendor lock-in.

Stateful, Authenticated Persistence

Generated lists save to the user’s Supabase-authenticated account, keeping per-user data separated and permissioned across sessions.

Graceful Error Handling

When a scrape, match, or model call fails, ChopBot degrades cleanly with a clear user-facing message rather than a dead end.

Production Stack

Frontend
Next.js 14 (App Router), TypeScript, React, Server-Sent Events for streaming
Mobile
React Native iOS + Android apps, published to the App Store and Google Play
AI Layer
OpenAI function calling, 8-tool orchestration, runtime SQL rewriter
Backend
Custom Python scraping backend, REST APIs, structured ingestion pipelines
Data
PostgreSQL primary store, three-tier Redis cache for hot/warm/cold reads
Performance
SSE streaming for sub-1s first paint, parallel tool calls, per-IP rate limiter
SEO Engine
Auto-generated sitemap, OG images, Article JSON-LD, 17+ long-form posts

Data Scale

100+
US Grocery Chains
50+
Metro Areas
90d
Price History
UPC
+ Fuzzy Matching

Live pricing ingested daily via a custom Python scraping backend. UPC + fuzzy product matching reconciles SKUs across chains so the same product is comparable everywhere.

Daily Dev Workflow — Claude Code

I ship daily using an agentic development workflow with Claude Code. It plans, reviews, and executes alongside me — driven by repo-level context, custom slash commands, and structured prompts.

  • CLAUDE.md context — repo-wide conventions, architectural rules, and ChopBot tool conventions live alongside the code so the agent stays grounded in current state.
  • Slash commands — custom workflows for repeatable tasks (new tool scaffolding, scraper additions, SEO post drafting).
  • Structured prompts — planning → review → execute loops with explicit acceptance criteria, not freestyle prompting.
  • MCP-aware tooling — designed with Model Context Protocol patterns in mind so internal tools can be exposed cleanly.

Results

~180
Daily Active Users
17+
Long-Form SEO Posts
<1s
First-Paint via SSE

SEO content engine auto-generates sitemap, Open Graph images, and Article JSON-LD for every post. Indexing growth tracked weekly in Search Console.

Technologies

Next.js 14TypeScriptReactReact NativeiOSAndroidPythonPostgreSQLRedisOpenAI Function CallingRAGMultimodal AIComputer VisionHuman-in-the-LoopMulti-Model RoutingGPT-5Claude SonnetSupabase AuthServer-Sent EventsVercelClaude CodeMCP-aware Tooling