You already have the data. Compass is how everyone asks it. You already know the question. What was DAU today? What’s the order’s success rate over the last few months? How many new users did X and Y, and are they sitting at the stage of doing Z? This escalation just landed.…
Search That Gets You: Inside Instamart’s LLM-Powered Search
How large language models help shoppers find what they mean, not just what they type. Author: Aarav Nigam Introduction Every search box eventually hits a wall where traditional search stops being useful. Searching tide powder 100g on Instamart works seamlessly. Exact keywords…
How Razorpay Moved 2,500 DAGs to Airflow 3, One DAG at a Time
Airflow, the scheduler behind Razorpay’s batch data pipelines, now runs on version 3.3, and we led the move from 2.10. It runs more than 2,700 DAGs and about 11,000 task runs a day, and we got there without a big-bang cutover. The official upgrade guide is the place to start for…
Nobody Knows What's in the Wire: How Groww Moves Money Between India and Wall Street
How Groww tracks cross-border payments between India and the US, ensuring every dollar is accounted for. Author: Aditi Gour Introduction Every business day, SWIFT wires cross between India and the US, and each one carries many people's money in a single lump. Deposits travel out…
Most production incidents do not begin with a server dying. They begin with a deployment: dozens a day, across hundreds of services, each the moment risk enters the system. We run payments infrastructure at Razorpay. When a payments system degrades, transactions fail: merchants…
Inside Razorpay’s RTO Model: The Engineering Behind its ML Lifecycle
Contributor: Abhik Debnath In this article, we use Razorpay’s Return to Origin (RTO) risk model to explain the ML lifecycle: how we build a reproducible release, deploy it into checkout, monitor its behaviour, and use later outcomes to evaluate whether it needs retraining. We…
This article explains how a Storage Pool absorbed the boot disks and made them almost free. The same boot disks also became home to ephemeral data such as Trino cache, task spill, and Spark shuffle through emptyDir. But this introduced an unexpected problem: deleted transient…
Cost-Optimized Kafka Architecture on GCP Storage Pools
This article explains how multiple Kafka clusters went on a storage diet when we moved from a traditional fixed-cost disk architecture to a Storage Pool model. We will follow Kafka from its recovery and performance requirements through Strimzi KafkaNodePools, zonal placement,…
Solving Regional Consistency of Delivery ETA with a Deep Probabilistic Framework
1. Introduction In the on-demand food delivery ecosystem, an app’s Expected Time of Arrival (ETA) is the foundation of customer trust. Promise 25 minutes for a 40-minute delivery, and you leave a customer frustrated. Show 50 minutes for a 30-minute delivery, and that customer…
Building Scalable Real-Time Live Streaming Systems
Synchronizing Video, Audio, Whiteboard Events, and Distributed Backends at Scale What happens when thousands of students join a live classroom, rewind a lecture by 30 seconds, and still expect the teacher’s whiteboard drawings, voice, and video to remain perfectly…
Kafka Inconsistencies and the Silent Failures Behind Real-Time Decision Platforms
A field guide to the duplicate events, stale state, rebalances, and deployment traps that quietly distort real-time decisions — told through one decision that should have fired and didn’t. Note: This piece assumes working familiarity with Kafka and event-streaming fundamentals —…
Migrating Swiggy Partner App’s Deep Link Engine at Scale
The OS decides whether your app may open a URL — before any of your code runs. We swapped the SDK underneath that, without republishing the links we already owned.A partner taps a link in an SMS, a push, a share sheet — and lands on the exact screen they needed. We changed the…
You already have the data. Compass is how everyone asks it. You already know the question. What was DAU today? What’s the order's success rate over the last few months. How many new users did X and Y, and are they sitting at the stage of doing Z? This escalation just landed.…
Groww Lite: Building a Disaster-Resilient Trading System
How we built a minimal, independent path to the exchange that stays up even when the rest of Groww doesn’t. Author: Gaurav Agrawal Why Groww Lite Exists Every large trading platform eventually runs into the same uncomfortable truth: A rich product experience might involve using…
Preface The UPI Switch at Razorpay has evolved significantly in the five years since we started building it. The Switch is the platform that enables real-time payment processing with NPCI. When the team began, it was little more than an idea. Today it powers more than 70% of…
Stop Reacting to Data Problems. Here’s the Architecture That Prevents Them.
Coauthored by Satyajeet Coordinating Data Evolution at Enterprise Scale When you operate data platforms on a global enterprise scale, hundreds of engineering teams ship improvements every week, each moving independently to deliver value at the pace of the business demands. This…
How Razorpay Cut Its Metrics Bill by 62% Without Losing a Dashboard
Contributor: Saijal Shrivastava We cut our metrics ingestion by 62% without deleting a single useful dashboard or breaking an alert. Daily ingestion dropped from about 450 billion samples to about 170 billion. The surprising part was not one large optimization. It was three…
Holding Revamp Went Live. Then Reality Check Hit Hard
Introduction In the previous article, we shared how we redesigned Holdings retrieval to eliminate unnecessary work. The architecture looked solid, and the rollout was ready. Then we deployed it. With millions of users accessing Holdings every day, the rollout looked healthy…
CI Doesn’t Need On-Demand: Moving Our Build Pipelines to Spot Instances
Contributors: Guptaanuj CI/CD pipelines have always had a money-vs-stability problem. Run on-demand AWS instances and your build infrastructure is rock solid, expensive, and predictable. Run on spot instances and your costs drop 70–90%, but AWS can pull the rug with 2 minutes of…
How ShareChat rebuilt subscription billing on Temporal and reached 99.9% reliability
Recurring subscription billing in India is deceptively complex. A single billing cycle has to send a mandated pre-debit notification, wait a regulator-defined window, then attempt collection by coordinating
LLMs for Relevance: Automating High-Quality Product Relevance Labeling in Flipkart Search
Amey Patil , Shreya Malani· November 2025 Every product you see on a Flipkart search results page is there because a system decided it was relevant to what you typed. But how do we know those decisions are good? Someone — or something — has to look at a query and a product and…
Refusing the Haystack: How Groww’s Cyber Defence Team Scales Detection and Response
There’s a version of a security operations centre that exists mainly to be pointed at. It ingests every log it can reach, lights up a wall of dashboards, and staffs a rotation around the clock so that, if anyone asks, the answer is “yes, someone is watching.” It satisfies an…
Decoding Customer Value: pLTV Models for India’s Quick Commerce Delivery Wars — part 1
Author: Jayshmi A Special thanks to soumyajyoti banerjee , Meghana Negi, Shaik Masihullah, Akash Deep for their contributions throughout this project and Sunil Rathee for his guidance. The counterintuitive story of how 350+ carefully engineered features + a simple MLP matched…
DE Dost: Teaching Machines to Be a Friend on the Last Mile
Building Swiggy’s AI onboarding companion for delivery executives, where accuracy alone wasn’t enough and mentorship had to scale.For a new Delivery Executive (DE) joining Swiggy, the experience is often overwhelming, throwing a world of SOPs, incentive structures, zone…
Engineering across all Swiggy Apps has always had a simple problem with a very large surface area: we ship fast, but every release, every production signal, and every operational review touches too many systems. For a single release manager or on-call engineer, the day could…
TrustMesh: How We Built a Real-Time Fraud Brain That Thinks in Graphs and Sequences
TrustMeshDownload to access the paperTRUST.pdf1 MBdownload-circle Every day, millions of Cash-on-Delivery orders flow through Meesho. The vast majority are legitimate: a first-time buyer in Patna ordering a kurta, a reseller in Surat stocking up on inventory. But tucked inside…
How We Refresh Razorpay's Data Warehouse 10x Faster with Graphs and Indexes
Contributors: Utkarsh Koppikar Rohan Background Razorpay provides the payment infrastructure for millions of merchants globally. Behind every payment, settlement, and refund is a microservices architecture where each service owns its own database. While this keeps services…
Improving the Efficiency of Rendering User Holdings
Introduction At 9:15 AM IST, the opening bell rings on the Indian stock market — and millions of investors reach for the same screen. Within seconds, millions of investors open the Holdings page. They want to know how overnight news has impacted their stocks, whether they’re in…
Running Hermes at Razorpay: a Network-isolated, Self-improving “Second Brain” for every Employee
How we run a personal AI agent for everyone at Razorpay: always on, multi-model, and safe by construction. Contributors: Siddharth Tripathi Today, more than 220 Razorpay employees each have their own always-on AI agent. On a typical day, about 84 of them are actively working.…
How Swiggy Saved 3.7 MB by Solving a Vector Drawable Mystery
🎭 The Mystery Begins Picture this: You’re a responsible Android developer. You’ve done everything right. You’ve replaced those bulky PNGs with lighter, elegant, scalable SVGs. You’ve patted yourself on the back. You’ve probably even tweeted about it. Then one day, you open the…
How Swiggy Migrated from protobuf-java to Square Wire
At Swiggy, we use Protocol Buffers everywhere. Nearly every message exchanged between our backend services and our mobile apps is a protobuf. On Android, the default and most widely adopted way to work with those schemas was protobuf-java, Google’s official Java runtime, with…
Scaling Android CI: From 44 → 10 minutes — A Deep Dive into Build Time Optimization and Best…
Scaling Android CI: From 44 → 10 minutes — A Deep Dive into Build Time Optimization and Best Practices Android monorepos get expensive and slow as they scale. We re-architected CI/CD caching, trimmed the Gradle graph, tuned the JVM, modernized the toolchain, and finally moved to…
Nostalgia, Coupons, and a State Machine: The Swiggy Mother’s Day Story
You did something wrong as a kid. You knew you weren’t supposed to. And somewhere in the house, your mom just found out. Your heart is going faster than it ever has. You’re calculating exit routes. And then you hear it: the slap of a chappal being picked up. You’ve accepted your…
by Joshua Platt and Jason Reaves [TLP:CLEAR] Earlier this year, Google Threat Intelligence[1] reported threat actors are increasingly deploying novel, AI-enabled malware in active operations[2]. While investigating a recent OSINT article[3] on malware campaign activity reported…
How a Custom Keyboard Transformed Our App Experience
Author: Nishant Kumar Delivering a seamless, fast, and reliable user experience is at the core of everything we do at Groww. In trading and investing, every second and every user action counts, so optimising even the smallest interface element can make a meaningful difference.…
Turning Scattered Data Into Queryable Segments at Scale: How Razorpay Built Its Customer Data…
Turning Scattered Data Into Queryable Segments at Scale: How Razorpay Built Its Customer Data Platform A consent-native CDP that serves audience segments across 500M+ user profiles in under 30ms, with PII isolated to the source systems. The Problem We Were Solving A customer…
MetaStealer traffic, new DGAs and analyzing the “tracker” backdoor DGA with AI
By: Jason Reaves and Joshua Platt In this blog we simply want to highlight a few new additions to what appears to be related to MetaStealer, one is a new wordlist based DGA used by MetaStealer. We also want to highlight that MetaStealer’s proxies or ‘gates’ don’t actually care…
Building Production-Scale Visual AI for Claims and Returns at Swiggy Instamart
Introduction If you have ever filed a complaint on an e-commerce app — uploaded a photo of a damaged packet, reported a wrong item, or flagged an expired product — you were probably expecting a quick, fair resolution. You were not thinking about what happens on the other side.…
One RecyclerView to Rule Them All — Custom LayoutManager for Option Chain : Pt 1
Quick primer for non-traders: an option chain is the core screen option traders live on. The middle column is a list of strike prices (the price at which a contract can be exercised). To the left sit the Call contracts for each strike (used to bet on the price going up); to the…
From 750 Hours to 2 Hours: AI-Powered Security Triage at Razorpay
Co-authors: Mahlaqahaque Mh, Keertiv, Hari Prasad Pujari How we taught AI to read code like a senior security engineer Every day, Razorpay engineers ship thousands of lines of code. Every line births new security findings. SAST scanners flag suspicious patterns. Dependency…
Goodbye ClickOps: Building GCP Load Balancers the Kube-Native Way
Author: Shivam Narula At Groww, our infrastructure runs on Google Cloud Platform (GCP) and is managed declaratively using Crossplane. As our platform grew, our engineering teams needed to provision load balancers across a wide range of configurations: external and internal,…
From Build to Adoption: A Playbook for Driving Platform Migration
What 18 months of building an internal platform — and driving tenant adoption — have taught me. The common mistakes, and six phases for doing it right. The strange quiet after launch Six months after we built and launched an internal platform, I thought adoption would be easy.…
From Rigid Rules to Empathetic Agents: Rebuilding Swiggy’s Order Cancellation Experience with LLMs
IWTCIntroduction If you have ever typed “I want to cancel my order” into a support chat, you were probably not looking for a workflow. You were looking for clarity, speed, and some assurance that the platform understood what had gone wrong. At Swiggy, this seemingly simple…
Explaining Every Rupee: How We Built Reliable LLM Support Bots for Delivery Partners
The Problem A Delivery Executive (DE) finishes their day, opens the app, and expects a clear breakdown of what they earned. Instead, they often see a payout that does not fully match their expectations — an incentive missing, a deduction they do not recognise, or a credited…
Teaching a Geocoder What Every Delivery Agent Already Knows
This is Part 2 of our GeoIndia series, which follows Part 1’s introduction of GeoIndia, the Seq2Seq model that converts messy Indian addresses into precise map locations. In this post, we go one level deeper: what we learned from running GeoIndia in the wild, and how that pushed…
Building a payment intelligence agent enterprises can actually trust
Discover how Juspay built Genius, a reliable AI payment intelligence agent. Learn about agent harness, schema grounding, and multi-agent systems for accurate enterprise analytics.
The Signal in the Noise: Scaling Observability with SLO-Driven Alerting
Author: Kartik Ukhalkar In a typical SOA, if your service is misbehaving, what is the most efficient way to detect it while minimising the noise? Whether you are an administrator or developer, you would have thought about this problem a few times. We asked ourselves the same…