Dynamic Time Slot Pricing at honestbee

— by Dat Le on 13th Feb 2017

Background

Like many other businesses, honestbee operates on a supply (shopper bee and deliverer bee) & demand (consumer) model, with our demand side being much more volatile in real time comparing to its counterpart.

As our team’s duty is to ensure the best service to our customers, we need a mechanism to flatten our capacity curve for a smoother operation. As a solution, we launched the “Dynamic Time Slot Pricing” feature earlier last week:

At the final step of your purchase journey, you will be prompted to chose a preferred time slot

Why does Dynamic Time Slot Pricing help us?

On any day, a store’s capacities might look like this:

A very inconsistent distribution

Because:

  • under-utilized slots are essentially wasted resource,
  • fully-utilized slots are those that can not be used anymore — this gives customer less freedom when choosing their preferred delivery time

, our goal is to achieve a more balanced time slots utilization:

A well-balanced day

How does Time Slot Pricing get calculated and updated?

At the heart of the engine, there are comparisons between current usage of each time slot to other time slots on the same date.

If a time slot is heavily preferred, or in other words, its utilization is currently higher than most of the available time slots in the same day, its price will be increased so that our customers are more likely to chose under-utilized time slots.

For our initial setup, we use Amazon S3 as a communication medium between Engineering and Data Science team when updating the new time slot pricing values.

The high-level architecture would look like this:

High-level architecture

How do we evaluate our Dynamic Pricing Engine?

We came up with two evaluation metrics:

  • Standard deviation of time slot utilization
  • On-time delivery rate

and two evaluation methodologies:

  • Time-series based — comparing before and after (new) Dynamic Pricing Algorithm was online
  • A/B testing — on stores level, by choosing 2 sets of stores with similar performance and compare their results.

Frequently Asked Questions

How to avoid peak pricing?

Naturally, there is a higher probability that your preferred time slot is getting filled up quickly as it’s getting closer.
Simply avoid it by ordering in advance, at least a few more hours, a day, or a few days ahead. Your personal planning will also help us plan ahead better.

Are we calculating peak pricing based on our customer profile?

Not at all. Pricing is calculated depending on how much the time slots are getting filled up. The earlier you placed your order, the higher chance you will not have to pay a high peak time slot price.

Why is time slot pricing actually get reduced or removed sometimes?

As the demand for such time slot might go down comparing to others, there is a small chance the time slot price will be reduced of removed.

Conclusions

Dynamic Pricing is not a new subject: companies like Uber (transportation), Sprig (food), and others (ticketing) have already been doing it for quite a while. In our case, the nature of the problem is similar, but implementation, logic, and goal can be quite different.

Dynamic Pricing does not aim to be a mean of revenue generation, but rather, a way for us to eliminate wasted resources, to ensure a more reliable operational level, and finally, to create happy homes through delightful service and flexible jobs 😊.