How We Built the New GO-SHOP
A Product Manager’s perspective on building and shipping a robust product quickly.
By Husain Ghadially
Some of you may be wondering, what is GO-SHOP? Here’s some context: GO-SHOP enables hyperlocal instant commerce. 🛍 Customers purchase items from shops and get them delivered instantly by our driver partners. The partner is a task master, payment channel, and delivery mechanism. Cosmetics, groceries, beverages, cakes & pastries, and food from unregistered restaurants are most popular on GO-SHOP.
GO-SHOP has made lives easier for customers, and created wealth for a significant number of GOJEK’s merchant and driver partners.
We recently did a ground up rebuild of the app and saw order volumes go up 1.5X. This was achieved by a diverse, seven-member team of engineers, designers, and researchers in just over four months. We have an elaborate ecosystem of internal services and stakeholders. Therefore, our main challenge was to launch a new product from scratch quickly, while reliably addressing large numbers of monthly orders.
This post gives a behind-the-scenes view of this exercise from a product standpoint.
Why did we rewrite GO-SHOP?
GO-SHOP was one of the first products launched back in 2015 (after GO-RIDE). After dealing with scaling our systems and our business, this was a good chance to take a fresh look at one of our earliest products. Here are some reasons why:
1. The longer a product remains without major changes, the harder it gets to modify. The key challenge is the team doesn’t have sufficient context. It’s easier and more reliable to re-build it from scratch
2. A redesign was required to match our new design language
3. We had to break away from a legacy monolith backend and introduce a distributed architecture that could scale much better.
Our ‘secret’ sauce to getting a product out fast
- Asphalt, our very own UI library with pluggable components that meet our design language and guidelines. This helps us build new user experiences at lightning speed. Read more about Asphalt here.
- Applying scale and reliability patterns from our largest services like GO-RIDE, GO-FOOD, and GO-PAY. We reused idempotent order handling, persistent retries, graceful startup and shutdown of services, async workers and an elaborate monitoring system with real time alerts.
- Data-based answers to seemingly trivial questions. It always surprises us how many insights we can draw from our own data. We just need to ask the right questions. Another surprising fact was how much time we waste over trivial questions. Constantly reminding oneself of the 80–20 rule helps. We’ve seen 2 interpretations of this rule — 80% of the value comes from 20% of use cases / effort. OR, Solve for the 80% and establish reasonable workarounds of the remaining 20.
- Every feature is behind a remote config. Disconnect feature completion and release milestones. Roll out a feature only when it is proven to be stable. A feature is proven stable only when real users are able to get real work done with it.
- Managing internal stakeholders and getting them all aligned with each group’s individual priorities is highly underrated. Everyone wants to help and has the right intentions. A genuine ask then, is explaining the background context and the justification. A little humour goes a long way towards achieving this. 🙂
- Retrospectives that result in real actions. Spend more time on the negatives. Nothing, NOTHING is off the table for discussion, but EVERYTHING must result in an action.
These are the key factors that allowed us to build the new GO-SHOP from scratch quickly.
However, unless a new design adds new value, order volume will flatline. So how did we achieve 1.5x growth in order volumes?
Research & Product: what & why of the most impactful changes
We started with a few broad but key questions centred around our main stakeholders. These helped us define direction and drive specific product changes.
What are the key friction points for users?
- Difficult to find and select the pick up and delivery locations: We made it easier to select locations by adding location notes, and the ability to select locations from the user’s history. We found that users usually select the delivery location as their current location, so by default the delivery location selection is skipped. However, we provided a way to change it if needed.
- Filling the details of the order, specifically what to buy, and the item price, was time consuming and error prone: We used data models to identify the most popular items and their prices at each merchant. We enable users to pick these from a list quickly and easily.
What challenges do drivers face while accepting and completing orders?
- Drivers find it hard to understand what to buy. Shopping details are a string of text and its hard to distinguish one item from the next: An item cart was added. The cart allows information about items to be properly structured not only for users, but also for the drivers. Introduction of driver-to-customer chat with image sharing also allows better communication fidelity.
- Drivers may not have enough money available to purchase items requested in the order: GO-PAY’s Pay-Later is being evaluated for this use case. This enables drivers to pay for items using the credit scheme of their GO-PAY wallet, even if they don’t have enough balance.
How do merchants perceive a GOJEK driver coming to the shop to fulfil a GO-SHOP order? What improvements would make it easier for merchants?
- Merchants that receive larger order volumes don’t have visibility / predictability into how many orders they get and when: We are evaluating sharing business insights with merchants, to help them plan better, and improve the chances of successfully fulfilling an order.
What are the challenges faced by the operations team?
- Our customer care and driver care units need evidence of a receipt to decide whether an order should be refunded: The driver app requires the driver to upload a photo of the receipt.
- They require better tools to cancel or refund orders: Both drivers and customers can create support tickets through the app (or by calling in). Refunds are processed instantly using GO-PAY.
We learnt a lot from all stakeholders while re-imagining GO-SHOP. Most of the crucial product changes surfaced from nuances deep within data, or unsolicited tangential comments from users, driver and merchant partners, and operations. We spent a lot of time at first just looking at data, and for the longest time, it felt like nothing was coming together. However, after several weeks, patterns started to emerge and all the data points which seemed initially disconnected, started to make sense.
We’d also like to hear your feedback about GO-SHOP and what product changes you think may drive higher impact and order volume. Do leave your inputs in the comments below.
Rewrites, refactors and general reassessments of product strategy are inevitable at the kind of scale GOJEK operates at. Which is why transparent communication and data-driven decision making are tenets we value. We also happen to be hiring. If you possess the qualities mentioned above, we’d love to talk to you. Check out gojek.jobs and grab the chance to work with us 🖖