What you'll receive 📥


What you'll deliver 📤


Problem Statement


You will be creating a single web page to serve banners for one of many websites owned by our client. You may ask, is this about data engineering? Well, the magic is picking banners based on their revenue performance, and this is exactly where your understanding of data crunching comes to play. The web app is just there to show the banner picked by the backend.

You are given 4 sets of CSV files (all attached to this page); each set contains the following files:

Data sets

<aside> <img src="https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/237/direct-hit_1f3af.png" alt="https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/237/direct-hit_1f3af.png" width="40px" /> Based on the above data sets, you should be able to determine how well a banner performs for a campaign based on the revenue (which you can find in the conversions.csv).

</aside>

If you assume X is the number of banners with conversions within a campaign, then there are a few possible scenarios:

Business rules

Example

So when a request hits your Campaign­ URL, e.g., http://yourdomain.com/campaigns/{campaign_id}

The banners to be served are also provided as an attached zip file, and you will see that the banner_id will appear as a text overlay on each image.

Must-Have Requirements

  1. To avoid saturation for visitors, we believe that the top banners being served should not follow a fixed order based on their performance; but they should appear in a random sequence.
  2. You should also avoid having a banner served twice in a row for a unique visitor.