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. Ansicht „Für dich“ — Reihenfolge der Nutzerinhalte
Seit dem 24. August 2026 ist die Ansicht „Für dich“ in der App (bis 26. Oktober 2026 der Tab „Entdecken“) keine reine Zeitleiste mehr: Sie 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 zur Ansicht „Gefolgt“ (im Menü unter dem Feasty-Logo) wechseln, die ausschließlich gefolgte Personen
in chronologischer Reihenfolge zeigt — ganz ohne Ranking.
1.2. Karte — welche Lokale bei welcher Zoomstufe sichtbar sind
Seit dem 28. September 2026 hat die Karte in der App ein Pin-Budget: Im Zentrum einer Großstadt umfasst ein Ausschnitt 200–300 Lokale, daher zeichnen wir nicht alle gleichzeitig. Ein Lokal außerhalb des Budgets bleibt in der Datenbank — Heranzoomen zeigt es, und die Suche findet es immer.
| Parameter | Wirkung |
|---|---|
| Zoomstufe | Weit herausgezoomt sind Lokale mit Bewertung A und höher sichtbar; bei mittlerem Zoom — jedes bewertete Lokal; auf Straßenebene — auch unbewertete Lokale mit einem Feasty-Eintrag (jemand hat das Lokal gespeichert oder hinzugefügt); ganz herangezoomt — auch die übrigen Lokale aus offenen Daten (Overture Maps Foundation). |
| Raster | Der Bildschirm wird in Zellen mit einer Seitenlänge von 70 Punkten geteilt; in jeder Zelle ist ein Lokal sichtbar — das mit der höchsten Priorität. Gruppen von Lokalen (Cluster mit Anzahl) belegen ihre Zellen zuerst. |
| Priorität in der Zelle | (1) ein Lokal auf den Listen des Nutzers oder bewertet von Personen, denen er folgt; (2) Bewertung (Tier), bei gleichem Tier die Anzahl der Bewertungen; (3) ein Lokal mit Feasty-Eintrag ohne Bewertungen; (4) die übrigen Lokale aus offenen Daten. Gleichstände entscheidet eine feste, vom Lokal unabhängige Reihenfolge. |
| Aktiver Filter oder Suche | Die Zoomschwellen gelten nicht — jedes Lokal, das die Kriterien erfüllt, ist sichtbar; die Rasterzelle hat eine Seitenlänge von 52 Punkten. |
isPromoted oder einen anderen bezahlten
Parameter — Werbung erhöht die Position eines Pins nicht (gesponserte Inhalte: eigener Bereich mit der
Kennzeichnung „Anzeige“, §4). Die Beziehung aus Punkt (1) besteht ausschließlich aus eigenen,
ausdrücklichen Handlungen des Nutzers (seine Listen, Personen, denen er selbst folgt) — ohne Profiling.
1.3. „Heutige Angebote“ — welche Lokale gelistet werden und in welcher Reihenfolge
Seit dem 26. Oktober 2026 führt der Tab „Entdecken“ zu einer Liste von Lokalen der gewählten Stadt, die heute etwas anbieten. Ein Lokal wird gelistet, wenn es mindestens eine von zwei Bedingungen erfüllt.
| Parameter | Wirkung |
|---|---|
| Von Feasty erfasstes Angebot | Ein wiederkehrendes Angebot, das Feasty von der Website des Lokals erfasst hat, für den heutigen Wochentag. 120 Tage nach der Erfassung wird es nicht mehr angezeigt; Preise entfallen nach 60 Tagen. |
| „Heutiges Menü“ des Restaurants | Ein vom Restaurant im Panel eingetragenes Menü — nur mit dem heutigen Datum (Warschauer Zeit). Die Funktion gehört zu den Plänen Growth und Premium, daher hängt die Listung auf diesem Weg vom Plan ab; die Reihenfolge nicht. |
| Reihenfolge | Entfernung zum Nutzer; ohne Standortfreigabe — alphabetisch. Bewertung, Anzahl der Bewertungen, Plan und Zahlungen ändern die Reihenfolge nicht. |
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 < 2 → Tier auf A begrenzt)
Unabhängig vom Durchschnitt darf ein Restaurant mit weniger als 2 Bewertungen nicht als S oder S+ angezeigt werden. Der Tier wird auf A begrenzt, bis die Schwelle überschritten ist. Die Zielschwelle liegt bei 10 Bewertungen — die aktuelle ist für den frühen Zugang gesenkt (siehe Hinweis unten).
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.2 |
26. Oktober 2026 | Neue Liste „Heutige Angebote“ (§1.3). Bewertungsgewichte und Karte unverändert. Closed-Beta-Ausnahme: Die 15-tägige Vorankündigung entfiel — am Tag der Änderung keine aktiven geschäftlichen Nutzer (ein Testkonto). |
v2.1 |
28. September 2026 | Karte: Pin-Budget (§1.2) — Lokale aus offenen Daten ohne Feasty-Eintrag erst bei vollem Zoom, Raster mit Bewertungspriorität. Bewertungsgewichte unverändert. Closed-beta exemption: 15-Tage-Frist ausgelassen — am Tag der Änderung null aktive gewerbliche Nutzer (ein Testkonto). |
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)