This is a recruitment challenge: the top 10 places on the private leaderboard will be asked to submit their code for review, and will be invited to an interview for a job at Sasol. You can read more about the job posts here: Data Scientist | Senior Data Scientist
Every transaction tells a story - but can it also reveal what a customer will do next?
Sasol’s loyalty data captures how customers spend across fuel and convenience retail. Hidden within those transaction histories are signals about future customer value: who is likely to keep spending, who may become inactive, and where there may be opportunities for cross-sell or growth. This challenge asks you to turn those signals into forward-looking predictions that can help Sasol better understand and prioritise its customers.
You will build models to tackle two linked tasks: predict each customer’s fuel volume in litres and non-fuel spend in rands over the next three months, and predict their most likely future behaviour - from inactivity risk to new-category adoption, existing-category growth, or stable activity.
About Sasol Energy Marketing & Sales
Sasol is a global energy and chemicals company serving customers through an extensive retail and commercial network. Understanding customer behaviour and future value is central to delivering personalised experiences and sustainable business growth. In this challenge, participants will apply data science to predict future Customer Lifetime Value (CLV) using real-world customer data. Beyond competing for leaderboard success, exceptional performers may also have the opportunity to explore future Data Scientist and Senior Data Scientist opportunities with Sasol.
This is a recruitment challenge: the top 10 places on the private leaderboard will be asked to submit their code for review, and will be invited to an interview for a job at Sasol. Please note that only those eligible to work in South Africa will proceed to a job interview. We will request proof of identity and right to work from the top 10. You can read more about the job posts here: Data Scientist | Senior Data Scientist
In addition to the recruitment funnel, the top 3 places on the private leaderboard will be awarded prizes as normal, regardless of their performance in the interview process. You will be expected to submit code for review as normal. Prizes will only be awarded to South African residents. We will request proof of identity.
🥇 1st prize: 12 500 ZAR
🥈2nd prize: 7 500 ZAR
🥉3rd prize: 5 000 ZAR
There are 3 000 Zindi points available. You can read more about Zindi points here.
This challenge uses multi-metric evaluation. There are two evaluation metrics: RMSE and F1 Score. CLV_fuel and CLV_nonfuel are scored separately using standard RMSE on log-transformed, normalised targets. Opportunity is scored using Weighted F1 on the combined opportunity type-and-category labels, including the standalone Inactivity and Stable labels.
For each regression target, transform the raw three-month customer total y as z = ln(1 + y) / s, where ln is the natural logarithm and s is the population standard deviation of ln(1 + y) calculated from a fixed historical calibration set, separately for fuel and non-fuel. Raw fuel totals are in litres and raw non-fuel totals are in rands. The scaling constants and calibration definition will be published with the label-generation rules and remain fixed for all submissions. Only historical outcomes before the test cutoff are used to calculate these constants.
Submit the transformed values z in CLV_fuel and CLV_nonfuel. Standard RMSE is calculated directly between submitted and true transformed values, without applying the transformation a second time. A raw prediction can be recovered using y = exp(s × z) − 1. Zero raw totals transform to zero.
The final leaderboard score is:
Score = 0.3 × RMSE CLV_fuel + 0.3 × RMSE CLV_nonfuel + 0.4 × Weighted F1 Opportunity.
Metric Weighting
RMSE CLV_fuel 0.3
RMSE CLV_nonfuel 0.3
Opportunity 0.4
ENTRY INTO THIS CHALLENGE CONSTITUTES YOUR ACCEPTANCE OF THESE OFFICIAL CHALLENGE RULES.
Full Challenge Rules
This challenge is open to residents of South Africa. Only South African residents are eligible for prizes.
Teams and collaboration
You may participate in this challenge as an individual.
Multiple accounts per user are not permitted, and neither is collaboration or membership across multiple participants. Individuals and their submissions originating from multiple accounts will be immediately disqualified from the platform.
Code must not be shared privately outside of a team. Any code that is shared, must be made available to all challenge participants through the platform. (i.e. on the discussion boards).
Datasets, packages and general principles
The solution must use publicly-available, open-source packages only.
You may use only the datasets provided for this challenge.
You may use pretrained models as long as they are openly available to everyone.
Automated machine learning tools such as automl are not permitted.
If the error metric requires probabilities to be submitted, do not set thresholds (or round your probabilities) to improve your place on the leaderboard. In order to ensure that the client receives the best solution Zindi will need the raw probabilities. This will allow the clients to set thresholds to their own needs.
You are not allowed to access, use or share challenge data for any purpose beyond this challenge.
You must notify Zindi immediately upon learning of any unauthorised transmission of or unauthorised access to the challenge data, and work with Zindi to rectify any unauthorised transmission or access.
Your solution must not infringe the rights of any third party and you must be legally entitled to assign ownership of all rights of copyright in and to the winning solution code to Zindi.
Submissions and winning
You may make a maximum of 10 submissions per day.
You may make a maximum of 200 submissions for this challenge.
Before the end of the challenge you need to choose 2 submissions to be judged on for the private leaderboard. If you do not make a selection your 2 best public leaderboard submissions will be used to score on the private leaderboard.
During the challenge, your best public score will be displayed regardless of the submissions you have selected. When the challenge closes your best private score out of the 2 selected submissions will be displayed.
Zindi maintains a public leaderboard and a private leaderboard for each challenge. The Public Leaderboard includes approximately 30% of the test dataset. While the challenge is open, the Public Leaderboard will rank the submitted solutions by the accuracy score they achieve. Upon close of the challenge, the Private Leaderboard, which covers the other 70% of the test dataset, will be made public and will constitute the final ranking for the challenge.
Note that to count, your submission must first pass processing. If your submission fails during the processing step, it will not be counted and not receive a score; nor will it count against your daily submission limit. If you encounter problems with your submission file, your best course of action is to ask for advice on the challenge page.
If you are in the top 10 at the time the leaderboard closes, we will email you to request your code. On receipt of email, you will have 48 hours to respond and submit your code following the Reproducibility of submitted code guidelines detailed below. Failure to respond will result in disqualification.
If your solution places 1st, 2nd, or 3rd on the final leaderboard, you will be required to submit your winning solution code to us for verification, and you thereby agree to assign all worldwide rights of copyright in and to such winning solution to Zindi.
If two solutions earn identical scores on the leaderboard, the tiebreaker will be the date and time in which the submission was made (the earlier solution will win).
The winners will be paid via bank transfer, PayPal if payment is less than or equivalent to $100, or other international money transfer platform. International transfer fees will be deducted from the total prize amount, unless the prize money is under $500, in which case the international transfer fees will be covered by Zindi. In all cases, the winners are responsible for any other fees applied by their own bank or other institution for receiving the prize money. All taxes imposed on prizes are the sole responsibility of the winners. The top winners or team leaders will be required to present Zindi with proof of identification, proof of residence and a letter from your bank confirming your banking details. Winners will be paid in USD or the currency of the challenge. If your account cannot receive US Dollars or the currency of the challenge then your bank will need to provide proof of this and Zindi will try to accommodate this.
Please note that due to the ongoing Russia-Ukraine conflict, we are not currently able to make prize payments to winners located in Russia. We apologise for any inconvenience that may cause, and will handle any issues that arise on a case-by-case basis.
Payment will be made after code review and sealing the leaderboard.
You acknowledge and agree that Zindi may, without any obligation to do so, remove or disqualify an individual, team, or account if Zindi believes that such individual, team, or account is in violation of these rules. Entry into this challenge constitutes your acceptance of these official challenge rules.
Zindi is committed to providing solutions of value to our clients and partners. To this end, we reserve the right to disqualify your submission on the grounds of usability or value. This includes but is not limited to the use of data leaks or any other practices that we deem to compromise the inherent value of your solution.
Zindi also reserves the right to disqualify you and/or your submissions from any challenge if we believe that you violated the rules or violated the spirit of the challenge or the platform in any other way. The disqualifications are irrespective of your position on the leaderboard and completely at the discretion of Zindi.
Please refer to the FAQs and Terms of Use for additional rules that may apply to this challenge. We reserve the right to update these rules at any time.
Reproducibility of submitted code
If your submitted code does not reproduce your score on the leaderboard, we reserve the right to adjust your rank to the score generated by the code you submitted.
If your code does not run you will be dropped from the top 10. Please make sure your code runs before submitting your solution.
Always set the seed. Rerunning your model should always place you at the same position on the leaderboard. When running your solution, if randomness shifts you down the leaderboard we reserve the right to adjust your rank to the closest score that your submission reproduces.
Custom packages in your submission notebook will not be accepted.
You may only use tools available to everyone i.e. no paid services or free trials that require a credit card.
Read this article on how to prepare your documentation and this article on how to ensure a successful code review.
Consequences of breaking any rules of the challenge or submission guidelines:
Teams with individuals who are caught cheating will not be eligible to win prizes or points in the challenge in which the cheating occurred, regardless of the individuals’ knowledge of or participation in the offence.
Teams with individuals who have previously committed an offence will not be eligible for any prizes for any challenges during the 6-month probation period.
Monitoring of submissions
We will review the top 10 solutions of every challenge when the challenge ends.
We reserve the right to request code from any user at any time during a challenge. You will have 24 hours to submit your code following the rules for code review (see above). Zindi reserves the right not to explain our reasons for requesting code. If you do not submit your code within 24 hours you will be disqualified from winning any challenges or Zindi points for the next six months. If you fall under suspicion again and your code is requested and you fail to submit your code within 24 hours, your Zindi account will be disabled and you will be disqualified from winning any challenges or Zindi points with any other account.
Join the largest network for
data scientists and AI builders