Ranking-Parameter
Restaurantbetreiber, die Feasty nutzen, haben das Recht zu verstehen, wie ihre Lokale auf der Karte, in der Suche und im Matchmaker-Modus positioniert werden. Dieses Dokument legt alle Ranking-Parameter und ihre relative Gewichtung gemäß Artikel 5 der EU-Verordnung 2019/1150 (P2B) offen.
1. Haupt-Ranking-Parameter
Jedes Restaurant in der Feasty-Datenbank besitzt ein aggregiertes Bündel von Signalen. Der Algorithmus
kombiniert sie multiplikativ mit der Standardsortierung nach Qualität (dominantTier) und
Entfernung (Geohash-Abfrage). Alle Felder sind öffentlich zugänglich (außer den als server-only markierten).
| Parameter | Rolle | Datenquelle |
|---|---|---|
restaurantStats.dominantTier |
Primäres Qualitätssignal | Gewichteter Mittelwert-Tier mit Recency Decay (Scoring v2 — siehe §2) |
restaurantStats.scoreNumericAvg |
Numerisch 0–10 (B2B-Dashboard) | Neu berechnet durch requestRestaurantScoreRefresh Callable (alle 7 Tage / Cron 30 Tage) |
restaurantStats.ratingsCount |
Tie-Break + Proof-of-Work-Cap (§3) | Öffentlicher Bewertungszähler |
| Geografische Nähe | Hard Filter (Karte, Matchmaker) | Geohash-Abfrage gegen Restaurant-Lat/Lng |
restaurantStats.trendingScore |
Recency-Boost | Zeitlich abnehmender Zähler (proportional zu frischen Bewertungen) |
inMembersLists (Matchmaker) |
Social-Signal-Boost | Abfrage gegen Listen der Matchmaker-Session-Mitglieder |
restaurantStats.isPromoted |
Sponsored — separater Bucket mit "Anzeige"-Label | Erfordert b2bSettings.tier == 'premium' + aktive Kampagne in adPlacements/* |
1.1. Feed „Entdecken“ — Reihenfolge der Nutzerinhalte
Seit dem 24. August 2026 ist der Tab „Entdecken“ in der App keine reine Zeitleiste mehr: Er ordnet Nutzerbewertungen mit einer automatischen Formel. Eine Bewertung betrifft ein bestimmtes Restaurant, sodass die Reihenfolge dessen Sichtbarkeit mittelbar beeinflusst — deshalb legen wir die Parameter hier zusammen mit den übrigen offen, obwohl Nutzerinhalte und nicht das Lokal gerankt werden.
| Parameter | Charakter | Gewicht |
|---|---|---|
| Beziehung des Autors zum Betrachter | Hauptsignal | ×3,0 gefolgt · ×1,6–2,0 von den Gefolgten des Betrachters gefolgt · ×1,0 alle anderen |
| Markierung einer Person, der der Betrachter folgt | Signal aus dem Graphen des Betrachters | Beziehung mindestens ×2,0, wenn der Autor in der Bewertung eine Person markiert hat, der der Betrachter folgt — nicht additiv zur Beziehung des Autors (es gilt der höhere Wert) |
| Likes der Bewertung | Soziales Signal | Multiplikator (1 + Anzahl der Likes) |
| Alter des Beitrags | Zeitlicher Abfall | Geteilt durch (Alter in Stunden + 2)^1,4 |
| Übereinstimmung der Stadt des Lokals mit der Stadt des Betrachters | Lokaler Boost | ×1,3 |
isPromoted oder einen anderen bezahlten
Parameter — gesponserte Inhalte stehen in einem eigenen Bucket mit dem Label „Anzeige“ (§4) und
dürfen die organische Reihenfolge nicht beeinflussen. Ebenso wenig findet Profiling statt: Die Formel nutzt
weder Browserverlauf noch Verweildauer noch ein Modell der Vorlieben des Betrachters. Der Wert wird beim Öffnen
des Feeds berechnet und nirgends gespeichert.
Der Betrachter kann jederzeit auf den Tab „Vertraut“ wechseln, der ausschließlich gefolgte Personen
in chronologischer Reihenfolge zeigt — ganz ohne Ranking.
2. Bewertungsgewichte (Scoring v2)
Jede Bewertung trägt zu ihrem Tier-Bucket mit einem Gewicht bei, das multiplikativ aus den folgenden Signalen
berechnet wird. Floor und Ceiling werden auf der Ebene authorWeight (0,3 – 2,0) und
recencyMul (Floor 0,15) angewendet.
| Signal | Multiplikator-Wert |
|---|---|
| Alter des Autorenkontos | <7 Tage → ×0,6 · 7–30 Tage → ×0,85 · ≥30 Tage → ×1,0 |
| Follower des Autors | 0 → ×0,8 · 1–9 → ×0,9 · ≥10 → ×1,0 |
| Lifetime-Bewertungen des Autors | <5 → ×0,7 · 5–19 → ×0,85 · ≥20 → ×1,0 |
| Low-Variance-Flag (Autor bewertet fast immer im gleichen Tier) | ×0,5 |
| Prestige des Autors | Standard → ×1,0 · Elite → ×1,5 · Connoisseur → ×2,0 |
| Alter der Bewertung (Halbwertszeit 180 Tage) | max(0.15, 0.5 ^ (ageDays / 180)) |
3. Proof-of-Work-Cap (ratingsCount < 10 → Tier auf A begrenzt)
Unabhängig vom Durchschnitt darf ein Restaurant mit weniger als 10 Bewertungen nicht als S oder S+ angezeigt werden. Der Tier wird auf A begrenzt, bis die Schwelle überschritten ist.
Begründung: Eine einzelne 5-Sterne-Bewertung (selbst von einem Connoisseur) sollte ein Lokal nicht zum "Elite"-Status erheben. Der Tier muss durch wiederholte Übereinstimmung vieler Bewerter verdient werden. Dieser Cap schützt vor Manipulation und versehentlicher Überbewertung neu eröffneter Lokale ohne ausreichende Stichprobengröße.
4. Sponsored — Kennzeichnung und Platzierung
Jedes Restaurant, das mit isPromoted == true angezeigt wird, trägt ein verpflichtendes
"Anzeige"-Label, das im ersten Frame sichtbar ist. Das Label ist in der gesamten Anwendung
einheitlich — wir verwenden keine Varianten wie "Gefördert", "Empfohlen", "Top-Auswahl" oder andere
uneindeutige Formen.
- Visuell: Sponsored-Einträge erscheinen in einer separaten Sektion oder an erster Position des Viewports, niemals "vermischt" mit organischen Ergebnissen ohne Label.
- Opt-out: Nutzer können Sponsored-Ergebnisse in den Einstellungen deaktivieren (
users/{uid}.uiPrefs.hidePromoted). Einmal deaktiviert, überspringen AbfragenisPromoted == true. - Audit Trail: Alle Kampagnen werden in der Collection
adPlacements/*mit 6-Jahres-Aufbewahrung protokolliert (polnische Verjährungsfrist für Handelsansprüche).
Rechtsgrundlage: P2B Art. 5(2) (EU 2019/1150) + DSA Art. 26 (Digital Services Act).
5. Algorithmus-Änderungsverfahren (15-Tage-Hinweis)
Jede wesentliche Änderung der Ranking-Parameter oder ihrer Gewichte MUSS mindestens 15 Tage im Voraus vor der Bereitstellung angekündigt werden, gemäß P2B Art. 3(2).
Technischer Mechanismus: Konfiguration config/rankingAlgorithm.{version, activeFrom, params} mit
einem server-seitigen Cron, der activeFrom respektiert. Restaurantbetreiber erhalten:
- In-App-Benachrichtigung im B2B-Panel (
https://business.feasty.com.pl) — Abschnitt "Ankündigungen" - E-Mail mit 15-Tage-Hinweis an die Adresse des Kontoinhabers
- Aktualisierung dieser Seite mit neuer Version (Changelog unten) und Inkrafttretensdatum
Versions-Changelog
| Version | Aktiv seit | Hauptänderungen |
|---|---|---|
v2.0 |
15. September 2026 | Korrektur der Beschreibung, Ranking unverändert: Faktor ×1,2 für „verifizierten Besuch“ entfernt — keine Verifizierungsmethode wurde je gespeichert, er galt also nie; Grundlage der 15-Tage-Frist (P2B Art. 3(2)) und Beschwerdeweg (Restaurant-Panel) korrigiert. |
v2.0 |
17. Mai 2026 | Scoring v2 Launch — recency × authorWeight × tierToScore (Halbwertszeit 180 Tage), Prestige-Multiplikatoren (Elite ×1,5 / Connoisseur ×2,0), verifizierter Besuch ×1,2. PoW-Cap verschoben nach applyProofOfWorkCap. Closed-Beta-MVP-Ausnahme: 15-Tage-Hinweis übersprungen, da zum Launch null aktive B2B-Nutzer. |
v1.0 |
März 2026 | Erstveröffentlichung — modaler Dominant-Tier + ratingsCount-Zähler + Geohash-Distanz. |
6. Anti-Manipulation
Der Algorithmus ist durch mehrere Schichten von Anti-Manipulations-Mechanismen geschützt:
- Rate Limits auf Bewertungen pro Nutzer (täglicher / wöchentlicher / monatlicher Cap)
- Tier-Verteilungs-Caps pro Nutzer (max. 20% S+, max. 40% S+S kombiniert — man kann nicht nur Topnoten "verteilen")
- Low-Variance-Flag reduziert das Gewicht von Autoren, die fast immer im gleichen Tier bewerten (×0,5)
- Server-only
authorWeight— Wert ist für Client und Bewerter unsichtbar - Prestige aus zyklischem Cron — Autoren-Tier kann nicht "gekauft" werden; er ist eine Funktion der Bewertungshistorie
- Ausschluss markierter Bewertungen — Moderation-markierte Bewertungen (DSA Art. 17) tragen nicht bei
- Deterministische Review-IDs (
${uid}_${placeId}) — ein Nutzer = eine Bewertung pro Lokal
7. Beschwerden (DSA Art. 20)
Restaurantbetreiber haben das Recht, gegen jede algorithmische Entscheidung Beschwerde einzulegen, die sich negativ auf die Sichtbarkeit des Lokals auswirkt (z.B. Tier-Herabstufung, Verbergen, B2B-Sperrung).
- Internes Verfahren: Kontosperrung — Beschwerde im Restaurant-Panel (Reiter „Beschwerde“), Antwort innerhalb von 14 Tagen; sonstige Anliegen — contact@feasty.com.pl
- Mediatoren (P2B Art. 12 — mindestens zwei außergerichtlich):
- Mediationszentrum des Schiedsgerichts beim UOKiK (Warschau, Plac Powstańców Warszawy 1)
- Schiedsgericht bei der Polnischen Industrie- und Handelskammer (Warschau)
- Zuständiges Gericht: Gericht mit örtlicher Zuständigkeit für den Sitz des Beklagten (Betreiber: Polen)