Malaysian grocery price comparison & basket optimizer
ShopSmart — Grocery Price Optimizer

01 / Problem
Grocery prices in Malaysia vary significantly across stores, states, and retail chains. The Malaysian government publishes raw PriceCatcher dataset with thousands of premises and items, but shoppers write grocery lists in free-text (English, Malay, mixed) with typos and brand variants—not database item codes.
02 / Approach
Built an AI-powered entity matching pipeline using Gemini (with rapidfuzz fallback) that translates free-text grocery lists into canonical item codes. Connected the matcher to a FastAPI backend running optimized SQL queries over an ETL-cleaned SQLite database of government price data, served to a responsive Next.js dashboard.
03 / Architecture
Next.js frontend communicating with a FastAPI backend. An ETL pipeline cleans raw PriceCatcher Parquet files into SQLite. The AI Matcher resolves grocery lines via Gemini LLM with Pydantic contract validation, while SQL optimization algorithms calculate single-store minimums, per-item split minimums, state price rankings, and regional savings.
04 / Outcome
A working basket optimizer that resolves messy, multi-language grocery lists in real time, finding the single cheapest store or state average savings across thousands of government pricing records.