● Manage Ads: Advertisers should be able to add, update, view and delete an Ad campaign
● Ad Config: The ad campaign would have target users, creative, budget per day, expiry, redirect URL
● Serve Ads: The system should serve suitable Ads to target users based on gender, age, location
● Engagement Tracking: The system should be able to track Ad impressions (Ad views & Ad clicks)
● Budget Pacing: The system should be able to control the Ad serving rate to avoid over-delivery
● Campaign State: The campaign could be in either active, expired, paused or removed state
● Reporting: The advertiser should receive the campaign report and invoice with the total amount to pay
● Low Latency
● High Availability