How are dishes ranked?
The recommendation engine handles every search in six layers. Here is how a dish actually ends up at the top of your results:
Layer 1: Quality cut
Before anything else, we drop low-rated restaurants entirely. Every restaurant gets a single quality score from 0–10 combining Google reviews and Wolt ratings — with a statistical correction so a place with only a handful of reviews doesn't get artificially boosted by one or two enthusiastic posts. Anything scoring below 7.5 is excluded from the pool before scoring even starts.
Layer 2: Mood match (the biggest signal)
This is the dominant factor. Pick one mood and the engine softly prefers dishes that match it. Pick two and at least one must match — with the first mood you tapped weighted more heavily than the second. Mood matching counts for roughly 75% of the score.
Layer 3: Restaurant rating
The quality score from Layer 1 also feeds into the final ranking — not just as a filter. Better-rated restaurants get a meaningful boost in ordering. Counts for roughly 25% of the score.
Layer 4: Distance (a soft preference)
Distance is a tilt, not a filter. A restaurant 3 km away is preferred over one 6 km away, but neither gets excluded. The reasoning: you probably don't want to walk across town for lunch, but a great spot 4 km away is still worth knowing about. Counts for roughly 15% of the score.
Layer 5: Restaurant variety cap
We keep only the top two dishes per restaurant. Without this rule, a place with 80 menu items would crowd out everyone else. The cap means your results show ten dishes from at least five different restaurants.
Layer 6: A dash of randomness
A deliberate jitter is added to the final score so two searches with the exact same filters won't return identical results. Tapping "I'm feeling lucky" turns this up further for genuine surprise.
TL;DR: Bad restaurants are filtered out, mood is the biggest factor, rating and distance refine the order, and randomness keeps things fresh.