The problem statement is as follows:
Create a sorting logic for cinemas on this (Cinema listing) page
We can think of the problem as designing a Recommendation-Engine that considers a set of factors and suggests the most suitable Cinemas.
Factors that impact choice of Cinema
Note: Assuming the User is making the booking on a Mobile device, we can assume we have their current location.
Factors that would affect choice of Cinema for our would include (in no particular order).
Group Factors into Categories
To decide whether a Cinema is the right fit we can evaluate each one on three axes:
Creating a Recommendation Engine
Based on the factors, we can score each Cinema. Once each Cinema has a score, we can just sort them in descending order:
Constructing a Formula
Note: Since we’re prioritizing Planned outings, we’re dropping Time to Movie-Start for now.
Each Factor is scored as per the table below:
Tweaking the Formula for different User Personas
The above formula is a baseline for sorting Cinemas for a new customer we know nothing about.
As we learn more about a customer, we can add a weight-age factor to each of the terms above.
does the user generally pick cheaper tickets, has the user already sorted by Price has the user sorted by Distance to cinema? does the user have a small set of Cinemas they regularly visit? does the user typically view Movies in better quality Cinemas? has the user already sorted by Amenities? l, m, n are Real numbers in range [1, 2]
This allows the formula to dynamically adapt the ranking as we learn more about the Users preferences and behavior. For example:
If we detect that the User is on the move, they might be looking for a last-minute booking In that case we can increase the value of the m-factor so that distance to cinema and time-to-movie-start have more weight-age so that closer Cinemas get a boost in the rankings.
Some acceptance criteria would be:
Cinema’s should load within 1 second at most Cinemas can be paginated, minimum 5 per page no bugs related to the way available seats are displayed per Cinema Loading available Cinemas is the priority on the screen, the movie-rating, banner-art, and other header information can be progressively loaded later if that will cut down response time.
Since we’re looking to Increase our Market-Share, as per our , we would be looking to improve Retention metrics. As we roll-out changes to the recommendation algorithm, we would monitor the following Metrics: Visit to Sale Conversion % How many people who click on a Movie to view Cinemas end up purchasing a ticket How many people select a Show-Time and then abandon the flow What percentage of Customers come back to purchase movie-tickets.
Note: We could directly measure # of Orders or Revenue but those metrics are bound to have hundreds of input metrics, and probably have too much lag time to be able to derive Product Insight for the Listings page.
From our Success Metrics (👆 above) and our , we can derive low-level metrics: Average time spent on Listings Page Number of Clicks on Listings Page less clicks (on filters, etc) the better Average Number of Cinemas loaded assuming that the list is paginated, the more the User swipes the more cinemas are loaded. if we’re recommending the right cinemas, this metric should reduce.
Interactive Prototype of Sorting Algorithm
Below is a simplified version of the formula shared above. It directly gives a rating to Cost-Effectiveness, Convenience and Quality instead of calculating it from the Factors as shown above.
Note: The Cinemas listed below are all 27 permutations offor Cost-Effectiveness, Convenience and Quality .
Change the following sliders to see impact on the Sorting order.
User’s Price Sensitivity : User’s Convenience Focus: User’s Quality Mindedness:
In addition to working on the recommendation engine, there are some other ways we could improve conversions and increase retention Some ideas are listed here: