“I don’t see the value of getting One as I don’t order that much from Swiggy,” he told me. He orders about fifteen times a month.
Razorpay gave me this as a design assignment. It started with the whiteboard round and then got converted to a take home assignment.
It is a case study about the gap between those two sentences: why it is there, what it costs the person who says it, and what you can put on a screen to close it.

In India, almost nobody cooks dinner at 9pm on a Tuesday any more. They open Swiggy. The food has a price, and then the order has a few more charges added on top of it: a delivery fee, a handling fee, and extra when it rains or when everybody orders at the same time.
Each of those charges is small. Thirty rupees, forty, sometimes sixteen. Small enough that you agree to it without really reading it, because you are hungry and you have already decided what you want. And because you never see them together, you never find out what they add up to.
The Product
It is a membership. It costs ₹199 a month. While you have it, Swiggy stops charging you the delivery fee on food orders above ₹99 and on Instamart orders above ₹199, it stops charging surge pricing when demand is high, and it adds its own discounts on top of whatever offers are already running.
So it is not a discount card and it is not a loyalty scheme. It is a switch that turns off a category of charge you are currently paying every time you order.

Target audience
Someone who thinks he barely uses Swiggy.
“I don’t see the value of getting One as I don’t order that much from Swiggy.”
- Himanshu (Swiggy user)
Then I asked him how often he actually orders. Four food orders in a month, he said. And then, almost as an afterthought, ten to twelve orders from Instamart.
That is around fifteen orders a month, with a delivery fee on most of them. He is not a light user. He is one of the heaviest users you could design for. He simply has no idea, because nothing in his life has ever asked him to count.
This is the whole project in one conversation. He was not refusing the membership because it was bad value. He was refusing it because he had the wrong picture of himself, and nothing on the screen corrected it.
Swiggy One is priced by the month. The fees it removes are charged by the order. To work out whether the membership is worth it, you have to convert one into the other, take every fee you paid last month, add them up, and hold that total against ₹199.
Nobody does this. It is arithmetic across thirty days of receipts you have already closed and forgotten. So instead of comparing, people estimate, and the estimate comes from a rough sense of how often they order. As the conversation above shows, that sense can be wrong by a factor of three.
Every subscription I looked at has this same shape, and none of them help. Zomato Gold, Zepto Pass, Amazon Prime and Uber One are all priced per month, and all describe the benefit as a capability or an average. Uber One advertises that “members save $26 on average every month”, which is a fact about a population, not about the person reading it.

People turn down Swiggy One because they cannot see what they already spend.
The membership gets read as a new thing to pay for, sitting alongside the food. It is actually a reduction on something already being paid, every week, in small amounts. Nothing in the app makes that visible before the decision, so the reduction has to be taken on faith and the ₹199 does not.
Swiggy is the only party in this conversation that already knows the answer. Every fee on every past order is in the account.
A receipt user can check
His own recent orders, the fee charged on each one, added up, with ₹0 beside the same list.

Three doors, one argument
A banner in the feed, a modal that interrupts once, and a card under a bill he has just paid.

A prototype in code
Built in HTML and CSS and run in a browser, with real type, real spacing and real tap targets.
Constraints
Some of these came from the product, some I set myself to stop the project sprawling. Writing them down early is what made it possible to throw ideas away quickly later.
The checkout page does not change
Swiggy already sells One in the cart. That surface stays exactly as it is, because if two things improve at once, neither can be credited.
₹199 a month is given
No tiers, no annual plan, no cheaper trial. The price is not the thing being designed.
One is not only a delivery-fee product
It also covers surge, extra discounts, Instamart above ₹199 and Dineout. An argument built only on delivery fees undersells what is being bought.
Only his own data
Every number comes from orders he actually placed. Nothing modelled, nothing projected, nothing invented.
Two guardrails
Order frequency among non-members must not drop, and cancellations in the first thirty days must not rise. Nothing may read as “look how much you spend.”

I ran four rounds. The first two produced fifteen ideas and I deliberately did not try hard on them, because the obvious idea is obvious because it usually works, and sometimes it is the right one.
The useful part was writing the move underneath each idea, the thing it actually does, stated in one line. Two ideas with the same move underneath them are one idea, however different the screens look. Doing that collapsed the pile fast. “A monthly strip”, “a running counter” and “a card on the tracking screen” all turned out to be the same move wearing different clothes.



The surviving idea had to live somewhere. I wrote down the cost of each option before choosing.
Its own screen
Room for everything: the orders, the fees, and what One covers beyond delivery. Costs a step, and he arrives hungry. Who never sees it: almost everybody, because nobody navigates to a subscription page on purpose.

A modal
Costs no steps and gets seen. Holds one number and drops everything else, and it is gone the moment he taps the X.

A banner in the feed
Costs no steps and can be scrolled past forever. Carries the number, cannot carry the benefits.

What I chose, and what it cost.
All three, ranked, rather than one.
The modal interrupts once so the number gets seen. The banner stays behind after the modal is dismissed, because one dismissible surface would have ended the project for anyone who taps the X. The full screen sits behind both, for anyone who wants to check the arithmetic.
Everything of substance now lives one tap away from a screen nobody visits deliberately. I took that cost because it was the only shape with room to say that One covers more than delivery fees.
Seven surfaces, and the version I kept.
The argument is the same everywhere. His own fees, added up, set against ₹199. What changes is how much room each surface has to make it, and how much of his attention it is entitled to take. Where two versions were close, both are here with the reason one won.
The interruption
The modal is the one surface that does not wait to be found. It appears once per user, carries the receipt and the button in the same breath, and is the one place the evidence-before-price rule gets broken on purpose.
It runs on both tabs, taking the colour of whichever one it lands on, and each tab reads its own order history, because a receipt full of restaurants proves nothing to someone standing in Instamart.

