Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak

Inteligencja cenowa artykułów spożywczych: oszczędności w koszyku powyżej 60% w 4 sklepach

Inteligencja cenowa artykułów spożywczych: oszczędności w koszyku powyżej 60% w 4 sklepach
Sytuacja
Ukraiński założyciel technologii konsumenckiej chciał zaoferować klientom coś, czego nie oferowała żadna lokalna aplikacja: jednoczesny widok pełnego koszyka spożywczego wycenionego w czterech największych sieciach dostawczych w kraju. Ostateczny cel był prosty. Klient wpisuje tygodniową listę, widzi, który sklep jest najtańszy dla tego dokładnego koszyka i buduje zwycięski koszyk jednym kliknięciem.

Problem
Ukraińscy klienci spożywczy zazwyczaj przyzwyczajają się do jednej sieci z nawyku i przepłacają, nie zdając sobie z tego sprawy. Ceny różnią się znacząco między Silpo, Novus, Auchan i Metro, ale ręczne sprawdzanie czterech aplikacji zajmuje więcej czasu niż zakupy same w sobie. Na dodatek dominująca sieć dostawcza chroni swoją stronę przed agresywnym wykrywaniem botów, więc naiwne podejścia do automatyzacji koszyka psują się po jednym lub dwóch uruchomieniach. Założyciel potrzebował niezawodnego systemu, który działałby w produkcji, a nie dema, które zawiodło w momencie, gdy prawdziwy klient próbowałby go użyć.

Rozwiązanie
Zbudowałem system od podstaw jako platformę automatyzacji pełnego stosu. Panel React pozwala klientowi wpisać listę w naturalnym języku ukraińskim ("молоко 2шт, хліб, курка 1.5кг") lub wyszukiwać produkty we wszystkich czterech sklepach z zdjęciami. Gdy klient kliknie porównaj, backend wysyła równoległe zapytania do wszystkich czterech API sklepów i zwraca porównanie całkowitych kosztów koszyka posortowane od najtańszego, z rozbiciem na poszczególne pozycje.

Do składania koszyka w głównym sklepie rozwiązałem problem wykrywania botów za pomocą odwróconej architektury: zamiast serwera kontrolującego przeglądarkę, własny Chrome klienta pyta serwer o pracę za pomocą rozszerzenia Chrome. Rozszerzenie atomowo pobiera zadania z kolejki Postgres, składa koszyk wewnątrz rzeczywistej sesji przeglądarki i raportuje z powrotem. Działa to na domowym połączeniu klienta, które zachowuje się jak prawdziwy ludzki klient, ponieważ nim jest.

Zbudowałem również parser paragonów: klienci wklejają URL ukraińskiego paragonu fiskalnego, a system wyodrębnia każdą pozycję (w tym towary ważone i zniżki) i przekształca ją w wielokrotnego użytku szablon dla powtarzających się zamówień.

Stos technologiczny: NestJS, TypeScript, React, Vite, Tailwind, Supabase (PostgreSQL), Redis, BullMQ, Playwright, rozszerzenie Automa Chrome, Docker, Fuse.js, bot grammY Telegram

Wyniki
- 62% oszczędności w koszyku wykryto w testach na żywo: koszyk 5 pozycji wyceniony na 301 UAH w zwycięskim sklepie w porównaniu do 787 UAH w domyślnym sklepie
- 4 sklepy wycenione równolegle w jednym zapytaniu porównawczym, a nie sekwencyjnie
- Automatyzacja koszyka na poziomie produkcji, która przetrwa agresywne wykrywanie botów, gdzie standardowe narzędzia przeglądarki po stronie serwera zawodzą w ciągu 1 do 2 uruchomień
- 31 punktów końcowych REST, 7 tabel bazy danych z zabezpieczeniami na poziomie wiersza, 37 testów zaliczonych
- Działający proces end-to-end: tworzenie listy, porównanie 4 sklepów, automatyczne składanie koszyka, parsowanie paragonu na listę, śledzenie cyklu życia zamówienia

Jak to działa
1. Klient wpisuje lub importuje listę zakupów w panelu
2. System wysyła równoległe zapytania cenowe do wszystkich 4 API sklepów
3. Panel pokazuje całkowite koszty koszyka posortowane od najtańszego z szczegółami dla każdej pozycji
4. Klient wybiera zwycięski sklep i klika zbuduj koszyk
5. Rozszerzenie Chrome przyjmuje zadanie i składa koszyk w przeglądarce klienta
6. Klient przegląda koszyk, wybiera termin dostawy i finalizuje zakupy
Szczegóły pracy
Dodana 7 kwietnia
61 wyświetleń
Freelancer
Andrey Boyko
Ukraina Charków
Brak opinii

Gotowy do podjęcia pracy Gotowy do podjęcia pracy
W serwisie 9 lat