You are on page 1of 3

Product Data Analyst @ Company_X - Home Task

Introduction

Company_X’s Delivery vertical is a three-sided marketplace that connects customers,


restaurants and couriers.

Couriers travel to restaurants to pick up orders prepared by the restaurant. After the
restaurant finishes preparation and the courier picks up the order, the courier travels to
the customer to deliver the order. Our goal is to eliminate wasted time for the courier
and have orders delivered to customers faster and on time, while the food is warm.
Your task is to identify how we can reduce the time spent by a courier on an order
using these datasets.

We expect your submission to cover the following angles:

1. Data discovery: Identify where our biggest delivery inefficiencies take place
2. Business case: Specify business benefits of reducing the largest identified
inefficiency
3. Requirements definition: Define at least one product feature to reduce the
largest identified inefficiency
4. Feature validation: Once the feature(s) are built, provide a specific example of a
validation approach with design and steps

Please submit both the code you use to arrive at the results (preferably in notebook
format - Python or R), and the document (written or presentation) that answers these
questions. At Company_X, we stay efficient through concise and to-the point
communication. Being succinct in your submission is highly encouraged.

We expect the exercise to take ±8 hours to complete and Data discovery to take most
of your time. Keep in mind the submission does not need to be perfect:
● time-box your work and make the most out of it
● make assumptions where needed, and state them
● show us your thinking
Data

Orders (link)
The first dataset contains information on the orders created.

={ order_state: either ‘failed’ or ‘delivered’ depending on


🔑order_id: integer, whether the order was successfully delivered.
customer_id: integer,
restaurant_id: integer, order_promised_delivery: the timestamp in local timezo
city: string, determined by Company_X and shown to the customer
restaurant_address_lng: float, immediately after placing the order.
restaurant_address_lat: float,
delivery_address_lng: float, restaurant_finished_preparation: the timestamp in loca
delivery_address_lat: float, timezone at which the restaurant communicates that the o
order_state: string, ready for delivery.
order_promised_delivery: timestamp,
restaurant_finished_preparation: timestamp

Order stages (link)

The second dataset contains the order stages from a courier’s perspective based on
system logs related to couriers’ activity in the Company_X courier app.

Suggestion: review for an individual ‘order_id’ the different order stages to understand
the meaning of the stages and timestamps.

_stages = { order_stage_start/end: the timestamp in local timezone a


city: string, which the order stage is initiated. The stages depend on co
🔑order_id: integer, performing certain actions in the Company_X Courier app
🔑courier_id: integer,
vehicle_type: string, courier_location_lng/lat_at_start: the coordinates of the
order_stage: string, courier at the time of when the order stage starts.
order_stage_start: timestamp,
courier_location_lng_at_start: float, estimated_travel_seconds_to_restaurant/customer: dur
courier_location_lat_at_start: float, estimated for courier to travel to the restaurant/customer.
estimated_travel_seconds_to_restaurant: integer,
estimated_travel_seconds_to_customer: integer, distance_courier_to_restaurant/customer_address: flig
distance_courier_to_restaurant_address: float, distance in meters between courier location and
distance_courier_to_customer_address: float, restaurant/customer address.
updated_expected_delivery_time: timestamp
updated_expected_delivery_time: the timestamp in local
timezone updated by Company_X and shown to the custom

Good luck!

You might also like