Restaurant Listing Guide
For the vast majority of our customers, exploring food options on HungerBay starts at what we call the Listing page. One of the core tenets of the Listing team is to present our current customers with the most relevant feed of restaurants and help with discovery for our potential customers.
Additionally, we also strive to optimize for other business metrics that help in better restaurant-partner retention, lower delivery costs while not compromising on customer experience (CX) and lower number of orders needing Customer Service interventions.
Our journey in feed ranking
Utility function based rankers
Outside of the very first algorithms that were variations on popularity, the first major breakthrough came for us in formulating a multi-attribute utility function as the ranker.
Formalizing this, let’s say the utility f(.) is a function of attributes x1, x2, x3,…, xn. A customer prefers restaurant A over restaurant B if the expected utility of A is higher than that of B. How the final utility f(.) is arrived at depends on if the attributes (x’s) are independent or not. If we believe the attributes are independent, then the final utility becomes a summation. In our case, the attributes are correlated to varying degrees resulting in a multiplicative model.
More specifically, our utility is a function of 10 attributes:
a customer preference score
a restaurant similarity score
a restaurant (popularity) score.
delivery load based on average delay on restaurant
weekend rush factor based upon restaurant historical data
mean of past preparation times
distance of restaurant from ordering location
customer taste preference
average price of one person food at restaurant overlapped with customers average spend per order
customer past ordering and search history
machine learning hourly refresh
Mathematically:
For a given restaurant-customer tuple, the above score is what ranks the list of restaurants the customer sees. Depending on the use-case and/or experiment, we further modify this score to, for example, reflect real-time conditions (like SLAs, whether the systems are under stress due to inclement weather, etc.), and/or add additional constraints like diversity.