On Food
Purple, over the Food home. The receipt lists five restaurants he ordered from and the fee charged on each, ₹212 in total, then the same list at ₹0.

On Instamart
The same modal in Instamart blue, with the receipt rebuilt from his Instamart history: five baskets by date and item count, ₹204 in fees.
The banner, and the page behind it.
The banner stays behind once the modal has been dismissed, and it carries the same receipt: ₹212 in fees across his last five orders, itemised by restaurant, priced again at ₹0.

The banner
Five orders he can name, the fee charged on each, and the same list totalling ₹0. The price sits underneath, not on top.

The Page
The math first, then what One covers across Food, Instamart and Dineout, then the price. Nobody arrives here by accident, so it can afford to be long.
Generic benefits, or his last three orders.
Two cards, the same size, costing the same space in the same feed. The first lists what One does. The second lists what he paid. Both carry ₹111, but only one of them shows where the ₹111 came from.

Not Chosen
The same ₹111 as the headline, with the three orders underneath it. ₹38 on 21 August, ₹44 on the 18th, ₹29 on the 14th, each struck through and reset. He could check it against his own history in about four seconds, if there were a full width row free to put it in.

Chosen
Four tiles: ₹0 delivery, ₹0 handling, Food and Dineout included, and ₹111 saved. The ₹111 is one claim among four here, which is the weaker read, but the card is carousel sized and the feed already has a slot that shape.
The one number that is not an argument.
On the tracking screen Swiggy has already itemised the bill: ₹158 of food, ₹35 delivery, ₹12 handling, ₹205 paid. The card underneath adds a single sentence to it.
Nothing here is estimated, projected or promised, because he paid it about a minute ago. On a cash on delivery order the bill is not settled yet, and the wait is time he already has to spend, so that is where I would give this card the most weight.

₹47 of this bill was just fees, sitting directly under the line items that prove it. This is the only surface where the evidence was already on the screen before I arrived.
Two triggers
These two look like an A and a B. They fire at different times, on different conditions, and both stayed in. One looks backwards at money already gone. The other looks forwards at money going. They answer different objections, which is why neither replaced the other.

Trigger 1
Fires the moment his cumulative fees pass ₹199. ₹49, ₹93, ₹139, ₹171, ₹212, against the line where One would have paid for itself. The claim is that he already spent it.

Trigger 2
Fires mid month, on the run rate. ₹86 by the sixth, and the remaining bars drawn as dashed outlines because those weeks have not happened. The dashes mark the difference between a record and a forecast.
What a removal is worth interrupting for.
He taps minus on the One line. This is the highest stakes moment in the flow and the easiest place to overreach, because the same argument that is fair in a feed becomes a hostage negotiation at the point of exit.

Not Chosen
A scrim over the cart, the full benefit list across all three categories, and Remove anyway set small under a full width orange button. It argues hardest, and it is the version I built first.

Chosen
Anchored to the row he tapped, with the cart still lit behind it. The list is cut to the four lines that apply to this cart, and Keep and Remove sit side by side at the same weight. Removing an item is cheap and reversible, so the interruption should be too.
Nothing on the restaurant page.
I built two versions of this and kept neither. The restaurant page sits in the middle of ordering, between picking a place and picking a dish. A fee message there interrupts him without telling him anything he can act on. There is no order yet, so any number on this page is a forecast. The cart and the bill already carry the real one.

The delivery fee on this order, quoted before he has added a single dish, and a full width button. It reads like a receipt for an order that does not exist yet, and it pushes the menu, which is the thing he opened the page for, most of the way off screen.

The same ₹35, in one line, with the button sized to match. It makes a smaller claim and takes a tenth of the space. I cut it anyway. It is a quieter interruption in the same place, and it still has no order to report on.
One thing had to hold across all seven.
Every surface leads with a number he can check against his own order history, and no surface quotes the ₹199 before it has shown him one.
That held on six of them. The modal on the home feed shows the number and the button in the same breath, which is the rule broken, capped at a single appearance and written down rather than quietly dropped.

I built the home flow in a browser.
Actual HTML and CSS, running locally, with the real typeface and real tap targets. It took a day and it changed the design twice.
Six people who are not members went through it.
I gave the working prototype to six Swiggy users. None of them has One. All six said the same two things: that it would help them, and that it would push them to buy the membership.
Write the move under the idea
Fifteen ideas collapsed into four the moment I wrote one line under each saying what it actually does. Two ideas with the same line underneath are one idea. This is the single cheapest thing I did all project.
A number you assemble about someone can be used against you
The reviewer whose bill said “ONE Delivery Fee: FREE” four lines above “Surge Fee: ₹30.00” still finished his review with “looting”. Showing someone a flattering slice of their own bill is an invitation to go and check the rest.
Run the interviews I planned
The whole project rests on people not knowing what they spend on fees, and I have exactly one conversation supporting it. The six who went through the prototype were reacting to a number I put in front of them, not producing one from memory, so they do not close this.
Settle whether novelty carries it
A number about your own money is interesting the first time. Whether it is still interesting on the fourth showing is exactly the kind of thing only live data answers, and I have no way to size it from here.