Regunath Balasubramanian


Anatomy of a Reseller Bot - detecting and protecting customer experience at the scale of an eCommerce Flash sale

Submitted Apr 9, 2019

Flipkart pioneered online flash sales of Mobile phones in India. Many models eventually went on to become bestsellers, breaking records for most units sold in a matter of seconds. While we were scaling our systems to meet the spikes in user traffic to handle such sales, we were unknowingly also serving non-human bot traffic. These bots were run by resellers to buy the high-demand phones posing as retail customers, only to re-sell them in online portals like Olx and offline shops with a significant price markup. This talk is about our journey in handling such bot traffic - right from suspecting the traffic, validating the patterns and eventually building systems that can mitigate such traffic. I will cover topics like data collection, hypothesis validation and techniques used to combat spikes and differentiate between good, bad traffic and mitigate the latter.


  • Characterize a typical Flash sale - explain the metrics that define such a sale, intent and the challenges in running such sales at scale.
  • Discuss the need to bridge the Demand-Supply gap (Traffic vs Inventory) with finite resources and employing techniques/solutions to ensure best possible customer experience
  • Discuss signals(offline and online) that indicate existence of Bots, gather data to validate the hypothesis
  • Describe solution approaches - journey of what worked, failed and eventually current state
  • Discuss learnings in System building, handling scale


Prior experience trying to buy a phone in Flipkart’s Flash sale is a plus - to understand the challenges as a end user!

Speaker bio

Regunath works as Principal Architect at Flipkart where he leads system readiness and scaling for large events like the Big Billion Days. He is an Open Source developer and his work can be found here :



{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}