Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Grocery Price Intelligence: 60%+ Basket Savings Across 4 Stores
The Situation
A Ukrainian consumer tech founder wanted to give shoppers something no local app offered: a single view of their full grocery basket priced simultaneously across the four biggest delivery-capable chains in the country. The end goal was simple. A shopper types a weekly list, sees which store is cheapest for that exact basket, and builds the winning cart in one click.

The Problem
Ukrainian grocery shoppers typically default to one chain out of habit and overpay without knowing it. Prices vary meaningfully between Silpo, Novus, Auchan, and Metro, but checking four apps manually takes longer than the shopping itself. On top of that, the dominant delivery chain protects its site with aggressive bot detection, so naive cart-automation approaches break within one or two runs. The founder needed a reliable system that worked in production, not a demo that failed the moment a real shopper tried to use it.

The Solution
I built the system end-to-end as a full-stack automation platform. The React dashboard lets the shopper type a list in natural Ukrainian ("молоко 2шт, хліб, курка 1.5кг") or search products across all four stores with photos. When the shopper hits compare, the backend fires parallel requests to all four store APIs and returns a basket-total comparison sorted cheapest-first, with per-item breakdowns.

For cart assembly at the primary store, I solved the bot-detection problem with an inverted architecture: instead of a server controlling a browser, the shopper's own Chrome polls the server for work via a Chrome extension. The extension claims jobs atomically from a Postgres queue, assembles the cart inside the real browser session, and reports back. This runs on the shopper's residential connection, which behaves like a genuine human shopper because it is one.

I also built a receipt parser: shoppers paste a Ukrainian fiscal receipt URL, and the system extracts every line item (including weighted goods and discounts) and turns it into a reusable template for repeat orders.

Tech Stack: NestJS, TypeScript, React, Vite, Tailwind, Supabase (PostgreSQL), Redis, BullMQ, Playwright, Automa Chrome extension, Docker, Fuse.js, grammY Telegram bot

The Results
- 62% basket savings detected in live testing: a 5-item basket priced at 301 UAH at the winning store vs 787 UAH at the default store
- 4 stores priced in parallel in a single comparison request, not sequentially
- Production-grade cart automation that survives aggressive bot-detection where standard server-side browser tools fail within 1 to 2 runs
- 31 REST endpoints, 7 database tables with row-level security, 37 passing tests
- End-to-end flow working: list creation, 4-store comparison, automated cart assembly, receipt-to-list parsing, order lifecycle tracking

How It Works
1. Shopper types or imports a shopping list in the dashboard
2. System fires parallel price queries to all 4 store APIs
3. Dashboard shows basket totals sorted cheapest-first with per-item detail
4. Shopper picks the winning store and clicks build cart
5. Chrome extension claims the job and assembles the cart in the shopper's own browser
6. Shopper reviews the cart, picks a delivery slot, and checks out
Детали работы
Добавлена 7 апреля
58 просмотров
Фрилансер
Андрей Бойко
Украина Харьков
Нет отзывов

Свободен для работы Свободен для работы
На сервисе 9 лет