Product Case Study: Swiggy

Ragini Vaid
9 min readMay 4, 2020

--

I recently came across an interesting problem statement and decided to solve it. It is related to Swiggy(an online food ordering and delivery platform) -

Design a feature where a single user can order from multiple restaurants in a single order.

Assume the following points:

1. A delivery person receives INR 35 per delivery. You have to optimize this system in such a way that the delivery person doesn’t incur a loss (considering that he will be making a delivery from two restaurants at the same time). Calculate the extra amount (if any) that the Delivery Executive will receive.

2. The delivery charge levied on the customer is minimal. Also, do consider the Delivery Time since it is perishable food at stake and a difference in 2 minutes of delivery time also makes a lot of difference.

3. Considering the average number of orders Swiggy receives on a daily basis, when will Swiggy be able to reach Break-Even, if any? And will it be feasible to release this product or not?

So, where to start?

To solve the problem, I started researching the company and its existing product -

  • Swiggy is a food delivery aggregator that has multiple delivery executives available to deliver food in multiple cities.
  • Currently, a user can order food through Swiggy from any restaurant that is serviceable through Swiggy for that user.

Problem Statement

  • A single user can order from multiple restaurants in a single Swiggy order.

Target Audience

  • Age: 20 to 40 years old
  • Current situation:
  • College students
  • Working professionals
  • People living away from their family/bachelors

Considering India’s population ~ 1.2 billion

India’s population — age bracket split

Now, out of 0.48 billion, considering Swiggy has 40% of the market share in the food delivery industry,

= 40% of 0.48 billion ~ 0.19 billion

Assumptions

  • Swiggy currently takes no delivery charge from the customer for near buy orders, up to a certain distance.
  • Swiggy delivery executive gets paid per delivery/order. There are no additional incentives.
  • Swiggy has both part-time and full-time delivery executives, their earnings would be the same, the only difference is in the working hours.

Delivery Executive’s earnings

The amount earned by delivery executives for each delivery = Travel pay + Wait time pay + Successful delivery pay

  • Travel pay — (First Mile* + Last Mile*) — consider Swiggy pays Rupee 1 per minute. On average, the delivery executive spends 25 minutes in travel/order.
  • Wait time pay is calculated based on waiting time at the restaurant -
wait time pay calculation for a delivery executive
  • Successful delivery pay Rs. 5
  • Total earnings of delivery executive/order = Rs. (25 + 5* + 5) = Rs. 35

* Considering Swiggy’s algorithm doesn’t make a delivery guy wait for more than 5 minutes after reaching the restaurant.

*First Mile: How long before they arrive at the Restaurant?

*Last Mile: How much time is required for the Delivery Executive to reach the customer from the Restaurant?

Introducing multiple restaurants dishes in a single order

What will be the impact on the delivery executive’s earnings if we allow a single order containing multiple restaurant orders?

  • Time for delivery would increase because of traveling to multiple restaurants, prep time will differ, which will increase the overall delivery time for the delivery executive.
  • Since the delivery time for each order will increase, the number of deliveries possible would decrease.
  • With a decrease in the number of orders, the average number of tips would also decrease.
  • The average tip amount could increase or stay the same, we are going to assume it stays the same.

All these factors will lead to a decrease in the delivery executive’s earnings, he/she would be incurring a loss.

Comparison between ordering from a single restaurant vs. order from multiple restaurants

*Calculated using the formula -

  • The amount earned by delivery executives for each delivery = Travel pay + Wait time pay + successful delivery pay
  • Single restaurant order = Rs. (25 + 5 + 5) = Rs. 35
  • Multiple restaurant order = Rs. [40 + 5(1st restaurant’s waiting time) + 5(2nd restaurant’s waiting time) + 5] = Rs. 55
  • With a single restaurant order:
  • Full-time delivery executive earns Rs. 565/day and part-time delivery executive earn Rs. 320/day.
  • With orders from multiple restaurants:
  • The full-time delivery executives will now earn Rs. 485/day and part-time delivery executive earn Rs. 265/day.

How to solve the problem?

  • We can clearly see that the delivery executives would be incurring losses, going to multiple restaurants for single order have to profitable for them or they can also cancel the order/not accept it.
  • The only way to overcome this problem is to make changes to their earnings model –
  • The amount earned by delivery executives for each delivery = Travel pay + Wait time pay + successful delivery pay
  • Travel pay(first mile + last mile) — consider Swiggy pays INR 1 per minute.
  • Wait time pay is calculated based on waiting time at the restaurant.
  • Successful delivery pay Rs. 20

If we increase the successful delivery pay for delivery executives from Rs. 5 to Rs. 20 considering they are going to multiple restaurants for delivering a single order and are able to successfully deliver such orders.

  • How will we cover up the extra Rs. 15 which we will have to provide to the delivery executives?

We can take Rs. 30 as a delivery charge from the customer whenever he/she is placing an order from multiple restaurants. Rs. 30 is not an exorbitant amount for a user but a minimal fee so they can easily pay it — Rs. 15 can be given to delivery executive for successful delivery pay and the remaining can help Swiggy with the overhead cost.

(REVISED) Comparison between order from single restaurant vs. order from multiple restaurants
(REVISED) Comparison between an order from a single restaurant vs. order from multiple restaurants

