The Company Business Model

Bike rental with an app, where riders pay for the time they rented the bikes for.

The Business Case

User (rider) attrition prediction, and ideally, prevention. Basically, once a user hibernated (has not rented) for 30 days, we send a promo code with some discount on their next rental, if hibernated for 45 days, then another promo code etc. This business logic uses something like an RFM analysis. But delivering each code has its own cost, and then, not all users are likely to use the code either.

Data We Have

Users' ride histories, along with some demographic data such as home address, work address, gender, age, income level etc. along with some external data like weather, public transport data etc.

Modelling Objective

Basically, replace the business logic I said earlier with a model, based on historic data, that will select $N$ users everyday (let's say $N=5,000$) to send a promo code, the basic criteria (in plain English) being

  • Users who are least like likely to engage with the platform absent the promo code
  • Users most likely to use the promo code

Obviously, we do not want to waste the promo by sending to a user who is likely to ignore it, but also not to anyone who is likely to engage anyway. In other words, how to select users who are most likely to be swayed by the promo. Of course, we will have some postprocessing logics as well to not badger a user with a promo every day, but that's an implementation detail. Also, we are not tuning the promo amount/conditions with the model, the sole purpose of the model (or some blackbox algorithm) would be to select $N$ users to send a promo code.

The Business KPI

Average weekly ridership after the model is deployed. The management does not care about the model details, loss function etc. (obviously). If the ridership after the model deployment shows a lift, then I get a raise, if it drops, then I get fired.


Although I have the data, and know all about developing specific classification, forecasting models etc., coming from a big data engineering background, I am struggling with translating this business problem into a well defined machine learning problem. I can featurise the history and demographic, but what should be the type of label, and the loss function/metric to look for (assuming I am using some variations of feed forward DNN, or other tree based methods like XGB etc.)?

Or, is this question (selecting the best the $N$ users) addressed better by not a model (in ML sense), but some kind of statistical number crunching? I realise the question is probably more business intelligence than data science, but any help or reference would be appreciated, on how would you approach it.

  • $\begingroup$ Do you have any data, from previous promo codes, on whether any of the user accounts have used promo codes in the past? It changes the nature of this problem a lot if you have no current ground truth for your target. $\endgroup$ Commented Nov 17, 2023 at 9:10
  • $\begingroup$ @NeilSlater yes, I have historical promo code usage data $\endgroup$
    – Della
    Commented Nov 18, 2023 at 2:46


You must log in to answer this question.

Browse other questions tagged .