Feasty
Wersja rankingu: v2.0 · aktywna od 17 maja 2026 r.

Parametry rankingu

Restauratorzy korzystający z Feasty mają prawo wiedzieć, jak ich lokale są pozycjonowane na mapie, w wyszukiwarce i w trybie matchmakera. Ten dokument opisuje wszystkie parametry rankingu oraz ich relatywną wagę zgodnie z art. 5 Rozporządzenia UE 2019/1150 (P2B).

1. Główne parametry rankingu

Każda restauracja w bazie Feasty ma agregowany zbiór sygnałów. Algorytm łączy je multiplikatywnie z domyślnym sortowaniem po jakości (dominantTier) i odległości (geohash query). Wszystkie pola są dostępne publicznie (z wyjątkiem oznaczonych jako server-only).

ParametrCharakterŹródło danych
restaurantStats.dominantTier Główny sygnał jakości Weighted-mean tier z recencją (Scoring v2 — patrz §2 niżej)
restaurantStats.scoreNumericAvg Liczba 0–10 (panel B2B) Regenerowane przez callable requestRestaurantScoreRefresh (co 7 dni / cron 30 dni)
restaurantStats.ratingsCount Tie-break + Proof of Work cap (§3) Publiczny counter recenzji
Bliskość geograficzna Hard filter (mapa, matchmaker) Geohash query po lat/lng restauracji
restaurantStats.trendingScore Boost recency Counter malejący w czasie (proporcjonalny do świeżych recenzji)
inMembersLists (matchmaker) Boost społeczny Query po listach członków sesji matchmakera
restaurantStats.isPromoted Sponsored — osobny bucket z etykietą "Reklama" Wymaga b2bSettings.tier == 'premium' + active campaign w adPlacements/*

1.1. Widok „Dla Ciebie” — kolejność treści użytkowników

Od 24 sierpnia 2026 r. widok „Dla Ciebie” w aplikacji (do 26 października 2026 r. zakładka „Odkrywaj”) nie jest już czystą osią czasu: porządkuje recenzje użytkowników automatycznym wzorem. Recenzja dotyczy konkretnej restauracji, więc kolejność wpływa pośrednio na jej widoczność — dlatego parametry ujawniamy tu razem z pozostałymi, mimo że rankingowi podlega treść użytkownika, a nie lokal.

ParametrCharakterWaga
Relacja autora z odbiorcą Główny sygnał ×3,0 osoba obserwowana · ×1,6–2,0 osoba obserwowana przez obserwowanych · ×1,0 pozostali
Oznaczenie osoby, którą obserwuje odbiorca Sygnał z grafu odbiorcy Relacja liczona co najmniej jako ×2,0, gdy autor oznaczył w recenzji osobę obserwowaną przez odbiorcę — nie sumuje się z relacją autora (liczy się wyższa z dwóch)
Polubienia recenzji Sygnał społeczny Mnożnik (1 + liczba polubień)
Wiek wpisu Spadek z czasem Dzielenie przez (wiek w godzinach + 2)^1,4
Zgodność miasta lokalu z miastem odbiorcy Boost lokalny ×1,3

1.2. Mapa — które lokale widać przy danym przybliżeniu

Od 28 września 2026 r. mapa w aplikacji ma budżet pinów: w centrum dużego miasta jeden kadr obejmuje 200–300 lokali, więc nie rysujemy wszystkich naraz. Lokal poza budżetem nie znika z bazy — odsłania go przybliżenie mapy, a wyszukiwarka znajduje go zawsze.

ParametrDziałanie
Stopień przybliżenia Przy dużym oddaleniu widać lokale z oceną A i wyższą; przy średnim — każdy lokal z oceną; przy przybliżeniu do ulicy — także lokale bez ocen, dla których istnieje wizytówka Feasty (ktoś zapisał lokal albo go dodał); przy pełnym przybliżeniu — także pozostałe lokale z otwartych danych (Overture Maps Foundation).
Siatka Ekran dzielony jest na komórki o boku 70 punktów; w każdej komórce widać jeden lokal — ten o najwyższym priorytecie. Grupy lokali (klastry z liczbą) zajmują komórki pierwsze.
Priorytet w komórce (1) lokal z list użytkownika albo oceniony przez osoby, które obserwuje; (2) ocena (tier), a przy równym tierze liczba recenzji; (3) lokal z wizytówką Feasty bez ocen; (4) pozostałe lokale z otwartych danych. Remis rozstrzyga stała kolejność niezależna od lokalu.
Aktywny filtr albo wyszukiwanie Progi przybliżenia nie obowiązują — widać każdy lokal spełniający kryteria; komórka siatki ma bok 52 punktów.

1.3. „Dzisiejsze oferty” — które lokale są na liście i w jakiej kolejności

Od 26 października 2026 r. zakładka Odkryj prowadzi do listy lokali wybranego miasta, które mają coś na dziś. Lokal trafia na nią, gdy spełnia co najmniej jeden z dwóch warunków.

ParametrDziałanie
Oferta spisana przez Feasty Oferta cykliczna, którą Feasty spisało ze strony lokalu, na dzisiejszy dzień tygodnia. Po 120 dniach od spisania nie jest pokazywana, a po 60 dniach znikają z niej ceny.
„Dzisiejsze menu” restauracji Menu wpisane przez restaurację w panelu — wyłącznie z datą dzisiejszą (czas warszawski). Funkcja należy do planów Growth i Premium, więc obecność na liście przez tę ścieżkę zależy od planu; kolejność — nie.
Kolejność Odległość od użytkownika; bez zgody na lokalizację — alfabetycznie. Ocena, liczba recenzji, plan ani płatności nie zmieniają kolejności.

2. Wagi recenzji (Scoring v2)

Każda recenzja kontrybuuje do bucketu swojego tieru z wagą obliczoną multiplikatywnie z poniższych sygnałów. Floor i ceiling są stosowane na poziomie authorWeight (0.3 – 2.0) oraz recencyMul (floor 0.15).

SygnałWartość multiplikatora
Wiek konta autora<7 dni → ×0.6 · 7–30 dni → ×0.85 · ≥30 dni → ×1.0
Obserwujący autora0 → ×0.8 · 1–9 → ×0.9 · ≥10 → ×1.0
Lifetime recenzji autora<5 → ×0.7 · 5–19 → ×0.85 · ≥20 → ×1.0
Low-variance flag (autor prawie zawsze ten sam tier)×0.5
Prestige autoraStandard → ×1.0 · Elite → ×1.5 · Connoisseur → ×2.0
Wiek recenzji (half-life 180 dni)max(0.15, 0.5 ^ (ageDays / 180))
Dlaczego pokazujemy konkretne liczby? Prestige autora (tier) jest wyłącznie server-side computed przez cykliczny cron na podstawie historii — nie da się go "kupić" ani podrobić. Pełna transparentność wartości multiplikatorów jest dla nas ważniejsza niż „security through obscurity" — restaurator powinien rozumieć, dlaczego dokładnie jego lokal ma taki a nie inny tier.

3. Cap Proof of Work (ratingsCount < 2 → tier ograniczony do A)

Niezależnie od średniej, restauracja z liczbą recenzji mniejszą niż 2 nie może wyświetlać się jako S lub S+. Tier jest capowany do A dopóki próg nie zostanie przekroczony. Próg docelowy to 10 recenzji — obecny jest obniżony na czas wczesnego dostępu (ramka niżej).

Uzasadnienie: Pojedynczy 5-gwiazdkowy głos (nawet od Connoisseura) nie powinien wynosić lokalu do statusu "elite". Tier musi być zasłużony przez powtarzalną zgodność wielu recenzentów. Ten cap chroni przed manipulacją oraz przypadkowym wybijaniem nowo otwartych lokali bez wystarczającego sample size.

Closed-beta tuning (2026-05-26): próg PoW chwilowo obniżony do 2 recenzji aby mapa pre-MVP (cienka liczba lokali) pokazywała widoczne S+/S restauracje. Wartość wraca do 10 przed publicznym launchem.

4. Sponsored — etykietowanie i pozycjonowanie

Każda restauracja wyświetlana z isPromoted == true ma obowiązkową etykietę "Reklama" widoczną w pierwszym frame'u. Etykieta jest jednolita w całej aplikacji — nie używamy wariantów "Promowane", "Polecane", "Top wybór" ani innych nieczytelnych form.

Podstawa prawna: art. 5 ust. 2 P2B (UE 2019/1150) + art. 26 Aktu o usługach cyfrowych (DSA).

5. Procedura zmian algorytmu (15-dniowy notice)

Każda merytoryczna zmiana parametrów rankingu lub ich wag MUSI zostać ogłoszona z co najmniej 15-dniowym wyprzedzeniem przed wdrożeniem, zgodnie z art. 3 ust. 2 P2B.

Mechanizm techniczny: konfiguracja config/rankingAlgorithm.{version, activeFrom, params} z server-side cronem respektującym activeFrom. Restauratorzy otrzymują:

Changelog wersji

WersjaAktywna odGłówne zmiany
v2.2 26 października 2026 Nowa lista „Dzisiejsze oferty” (§1.3). Wagi recenzji i mapa bez zmian. Closed-beta exemption: 15-dniowy notice pominięty — w dniu zmiany zero aktywnych użytkowników biznesowych (jedno konto testowe).
v2.1 28 września 2026 Mapa: budżet pinów (§1.2) — lokale z otwartych danych bez wizytówki Feasty dopiero przy pełnym przybliżeniu, siatka z priorytetem ocen. Wagi recenzji bez zmian. Closed-beta exemption: 15-dniowy notice pominięty — w dniu zmiany zero aktywnych użytkowników biznesowych (jedno konto testowe).
v2.0 15 września 2026 Korekta opisu, ranking bez zmian: usunięty czynnik ×1.2 za „wizytę zweryfikowaną” — nic nie zapisywało metody weryfikacji, więc nigdy nie działał; poprawiona podstawa 15-dniowego wyprzedzenia (art. 3 ust. 2 P2B) i tryb odwołania (panel restauratora).
v2.0 17 maja 2026 Scoring v2 launch — recency × authorWeight × tierToScore (półokres 180 dni), Prestige multipliery (Elite ×1.5 / Connoisseur ×2.0), verified visit ×1.2. PoW cap przeniesiony do applyProofOfWorkCap. Closed-beta MVP exemption: 15-dniowy notice pominięty bo zero live B2B users at launch.
v1.0 marzec 2026 Initial release — modal dominant tier + counter ratingsCount + geohash distance.

6. Anti-manipulation

Algorytm jest chroniony przez wiele warstw mechanizmów chroniących przed manipulacją:

7. Odwołania (DSA Art. 20)

Restauratorzy mają prawo odwołać się od każdej decyzji algorytmu, która ma negatywny wpływ na widoczność lokalu (np. obniżenie tieru, ukrycie, suspension B2B).