Bullzeye: Powering Ads on PhonePe

Sunil Rajashekar and Mohammed Irfanulla Mar 30, 2023

PhonePe, as India’s leading fintech platform, has a massive user base with over 43+ crore registered users, translating to at least 1 in 4 Indians actively using smartphones. This gives merchants a significant advantage to advertise their brand on the app. The reach goes beyond the PhonePe app and extends to the PhonePe for Business app as well, giving PhonePe rich data on how consumers and merchants spend and manage their money that advertising brands can benefit from for efficient targeting and engagement.

As PhonePe continues to scale, the tech that goes behind each division also needs to scale and meet the requirements of all stakeholders involved. Bullzeye addresses a few challenges faced in managing ads such as issues with scalability of reporting modules and frequency cap modules, scarce information on the code and implementation details, delayed improvements, and recurring custom development fees. To solve this, our engineering team built Bullzeye, a full fledged software stack that forms PhonePe’s digital ad ecosystem.

Bullzeye: PhonePe’s Digital Ad Platform Ecosystem

Bullzeye, our in-house ad management platform, consists of different components of the ad funnel that make up the ad platform ecosystem at PhonePe. It powers digital ads – in image, video & HTML formats – and provides an array of efficient targeting options to display ads to relevant end users. The platform handles over 45K RPS traffic and peak load at nearly 60K RPS. Read along to understand what went into designing the solution and the overall system architecture.

Design considerations

The following design considerations were made to ensure Bullzeye can handle traffic load, have low latency, and maximize targets:

  • High throughput – The platform would need to be able to serve 100K RPS 
  • Low latency – The latency requirement is 300 ms
  • Precompute to speed up the ad-selection evaluations
  • Asynchronous flows were used wherever applicable
  • Adherence to micro service architecture and segregate responsibilities
  • Push all relevant metrics required for analysis and reporting

System overview

Bullzeye’s architecture can be split into four crucial parts:

  1. Ads SDK
  2. Ad Manager
  3. Ad Server
  4. Tracking components – Engagement and Campaign Service

Each of the above components of Bullzeye are represented in the flowchart below, followed by a description:

System overview

Ads SDK

Ads SDK is the medium through which ads are requested, from Android or iOS device users, to Bullzeye, through the PhonePe consumer as well as business apps. Ads SDK thus and logs user engagement events like impressions and clicks. It is compatible with OpenRTB 2.5 specs.

Ad Manager

AdManager is the console on which advertisers manage ads, campaigns and creatives as well as assign roles and permissions. Additionally, advertisers would be able to track the performance of campaigns/ads.

Ad Server

Ad server overview

AdServer is responsible for serving ads based on publisher preferences. The ad-serving process is divided into the following: 

Filtering

Live ads are filtered out in a step-by-step process against various targeting constraints such as budget, time, context, site-slot, user profile, user location, budget caps, A/B, etc.)

Ranking and Auctioning

Post filtering, all eligible ads are ranked on the basis of their type, priority, CPM or other parameters. In the Auctioning step, ads are selected based on the highest budget and winner selection takes place per slot for a placement.

Engagement Service

Bullzeye’s engagement service tracks clicks and renders events once a user interacts with ads – either by viewing or clicking.  It is responsible for:

  • Receiving, logging and processing events related to user interaction
  • Running validation checks e.g., authentication, deduping checks, etc.
  • Enriching engagement payload to enable downstream processing
  • Events are pushed to kafka topic configured in druid to power reporting and analytics

Campaign Service

Bullzeye’s campaign service is responsible for tracking, aggregating and enforcing limits for various advertiser entities.

  • Tracking and enforcing capping rules on ads/campaigns
  • Tracking and enforcing user frequency limits on ads/campaigns

Conclusion

Bullzeye thus makes ad management effective by allowing seamless creation, tracking and publishing of relevant ads. Marketers can benefit from highly targeted campaigns thereby driving conversions.