Loading…

Swiggy
Indian technology platform offering food delivery, quick commerce, dining, and other convenience services.
- 10 posts summarised
- latest
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
From their blog
Latest articles
Decoding Customer Value: pLTV Models for India’s Quick Commerce Delivery Wars — part 1
Swiggy’s pLTV effort addresses early-stage lifetime-value prediction for Food Delivery and Instamart, where sparse signals, zero-inflated outcomes, long tails, and trial-driven acquisition make conversion models unsuitable. It encodes 350+ pre-order signals across 12 groups in a simple multilayer perceptron with three shared hidden layers, task-specific heads, a custom MAE loss, and Adam optimization. A four-head variant added order-count predictions for each vertical, producing marginally better performance with 135K rather than 363K parameters. Evaluation emphasized ranking through Spearman correlation and decile diagonal coverage, reaching above 0.75 Spearman and 70–80% diagonal coverage. In production bidding experiments, the in-house model delivered better retention and higher gross order value per acquired user at no incremental platform cost, while a third-party platform acquired more users per dollar.
DE Dost: Teaching Machines to Be a Friend on the Last Mile
DE Dost is a GenAI onboarding companion embedded in Swiggy’s delivery-executive app, designed for new DEs who receive information but lack confidence-building, immediate guidance. It supports questions in nine languages across SOPs, earnings, payouts, app navigation, shifts, and support, adapting detail and tone to conversational context. Before the first LLM call, a graph state assembles user context, preprocessing resolves references, and embedding-based semantic routing separates general knowledge-base questions from personal diagnostics. Retrieval uses authored QnA pairs plus hybrid semantic and lexical scoring to handle paraphrases and terms such as “MG” and “COD,” while guardrails constrain follow-ups to available knowledge. Evaluation spans about 800 cases per language across fleet and payout combinations, with macro accuracy trending at 90%+ and a target P50 latency of 4.5 seconds after reducing an initial 15-second pilot.
How We Made All Swiggy Apps Operations AI-Native
Swiggy’s mobile engineering teams faced operational overload as releases, production signals, and reviews required switching among Jira, Confluence, Bitrise, Play Console, Crashlytics, New Relic, Google Sheets, ImageKit, and Slack. The response was an operating layer built around Slack-native agent workflows, reusable AI skills, MCPs, and scheduled jobs connected to release, observability, QA, cost, and internal mobile systems. It can generate readiness updates, group Jira work, identify missing owners and blockers, summarize vitals, analyze alerts, follow up TRM actions, and recommend RAMP, HOLD, or ROLLBACK for staged rollouts by correlating Crashlytics, Play Vitals, and adoption. Humans still approve rollout actions, while recurring channel reports make observability and accountability more consistent and reduce clerical integration work. The stated model lets agents handle mechanical load while engineers retain judgement, ownership, product quality, architecture, and execution.
How Swiggy Saved 3.7 MB by Solving a Vector Drawable Mystery
An Android APK investigation found high-resolution PNG variants beside vector drawable XML files, although those raster assets had not been added directly to the codebase. The cause was AAPT2 rasterizing vectors that used features unavailable below API 24, including gradients in android:fillColor, despite the app’s minSdkVersion being 23; the generated files could be much larger than their XML sources, and were produced even for unused resources. The described remedy was to remove unused raster-prone assets, use VectorDrawableCompat with app:srcCompat for affected vectors, and tell Gradle and AAPT to use support-library rendering rather than density-specific PNGs. Removing unused assets cut download size by more than 1 MB, while raising minSdkVersion to 24 produced a further 2.7 MB reduction, for 3.7 MB total; similar gains were observed in Toing and Instamart.
How Swiggy Migrated from protobuf-java to Square Wire
Swiggy migrated from protobuf-java to Square Wire after profiling showed that the runtime and protoc-generated code consumed 6.735 MB of Android app size. protobuf-javalite was rejected because Swiggy relies extensively on google.protobuf.Any, while Wire retained support for Any and other well-known types with a smaller runtime and immutable Kotlin models. The migration required updating snake_case property access, message construction, serialization calls, ProGuard rules, and a custom pipeline that compiled all schemas together before publishing package-specific AARs to AWS CodeArtifact. The team also fixed repeated enum fields with [packed = true] after discovering a silent wire-format mismatch. It reduced Swiggy’s app size by 3.52 MB and produced measurable reductions for Instamart and Toing.
Scaling Android CI: From 44 → 10 minutes — A Deep Dive into Build Time Optimization and Best…
An Android monorepo’s CI pipeline averaged about 35 minutes in its build phase, with a P90 of roughly 44 minutes, as repeated dependency downloads, environment-driven invalidations, variant bloat, and machine limits increased work. The team reworked caching with branch- and architecture-aware keys, release/develop fallbacks, cached SDK and dependency data, and a Gradle Remote Cache, while filtering repositories and restricting CI to required variants. It also tuned 32GB runners to a 16GB heap and 12GB Metaspace, disabled configuration-cache saves in ephemeral CI, upgraded Kotlin, AGP 8.10.1, and Gradle 8.11.1, and moved critical workflows to Apple Silicon. Gradle tasks fell from 3399 to 2745, while remote-cache hit rates reached P50 44% and P90 56%. After the Apple Silicon refresh, total CI time reached P50 10 and P90 11 minutes, average credits per build dropped from 55 to 43, and a comparable rollout window saved about 5800 credits.
Nostalgia, Coupons, and a State Machine: The Swiggy Mother’s Day Story
Swiggy’s Mother’s Day campaign turned childhood nostalgia into an interactive game where users scanned virtual “mom weapons” such as a jhadu, chappal, wooden spoon, and belt to unlock coupons and cashback. The experience used Rive’s runtime animations, state machines, ViewModel properties, and backend data binding to drive scan-triggered states, reward values, and a dynamically assembled share page. Design authored visual logic inside Rive while engineering connected typed values from the React application, including strings and booleans for coupon labels and reveal transitions. A debugging issue showed that the Rive artboard needed the correct ViewModel binding and that a numeric value could not substitute for a boolean state-machine input. The team concludes that, after a learning curve, Rive reduced custom animation work and let design and engineering proceed with less blocking.
Building Production-Scale Visual AI for Claims and Returns at Swiggy Instamart
Swiggy Instamart built two vision-language-model systems to handle more than 40,000 daily claims involving wrong, expired, poor-quality, damaged, and packaging-related items, while reducing reliance on human verification. The Image Validation Model (IVM) compares customer uploads with catalog images, routes each category through a specialised LangGraph StateGraph handler, and combines its structured verdict with fraud, confidence, and business-rule signals. Reverse Quality Check (RQC) compares delivery executives’ pickup photos with the original claim images, allowing matching returns to proceed and prompting retries when they do not. The architecture keeps visual assessment probabilistic but makes routing, aggregation, escalation, and financial decisions deterministic, with traces for category, outputs, confidence, cost, and latency. After more than six months in production, the systems are associated with a 6% customer-satisfaction increase, 20,000 fewer weekly Image Validation tickets, 98.5% RQC accuracy, and over 5,000 daily RQC tickets resolved without human intervention.
From Rigid Rules to Empathetic Agents: Rebuilding Swiggy’s Order Cancellation Experience with LLMs
Swiggy rebuilt its “I Want To Cancel” (IWTC) support journey because a roughly 150K-line deterministic decision tree treated cancellation keywords alike, repeated canned deterrence, and could leave users stuck without handoff. The replacement is a stateful, multi-turn framework orchestrated with LangGraph: an intent layer identifies needs such as delay help, coupon support, direct cancellation, or human access, while live order signals and deterministic policy checks determine the next action. Full graph state is checkpointed in Redis by order- and session-level thread IDs, allowing conversations to resume across turns. Swiggy evaluated intent reliability using more than 100k historical chats and a pre-deployment suite of about 500 representative queries, then operated the system with reporting and alerts for behavioral and service metrics. The conclusion favors a hybrid design in which LLMs handle language while deterministic systems anchor truth and business decisions.
Explaining Every Rupee: How We Built Reliable LLM Support Bots for Delivery Partners
Swiggy faced close to 9 lakh monthly payout- and incentive-related tickets, where delivery executives needed accurate explanations of earnings, deductions, missed incentives, and credited amounts. The system separates financial truth from language generation: deterministic preprocessing and internal APIs resolve incentive eligibility, payout breakdowns, deductions, and conditions before an LLM explains the result. Two multilingual bots—the Daily Incentive Bot and Payout Bot—use a LangGraph StateGraph with LLM, tool, and validator nodes, Redis checkpointing for multi-turn context, and post-processing translation into the executive’s preferred language. Azure Translator preserve-list controls help keep business-critical terminology consistent, while structured escalation sends out-of-scope cases and context to human agents. Moving retrieval from Databricks SQL queries to an aggregated internal API reduced latency from 8–10 seconds to milliseconds; the bots now resolve about 90% end to end, cut resolution from roughly 20 minutes to seconds, and improved CSAT by 40%.
Topics they write about
All topics →Weekly digest
The best engineering reads, once a week.