Open a product on Rozetka, Foxtrot or Allo and PriceMatch shows what the same item costs elsewhere — with a confidence score and a one-line reason, streamed in as each store answers.
Get a demo code How it works
The extension reads the product’s name, model code and price from the page you opened — structured data first, page markup as a fallback.
From your own browser, like you would by hand. Results are re-ranked with cheap lexical rules so the right candidate is in the window: used stock and accessories sink, exact storage/colour rise.
Gemini gets the source product and up to eight candidates per store and answers a strict question: same SKU or not? Colour, storage, refurbished and bundles all count. It streams one store at a time.
The extension only holds an access code. Model calls go through a serverless proxy; the provider key lives in its environment, nowhere else.
Per-code quota, a global daily cap and a per-IP rate limit in front of every call — plus a hard monthly spend limit at the provider as the last line.
Each store is one adapter file with a fixture test. When a store changes its markup, one test fails and one file changes. Adding a store is adding a file.
The model provider is a single setting on the server. Swap Gemini for another vendor without touching the extension.
“No exact match” with a reason beats a wrong price. The model is told never to guess, and the extension never renders its output as HTML.
English and Ukrainian UI from the browser’s locale, through the extension platform’s own i18n — no runtime downloads.
Chrome Manifest V3 · Vue 3 in a Shadow DOM panel · WXT build · background worker does all fetching · Vercel serverless proxy (Node) · Gemini via the OpenAI-compatible API with a strict JSON schema · Upstash Redis for counters · Server-Sent Events for streaming.
The same three layers — store adapters, AI matching, gated proxy — are what a competitor price-monitoring system for a retailer is built from. This demo is the consumer-facing shape of it.