*Calculated using the formula -

  • The amount earned by delivery executives for each delivery = Travel pay + Wait time pay + successful delivery pay
  • Single restaurant order = Rs. (25 + 5 + 5) = Rs. 35
  • Multiple restaurant order = Rs. [40 + 5(1st restaurant’s waiting time) + 5(2nd restaurant’s waiting time) + 20] = Rs. 70

Challenges?

  • Order Delivery time:

Delivery Time = Max (Assignment Delay + First Mile Time, Prep Time) + Last Mile Time

  • Assignment Delay: How long before we can find a Delivery Executive who can fulfill this order?
  • First Mile: How long before they arrive at the Restaurant?
  • Prep Time: How much time is required for the Restaurant to prepare the food?
  • Last Mile: How much time is required for the Delivery Executive to reach the customer from the Restaurant?
  • Since the assignment delay and first mile happen in parallel with the restaurant’s food preparation, the maximum of the two is taken.
  • Considering the complexity behind delivery from just one restaurant, having other restaurants added at a distance of even 1 KM would make a big difference!

The proposed solution — MVP

  • The profitability and sustainability of Swiggy as a delivery platform depend largely on its efficiency in delivering orders and maintaining good customer experience.
  • Based on this, we can launch an MVP with the following features –

A user can only order from multiple restaurants only if they are within 500 meters of each other eg. within the same complex, block, or nearby location.

We can start multiple restaurants order by taking orders from 2 restaurants and not more since each additional restaurant’s order would increase the wait time for the user as well as the rider.

  • Food preparation time at each restaurant differs(especially during rush hours, it might aggressively increase).
  • Number of dishes in the order.
  • Food preparation time even differs from dish to dish.

Eg. Time taken to prepare a pizza would be definitely more than putting a scoop of ice cream into a cone.

  • Time taken to travel between different restaurants for each order.
  • Cost of traveling between different restaurants.

User Flow

  • A user looks up a restaurant and selects a dish(es) to order from that restaurant.
  • The user adds the dish(es) to the cart from the first restaurant.
  • The user now wants to club dish(es) from another restaurant in the same order, so the user looks up another restaurant.
  • Once the user selects a dish and decides to ‘add to cart’ –
  • If the order is from a restaurant that is near to the first restaurant(up to 500 meters), user is informed that a delivery charge would be levied for this order.
  • If the user is comfortable with the delivery charge, he/she can continue to place the order and is able to add the dish.
  • If the user is not comfortable with the delivery charge, he cancels adding the dish.
  • If the order is from a restaurant that is not near to the first restaurant, the user is given a popup informing the user that he/she can not club order from this restaurant in the existing order.

High Fidelity Wireframes

Created using Balsamiq Mockups.

Step 1: A user looks up a restaurant to order from.
Step 2: The user selects a dish(es) to order from that restaurant.
Step 3: The user adds the dish(es) to the cart from the first restaurant.
Step 4: User now wants to club dish(es) from another restaurant in the same order.
Step 5: The user picks the second restaurant to order the dish(es) from.
Step 6: If the order is from a restaurant which is far away from the first restaurant, a popup is shown informing the user that he/she can not club order from this restaurant in the existing order.
Step 7: The user picks another restaurant to order the dish(es) from.
Step 8: If the order is from a restaurant that is near to the first restaurant(up to 500 meters), the user is able to add the dish but he/she is informed of the delivery charge via an alert box.
Step 9: If the user is comfortable with the delivery charge, he/she selects ‘continue’ to place the order and is able to add the next dish.
Step 10: User has dishes added from multiple restaurants in the cart, he/she can now place the order.

Product Roadmap (3 months)

We can introduce ‘Partner restaurants’:

  • Where we can suggest restaurants for users to order from which are partners of the first restaurant whose dishes they intend to order.
  • Incentivize to increase adoption for the feature — 10% additional off if you order dishes from the partner restaurant of this restaurant.

Product Roadmap (6 months)

  • Recommendation engine
Recommend different restaurants to a user to place an order from multiple restaurants.
We can recommend dishes to a user while placing the order.

Feasibility for Swiggy?

  • Even though we can optimize the cost for delivery executives so that they don’t face losses with the solution provided, we can not ensure that Swiggy will be able to reach breakeven with this solution.
  • A clever algorithm could optimize to some extent, where once you have added the first item in the cart through a restaurant’s page, it allows you to add more dishes from other restaurants but this would still result in major issues in terms of logistics & cost.
  • The downside of user experience — Food is supposed to be delivered hot. Because of the increase in order items and rush for the rider to deliver food on time, most of the time, the user will receive cold/spilled/soggy food.
  • If the user is paying extra charges for the delivery and having a bad experience with food — this will lead to an increase in user complaints and Swiggy will be refunding more money to users than they might end up making.
  • Wait time for rider would increase by a lot, which will also result in losing the opportunity to club multiple orders destined to different customers living in the same neighborhood etc.
  • Only ~8–10% cases currently where users would need to order from more than one restaurant for the same mealtime — limited use cases(e.g. dessert or starters from a different restaurant) which means considering the downside in terms of system complexity and logistic issues, there is not a very high need/necessity for this feature.

Quite an interesting problem which I enjoyed and tried solving to the best of my knowledge!

*All the details related to the Swiggy product are either assumed or based on research, not my own.

--

--