She ran a clean beauty brand out of Pune. Three years in, and her ad creative had finally found its rhythm. Her CPCs were down, her conversion rate was healthy, and her retention flows from the last post in this series were quietly compounding revenue every week without her lifting a finger.

But there was a number she could not move. Her return rate.

Not catastrophic. Not the kind of number that shows up in a board deck with a red arrow next to it. Just a steady, grinding 14 percent on her hero serum, month after month. Customers loved the brand on social media. They wrote long, enthusiastic captions about it. And then one in seven of them sent the product back.

When she pulled the return reasons, almost all of them said the same thing in different words. “Not right for my skin type.”

I asked her how a customer chooses which serum to buy on her site. She walked me through it. A collection page. Six products, each with a clean photo and a paragraph of copy. The customer reads the descriptions, picks the one that sounds most like their situation, and adds it to cart.

I asked her: how does a customer know what their skin type actually is?

She paused. “I mean… they probably know. Or they guess.”

That guess is costing you 14 percent of every order you ship.

The data you have been throwing away

For years, the standard playbook for understanding a customer was to watch them. Pixel-based retargeting, lookalike audiences built from purchase history, algorithms that needed three or four orders before they started to get a person right. It worked because there was no alternative. You could not ask a stranger on the internet a direct question and expect an honest answer before they had even decided to trust you.

That playbook is breaking. iOS privacy changes and the slow death of third-party cookies have made behavioral signals weaker every quarter. Brands are paying more to reach fewer people with less certainty about who those people actually are.

But here is what nobody fully priced in. The same privacy shift that broke behavioral tracking also created an opening. Customers have become more comfortable, with directly telling a brand what they want, as long as the exchange feels like it is in their interest. A skincare quiz that asks about skin type and ends in a personalized routine does not feel like surveillance. It feels like a consultation.

This is zero-party data. Information the customer hands you on purpose, because answering the question gets them something better in return. And unlike a cookie, it cannot expire, get blocked, or get regulated out of existence. It sits inside your own Shopify database, owned by you, forever.

The data a customer gives you on purpose is worth more than the data you have to infer.

Why a quiz outperforms a collection page

Picture the two paths side by side.

Path one: the customer lands on a collection page showing every serum you sell. They read six product descriptions, each one trying to sound like it was written for them specifically. They pick one based on a feeling. Maybe they are right. Maybe they are not. Either way, you will not find out until the return request arrives three weeks later.

Path two: the customer answers four questions. Skin type. Primary concern. Age range. Current routine gaps. By the third question, something has already shifted. They are not browsing anymore. They are being consulted. And at the end, instead of six products to choose between, they see one. The one that matches what they just told you about themselves.

The collection page asks the customer to do the work of matching themselves to a product. The quiz does that work for them, using information only they have.

This is not a cosmetic difference. It changes what the customer is doing on your site. Browsing is a search task with an uncertain outcome. A quiz result is a recommendation from someone who appears to understand the problem. The first invites comparison shopping and second-guessing. The second invites a single decision: yes or no to the thing built for you.

Building this on Shopify without slowing your store down

Here is where most attempts at this go wrong. A founder hears “quiz” and reaches for a third-party app from the Shopify App Store. It bolts a popup or an embedded iframe onto the storefront. It works for a week. Then it starts loading slowly on mobile, your Core Web Vitals take a hit, and the very SEO gains we discussed two posts ago start eroding from a feature meant to improve conversion.

The right way to build this treats the quiz as part of your store’s data architecture, not a decoration on top of it.

As a customer answers each question, that answer should write directly to a Shopify Customer Metafield and update their customer tags in real time. The moment someone says “combination skin, primary concern pigmentation,” that profile exists permanently. It is available to your retention flows, your email segments, your SMS campaigns, and every future interaction with that person, without anyone exporting a spreadsheet.

Then, instead of dropping the customer onto a generic results page, use the Storefront API to query your live inventory and build their result in real time. Not a category. Not a list of five options that sort of fit. One serum, possibly bundled with a complementary product, chosen because it matches what they told you four questions ago.

And build the whole thing using native Shopify sections or lightweight components, not a heavy embedded widget. The quiz should feel like it belongs to your store, because technically, it does. It loads as fast as everything else on the page, because it is not foreign code asking your theme for permission.

What this does to your return rate, and your CM3

Go back to the founder in Pune. The 14 percent return rate was not a quality problem with her product. It was a matching problem at the point of sale. Customers were buying serums formulated for oily skin when they had dry skin, and discovering the mismatch only after using it for a week.

A quiz that routes a dry-skin customer to the dry-skin serum does not just improve their experience. It removes the single biggest driver of her return rate, because the product arriving at their door is no longer a guess.

This hits Contribution Margin 3 from two directions at once. Returns carry real cost, restocking, repackaging, sometimes the product cannot be resold at all, and every percentage point you shave off that number drops straight to your margin. At the same time, when your retargeting and lookalike audiences are built from customers who told you their exact skin type and concern rather than customers who merely clicked an ad, your acquisition targeting gets sharper. Lower CAC and lower returns, from the same four questions.

If you have been tracking the 5:1 LTV to CAC ratio through this entire series, this is one of the few levers that improves both sides of that equation simultaneously. It lowers the cost of acquiring the right customer, and it raises the lifetime value of the customer you already have by making sure the first product they receive actually works for them.

The founder’s new number

She built the quiz over two weeks. Four questions, native Shopify sections, results pulled live from inventory and matched to skin type and concern.

The first full month, her return rate on the hero serum dropped from 14 percent to 6 percent. Her AOV moved up slightly too, because the quiz result page suggested a complementary product alongside the main recommendation, and customers who had just been “understood” were more willing to trust a second suggestion.

But the number that mattered most to her was not on the revenue side at all. It was the support tickets. The “this didn’t work for my skin” emails, the ones that used to eat an hour of her time every day, dropped by more than half.

She told me something I have heard in different forms from almost every founder in this series by now. “We were spending so much money trying to find the right customers. We never thought to just ask the ones who showed up what they actually needed.”

The next quiz question is not a feature request. It is a question your customer is already willing to answer. Build the form, and let them tell you.

This is post nine in the series on D2C profitability on Shopify. The earlier posts cover retailer margin costs, ad attribution, discounting’s hidden tax, store design, membership commerce, the 90-day retention flow, the product page, and the post-purchase upsell. If you have not read them, start from the beginning.

If you want to build a native zero-party data system into your Shopify store, Brainium builds this end to end.

A few months ago, Brainium completed a UI/UX design engagement for Gymfluence, a B2B SaaS coaching platform built for the Nordic market. Our mandate was design only: information architecture, visual system, component library, and screen-level UX for the coach dashboard and marketing site.

No development. No backend. Just design, done properly.

I want to share what that engagement taught me, because several of the lessons surprised even me and I have been doing this for over a decade.

The paying customer is rarely who you think it is

Gymfluence serves two users: the coach and the gym member. It is easy to assume the member experience should get most of the design attention, because members are the end users and the retention metric lives with them.

Wrong. The coach is the paying customer. The coach pays the subscription. The coach evaluates whether to renew or cancel. And the coach is spending the most time inside the product, monitoring adherence, tracking progress, managing a portfolio of clients simultaneously.

We reoriented the entire design priority stack around this insight. The coach dashboard became the primary design surface. The member interface followed.

This applies to almost every B2B SaaS product I have seen: the payer and the primary user are often different people, and design investment should follow the payer, not the most visible surface.

Geography shapes navigation expectations more than most founders realise

The Gymfluence client base is Nordic. That sounds like a minor detail until you are making decisions about information density, data privacy signalling, and how trust is communicated visually.

Nordic users have measurably different expectations around these things compared to what a South Asian or US-trained product team would default to. The dashboard density that reads as “powerful and comprehensive” to an Indian enterprise buyer reads as “overwhelming and untrustworthy” to a Scandinavian coach who values clarity and restraint above feature richness.

We calibrated. It required real user validation, not assumptions.

If you are building a product for a geography different from where your team is based, that localisation work has to be built into the design process, not treated as a post-launch polish task.

A component library is worth more than beautiful screens

The deliverable that matters is not the polished Figma presentation your team shows investors. It is the component library the development team can actually build from.

Screens are a snapshot. Components are infrastructure.

On Gymfluence, we delivered a structured component set covering data display cards, status indicators, progress visualisations, and navigation patterns, all with documented states. The development team received something they could extend as the product grew, not something they had to reverse-engineer.

Every design partner Brainium engages with gets this as a standard deliverable. I am consistently surprised how rarely other design vendors include it.

The full approach, written up properly

I wrote the complete methodology that came out of this engagement as a detailed guide on the Brainium blog. It covers seven specific approaches — from journey auditing to visual identity strategy to FAQ schema for AI search visibility.

If you are evaluating a redesign for your SaaS product or want to understand how to brief a design partner properly, that piece is worth reading: Best Approaches for UI/UX Redesign in B2B SaaS: What Actually Works

The Gymfluence engagement was a clean, well-scoped project that gave Brainium the conditions to do design work at its best: clear brief, responsive client, defined deliverables. The product is live. The coaches are using it. And we walked away with a sharper methodology for the next SaaS redesign we take on.

If you are building in the coaching, wellness, or professional services SaaS space and thinking about a redesign, I am happy to talk. Drop me a note through Brainium’s contact page or connect with me on LinkedIn.

Add SouravSinha.com as your Preferred Source on Google to stay updated with AI, software development, digital transformation, and technology insights.

I want to tell you about something that happened in a classroom in 1965.

A Harvard psychologist named Robert Rosenthal walked into an elementary school and gave the kids a standard IQ test. Nothing unusual. But before he left, he handed the teachers a list. Twenty percent of the children, he told them, were special. These were the ones with extraordinary, unlocked potential – the ones who were about to bloom.

He was lying.

The list was random. Those kids were no different from anyone else in the room.

Rosenthal came back a year later. The children on his fake list had pulled dramatically ahead in IQ scores. Not because of genetics. Not because of extra tutoring. But because the teachers believed something about them and that belief quietly changed everything. Their tone, their patience, the way they leaned in a little more when those kids spoke. The children absorbed that energy and, without knowing it, started becoming who their teachers believed they already were.

This is called the Pygmalion Effect. And once you understand it, you cannot unsee it in your own life.

Here is the uncomfortable question it forces: Who are the people around you, and what do they quietly believe you are capable of?

Think about your inner circle right now. The people you spend the most time with – your colleagues, your friends, maybe the WhatsApp group you never mute. When you talk about a goal you have, a business you want to build, a number you want to hit, a version of yourself you’re trying to become, what’s the energy in the room?

Do they nod and say that’s great, you should do it? Or do they lean forward and say that’s interesting, but why not bigger?

There’s a massive difference between those two reactions. One feels better in the moment. The other actually makes you better over time.

I’ve noticed this in my own journey. The rooms that made me grow were never the comfortable ones. They were the ones where I felt slightly out of my depth. Where the people around me were moving faster, thinking bigger, and holding expectations for me that I hadn’t yet held for myself. Those rooms were often agonizing to sit in. Your excuses sound hollow there. Your justifications for slow execution don’t land. You become very aware, very quickly, of the gap between where you are and where you could be.

But that gap? That’s not shame. That’s signal. It’s the friction of your old self-image rubbing against what you’re actually capable of.

The problem is most of us are optimizing for the opposite. We build circles that feel safe. People who validate us when we fall short, who explain away failure with us, who celebrate small wins just a little too loudly. It feels like loyalty. It feels like support. But what it actually is, if we’re being ruthlessly honest, is a very comfortable ceiling.

Here’s the principle I’ve come to live by: If the people around you aren’t making you feel slightly underqualified, they’re not accelerating you. They’re just keeping you company.

That doesn’t mean you need to drop everyone you care about and cold-call billionaires. It means you need to deliberately create friction in your environment. Seek out the mentor who doesn’t let you play small. Find the partner who looks at your five-year plan and asks why you haven’t done it in twelve months. Put yourself in the rooms where your current targets are someone else’s baseline.

You will feel small at first. That’s not a warning sign. That’s the tuition.

The Pygmalion Effect works in both directions. When people expect little of you, you quietly shrink to meet that expectation too. Which means that cozy circle of low expectations isn’t neutral – it’s actively pulling you down.

You don’t rise to your goals. You rise or sink to the level of what the people around you believe you can do.

So choose your rooms carefully. Enter the uncomfortable ones. Stay long enough to stop feeling like an outsider. And watch what starts to happen to who you are becoming.

The discomfort is temporary. Staying small is permanent.

What did this make you think about? I’d love to know which room you need to walk into. Drop it in the comments.

He had the creative dialed in.

Three years running a skincare brand out of Bengaluru, and he had finally cracked the short-form video formula that bigger labels spend lakhs trying to reverse engineer. Real skin, not airbrushed. Before-and-after content with actual customers, not models. His cost per click had been falling for four months straight and his conversion rate on the product page was sitting at 3.2 percent, which in his category is genuinely good.

But his AOV had not moved in two years. Every order was still going out at roughly the same ticket. When I looked at the numbers with him, the problem was immediately obvious.

He had built a perfect machine for getting people to buy one thing. He had never once asked them to buy two.

I asked him to walk me through what a customer sees after they complete a purchase on his store. He pulled up a test order on his phone. Payment confirmation. Shopify’s default thank-you page. Order number, delivery estimate, a link to return to the homepage.

I asked him: what is the highest-trust moment in your entire relationship with this customer?

He thought about it. “When they place a second order?”

It is not. It is the thirty seconds immediately after the first one goes through.

The window that closes before most brands notice it

There is a specific psychological state that exists in the moments immediately after someone completes an online purchase. The anxiety of the decision is gone. The credit card has been charged and the order accepted. They are not yet in delivery anxiety, because the product has not shipped. They are in a narrow window of pure satisfaction, fully engaged with the screen, waiting for the confirmation email that tells them everything went through correctly.

Compare it to every other channel you use to generate secondary revenue. An email sent three days after purchase lands in an inbox between a bank statement and a school circular. An SMS notification gets read while they are doing something else. A retargeting ad interrupts content they were trying to consume.

The post-purchase window asks for none of that goodwill. It does not interrupt. The customer is already there, already paying attention, already in a buying frame of mind. The decision to buy something more has the lowest possible activation energy it will ever have.

Most Shopify stores treat this window as administrative. Here is your order number. Here is your delivery timeline. Goodbye.

Why the cart is the wrong place to upsell

The instinct most founders reach for when they want to increase AOV is to add cross-sells inside the cart. A small panel that says “customers also bought” before the checkout button. Or a pop-up that fires when someone tries to leave the cart page.

I understand the logic. You already have someone deep in the funnel. Why not show them one more thing?

Here is what actually happens. A person who has decided to buy something is in a state of managed commitment. They have weighed the cost, justified the spend to themselves, made peace with the number on the screen. When you introduce a new product into that calculation, you are not adding a simple decision. You are reopening the entire negotiation they just finished having with themselves.

Some customers add the extra item. But a meaningful percentage of them, instead of adding, start subtracting. They look at the total. They recalculate. They decide the cart is getting expensive and they will come back. Sometimes they do. Most of the time they do not.

The post-purchase upsell removes this risk entirely. The primary order is confirmed, paid, and sent to your fulfilment backend. Nothing you say or do on the next screen can affect that transaction. A rejected offer costs you nothing. An accepted one is pure incremental revenue.

This is the only channel in your entire growth stack where a “no” carries zero downside.

What Checkout Extensibility actually changes

Until recently, building a post-purchase upsell experience on Shopify that was native, fast, and secure required patchwork. Third-party apps that loaded after the checkout sequence. Custom scripts injected into thank-you page templates. Solutions that worked until a Shopify update broke them, and then required frantic fixes at the worst possible time.

Shopify has deprecated all of this in favour of Checkout Extensibility. The architecture is different in a way that matters for brands at scale.

The upsell logic runs inside a sandboxed environment that executes independently of your storefront theme. It does not touch your Core Web Vitals. It does not slow your main site. It does not carry the performance tax that legacy checkout modifications used to impose. Your mobile page speed, which determines your search ranking and your paid media quality scores, stays clean.

More importantly, it connects directly to Shopify’s inventory ledger in real time. The single worst thing a post-purchase upsell can do is offer a product that is out of stock. The operational fallout downstream, the customer service tickets, the expectation failures, costs more than the missed upsell was ever worth. When inventory drops below a threshold you define, the system swaps the offer automatically. The customer never sees the gap. Your team never gets the email.

And the offer itself is not a guess. The post-purchase application reads what the customer just bought and makes a contextual recommendation based on the actual line items in that order. The person who just bought your face wash does not see a random product. They see the matching moisturiser from the same range. Relevance is not a bonus feature. It is the reason one-click attachment rates on a well-built post-purchase page are meaningfully higher than anything an email cross-sell campaign will ever deliver.

The math that makes this different from every other revenue lever

Every other growth initiative you run has a cost attached to it. Better ads cost more in creative and media. Better retention infrastructure costs in tooling and automation. A better PDP requires engineering and design time. These are worth it, and we have spent the previous posts in this series establishing exactly why.

Post-purchase revenue is structurally different. The customer was already acquired. The CAC for that transaction was spent the moment they arrived on your site from an ad, an organic search, or a referral. By the time they reach your post-purchase offer, that acquisition cost is fixed and sunk. Every rupee that comes in from a one-click upsell carries no share of that cost.

What this means in practice: a 10 to 15 percent post-purchase conversion rate on a product that costs you 35 percent of revenue to fulfil generates contribution margin at a rate your primary acquisition business cannot match. The revenue is real. The CAC allocation is zero. The CM3 improvement is direct and immediate.

If you have been building toward a 5:1 lifetime value to customer acquisition cost ratio, and that benchmark has been running through this entire series, post-purchase extensibility is one of the fastest structural moves available to close the gap. It does not require you to acquire more customers. It requires you to ask the ones you have already paid for whether they want one more thing.

The founder’s second number

He rebuilt the post-purchase experience over three weeks. One offer, contextually matched to the product just purchased, one-click authorisation using the payment credentials already on file.

The first month the system ran, his AOV moved from Rs. 1,240 to Rs. 1,490. Not from better ads. Not from a pricing increase. From a screen that used to say “order confirmed” and now says “while you wait, you might want this.”

The acquisition cost on those Rs. 250 increments is exactly zero.

He called me after the first month’s numbers landed. He said the same thing everyone says when this particular logic clicks into place: “Why did we not do this earlier?”

There is no satisfying answer to that question. The better one is: the next order is going out today.

This is post eight in the series on D2C profitability on Shopify. The earlier posts cover retailer margin costs, ad attribution, discounting’s hidden tax, store design, membership commerce, the 90-day retention flow, and the product page. If you have not read them, start from the beginning.

If you want to implement native Checkout Extensibility for your Shopify brand, Brainium builds this end to end.

There are some seasons you watch waiting for the ending.

And there are some seasons where the ending was always written, even if you didn’t know it at the time.

IPL 2026 was the second kind.

When I wrote the last post in this series, I was sitting with three matches left, three teams fighting for one chair, and a prayer that LSG would do something useful with their dead-rubber game against Punjab. You know how that went. LSG did nothing useful. Rajasthan beat Mumbai at Wankhede with something to spare. KKR and PBKS both finished on 13 points and both went home. RR went through on 16 points, deservedly, because they had earned it the hard way. And in doing so, they gave us a playoff stage that this season needed.

Because if we’re being honest, the league stage had given us flashes and stretches but rarely the sustained drama that made us lean forward. The playoff stage was where the season finally found its pulse.

Let me take you through the four playoff matches that closed out IPL 2026.

Qualifier 1: RCB vs GT, Dharamsala, 26th May

The highest total in IPL playoff history.

Let that sit for a moment before we go further.

Royal Challengers Bengaluru posted 254 for 5 at Dharamsala and then bowled GT out for 162 to win by 92 runs. Ninety-two runs. In a knockout match. Against the team that had been perhaps the most consistent unit in the league stage.

The 254 was built on one of the more astonishing individual innings of the tournament. Rajat Patidar arrived at number five with the score at 104 for 3 and proceeded to hit 93 not out off 33 balls, the fastest innings of 90 or more in IPL history. He was not out because the innings ran out. He was still standing at the end and no one wanted to get in his way. For a man who has spent his RCB career playing second fiddle to Kohli in the popular narrative, this was his night in the light, entirely his own.

Kohli made 43 off 25. Devdutt Padikkal hit 30 off 19. Venkatesh Iyer opened with 19 off 7 before Rabada got him. Jason Holder then produced a double-wicket over to remove both Kohli and Padikkal in quick succession and gave GT brief hope. But Patidar and Krunal Pandya, who made 43, put on a fifty-run stand that broke GT’s back. Jitesh Sharma finished it with 15 off 5. The final ball of the innings was the final statement of the night.

GT chased. Or tried to. Bhuvneshwar Kumar removed Sai Sudharsan in the fourth over. Two overs earlier, Shubman Gill had gone for 2. Gill, who had been the most complete batter of this season, got 2. Jos Buttler swung at 29 off 11 before Hazlewood cleaned him up. By the powerplay, GT were 51 for 3 and the game was functionally over. The one bright spot in GT’s reply was Rahul Tewatia, who kept swinging for 68 off 43 near the death with nobody for company, which told you both about his character and about how comprehensively the top and middle order had collapsed. Jacob Duffy finished with 3 for 39, Rasikh Salam and Bhuvneshwar took 2 each.

RCB were through to the final with four days to prepare.

Eliminator: RR vs SRH, New Chandigarh, 27th May

There is no one in world cricket right now, in any format, doing what Vaibhav Sooryavanshi is doing.

He is fifteen years old. He has never watched a teammate bat from the other end and thought about experience or approach or what a senior player might do. He walks to the crease and plays.

Against SRH in the Eliminator, he scored 97 off 29 balls.

He was one shot away from breaking Chris Gayle’s record for the fastest IPL century, 30 balls, which has stood since 2013 and has started to feel like one of those records that simply cannot be touched. Sooryavanshi got to 97, tried to uppercut a bouncer over third man, top-edged it, and that was that. Out for 97. In a more dramatic sense, out for an innings that will be replayed every time someone talks about what this tournament can produce from a teenager who has not yet sat his board exams.

Jaiswal made 29 at the top before holing out. Dhruv Jurel then played the innings of a man who understood his job exactly: fifty off 20 balls in the middle overs, the platform kept intact after the fireworks at the top. RR posted 243 for 8.

Jofra Archer then made sure it was enough. He removed Abhishek Sharma, Ishan Kishan, and Travis Head to leave SRH at 52 for 3 inside 3.5 overs and the match effectively decided. Nitish Kumar Reddy and Salil Arora tried, a half-century stand in 18 balls was real defiance but once Jadeja removed Reddy in the 11th over the game was over. SRH finished at 196 all out, Archer finishing with 3 for 58. Sooryavanshi himself took the catch that ended the match, diving forward at short third with the instinct of someone who had decided this was his game from the first over.

SRH went home. A good team that ran out of road when it counted most.

Qualifier 2: GT vs RR, New Chandigarh, 29th May

If the Eliminator had been the Sooryavanshi show, the Qualifier 2 was the game where he met his match. And his match was a captain who has spent five IPL seasons proving he is the best batter in the tournament that nobody talks about as the best batter in the tournament.

Shubman Gill made 104 off 53 balls.

RR batted first and posted 214 for 6. Sooryavanshi, again, was magnificent. 96 off 47 balls, his second consecutive playoff half-century, his second consecutive heartbreak just short of three figures. There is something almost poetic, almost cruel, about the pattern. 97 in the Eliminator. 96 here. Both times falling in the nineties when a century felt inevitable. Both times the crowd inhaling sharply as he went. Jadeja held the innings together in the lower middle with 45 not out, Donovan Ferreira added an unbeaten 38 off 11 to push them to 214.

GT, in their reply, completed the highest successful chase in IPL playoff history, 215, surpassing the previous record of 204 set the year before. Gill and Sai Sudharsan put on a century opening stand in 52 balls. The partnership of 167 between them is the highest by any pair in IPL playoff history, breaking a record that had stood since 2011. Sudharsan got out hit wicket, the recurring curse of a batter whose footwork occasionally betrays the quality of his hands. Gill got out after his century. GT won by 7 wickets with 8 balls to spare.

Rajasthan had given everything this tournament had. They had won a last-gasp match against MI to qualify. They had beaten SRH by 47 runs. They had given GT all they could in the Qualifier 2. They went home with dignity. And they gave us the discovery of the season, possibly of several seasons.

The Final: RCB vs GT, Ahmedabad, 31st May

Patidar won the toss and sent GT in to bat, and the decision worked from the first over.

Hazlewood had Gill caught by Patidar off his own bowling for 10 in the third over. Bhuvneshwar Kumar removed Sai Sudharsan for 12 the very next over. Two powerplay wickets. The same top-order collapse as the Qualifier 1, GT seemingly had no answer to RCB’s new-ball attack when the conditions and the moment mattered most. Nishant Sindhu and Jos Buttler tried to rebuild but scoring was slow and wickets kept falling. Washington Sundar stayed to the end, hitting an unbeaten 50 off 37 with his team crumbling around him. Rasikh Salam Dar took 3 for 27, Bhuvneshwar and Hazlewood took 2 each. GT finished at 155 for 8.

The chase was never really about whether RCB would win. It was about watching Virat Kohli do it.

Kohli and Venkatesh Iyer, brought in as impact sub, opened together and put on 62 off 27 balls. It was blistering. It was exactly the kind of powerplay statement that removes all doubt from a chase. Rashid Khan then dismissed Patidar and Krunal Pandya in the ninth over within four balls to reduce RCB to 91 for 4, and for a moment you thought: here we go. Tim David came in and steadied. And Kohli, at the other end with the authority of a man who has done this so many times he no longer needs to think about it, accelerated.

He hit his fastest IPL half-century, 25 balls. He finished with 75 not out off 42. He wrapped up the chase with a six over long-on off the first ball of the 19th over. RCB 161 for 5. Won by 5 wickets with 12 balls to spare. Back-to-back IPL titles. The trophy handed to Kohli first, confetti falling over the Narendra Modi Stadium.

Ee salanoo cup namde. This year’s cup is ours too.

What This Season Left Behind

I said at the start of this piece that the ending was always written. I don’t mean that as a slight against any of the other teams. I mean it as a recognition that this RCB side had something that none of the others quite matched: the ability to produce their best cricket exactly when it mattered most.

The league stage, as a whole, was a bit of a drag. Not terrible, not without its moments, but a touch processional at times, lacking the wall-to-wall drama that the best IPL seasons produce. Too many matches that started and ended as foregone conclusions. Too few genuine final-over finishes.

But the season gave us things worth keeping.

Sooryavanshi. 776 runs in the tournament, the fifth-highest total by any batter in a single IPL edition. The Orange Cap, the MVP award, and the Emerging Player award, the first time in IPL history one player has won all three in the same season. A strike rate of 237.30. 72 sixes, breaking Chris Gayle’s record of most sixes in a single IPL season. He turned every record in sight into a personal matter and then carried it into the playoffs, where he scored 193 runs across two games and still didn’t win a final-eleven century either time. The India cricket pipeline has not looked this full in years, and he is the most vivid example of it.

Prince Yadav gave LSG something to talk about in a season that otherwise had little. Sixteen wickets, pace regularly above 140 kph, the kind of steep angle and raw speed that makes batters uncomfortable even when they get bat on ball. For a team that finished last, he was almost their entire identity for a stretch of weeks. He will be expensive at the next auction and probably worth it.

Saurabh Dubey got three games for KKR as an injury replacement for Akash Deep. He is a 6 foot 5 left-arm seamer from Wardha who had been waiting years for this chance. Three games. He took the wickets of Rohit Sharma and Suryakumar Yadav in the powerplay at Eden in a must-win match and kept the season alive for one more week. There are cricketers with 50 IPL appearances who have never had a moment that clean. Watch him when KKR give him more.

And Kohli. Who hit his fastest IPL half-century in a final. Who made 75 not out to win the title. Who plays 281 IPL games and is still the last person any attack wants to bowl to in the 14th over. Player of the Match in the final. The most decorated run-scorer in this tournament’s history, with a second consecutive title to his name, at a point in his career when lesser men would have settled for legacy.

A Season in a Sentence

IPL 2026 started with RCB retaining the title they won the year before, and it ended with RCB winning it again.

In between, a fifteen-year-old from Bihar made us believe that the next decade of Indian cricket is in safe hands. Several bowlers reminded us that fast bowling is not dead in this country. And the tournament, despite its mid-season drag, produced a playoff stage that justified the entire exercise.

You don’t always get a perfect season. Sometimes you get a season with a perfect ending and a few perfect weeks and one extraordinary child prodigy, and you take it.

This was that season.

See you next year.

Read the previous post in this series here.

I almost skipped it.

It was late. Long day of calls. A few decisions I wasn’t fully happy with. The usual pile of things that quietly move to tomorrow’s list.

Then I saw Daniel Pink’s post about the Odyssey Plan. A Stanford exercise. Twenty minutes. Three versions of your next five years.

I almost scrolled past it.

But something about it wouldn’t let me.

So I did something I almost never do. I put the phone down, found a pen, found paper, and sat with it.

Path 1: Stay Exactly Where You Are

The first question was simple. What does your life look like in five years if nothing changes?

Same job. Same routine. Same direction.

I sat with that. Then I wrote it down honestly.

Brainium at year 18. Same clients in the UK, US, Australia. Same team of around 150 people. Products like LeadFlow and Diamond Picks still finding their footing. Revenue steady. No dramatic leap forward. No dramatic fall either.

Just steadiness.

Then the uncomfortable part. When I wrote “what does Monday morning look like?” the answer was almost identical to today. Early calls across time zones. Internal reviews. Some writing if I’m lucky. A lot of problem-solving that never fully ends.

That picture sat heavy.

Not because it’s a bad life. It isn’t. But because steadiness is another word for stagnation when you’re capable of more.

Path 2: Take the Risk

The second question asked me to imagine the version of my life where I actually took the leap.

This one came faster.

Path 2 Sourav makes a serious pivot. Products over services. A few energetic new hires who bring fire into a team that has gotten comfortable. Real risk put behind the ideas that have been sitting in planning documents for too long.

By 2031 in this version, things look different. Brainium’s products have found markets. The business has momentum that Path 1 never could.

Monday morning feels different too. Busy. A little chaotic. The kind of chaos that comes from growth.

I liked that picture.

But I also noticed something as I wrote it. The thing stopping Path 1 from becoming Path 2 wasn’t opportunity. It wasn’t resources. It was appetite for risk. The willingness to move faster than feels comfortable. To stop waiting for the right moment and accept that the right moment is probably now.

Path 3: If Nothing Was Stopping You

No money pressure. No one else’s opinion. No constraints. What do you actually build?

I expected this one to be dramatic. A fantasy I’d never really pursue.

Instead, what came out was quiet.

Reading. A lot of it. The kind of deep, unhurried reading I used to do before the business got big enough to consume every hour.

Writing. Books, specifically. I’ve written two already, The Diamond Way and The 12th Man. In Path 3, there are more.

Stock market investing. Not as a hobby but as a serious craft. The kind that requires patience and time to think rather than react.

Sales talks. Speaking at events, mentoring founders, sharing what I’ve learned in 13 years of running a bootstrapped business.

Slower days. More intentional. Less firefighting.

I looked at what I had written and felt something unexpected.

Relief.

Not because it was a fantasy. But because none of it was actually that far away.

The Thing That Surprised Me

Path 3 and Path 2 are not opposites.

The writing is already happening. You’re reading this right now. The books exist. Diamond Picks, our AI stock screening product, is already deep in the territory of investing and markets.

The “chilled out” version of my life and the “serious growth” version aren’t pulling in different directions. They’re pointing at the same place. The gap between them isn’t about what I want. It’s about the speed and courage with which I move toward it.

Path 1 is what happens when I let the days run me.

Path 2 is what happens when I decide to run the days.

Path 3 is proof that I already know what matters.

Try It Tonight

Twenty minutes. Pen and paper.

Three paths. Five years. Specific enough that you can see Monday morning in each one.

Then notice which path you avoid looking at too long. That’s probably the one with the real answer.

For me, it was Path 1.

I’m not going back there.

There is a moment in every major technological shift when the rules don’t just bend, they break entirely. We had one such moment in the mid-2010s when Google moved from ten blue links to featured snippets and local packs. Businesses that understood the new terrain early captured audience, awareness, and revenue. Those who kept doing what had worked before spent years wondering why their traffic graphs were trending the wrong way.

That moment is happening again. And this time, the terrain isn’t just shifting, it is being replaced.

The research comes from Tim Soulo, CMO at Ahrefs, who published findings from over a billion data points across fourteen studies on AI search behaviour. Soulo built Ahrefs from employee number 16 to a $100M+ ARR bootstrapped company and when he publishes data on how AI discovers content, it is worth reading slowly. What these findings reveal is not a set of tactical tweaks to your existing content strategy. They reveal that the strategy itself needs to be rebuilt from different foundations.

The Search Bar Has a New Brain

Here is where most brands are making their first mistake. They are treating AI search, ChatGPT, Perplexity, Google’s AI Overviews as a slightly smarter version of the old Google. Optimize for keywords, build backlinks, get ranked. Done.

The data says otherwise.

Nearly 28% of the pages that ChatGPT cites most frequently have zero Google organic visibility. These are pages that a traditional SEO audit would declare invisible, irrelevant, non-existent from a traffic standpoint. Yet AI is referencing them, drawing from them, citing them in front of millions of users every single day.

This means there is an entirely separate discovery layer operating in parallel to everything you thought you understood about digital visibility. Your SEO rank is no longer your citation rank. They are different games, running on different fields, scored differently.

You Can Only Influence a Third of the Conversation About You

This is the data point that should hit founders and brand marketers hardest. Of ChatGPT’s top 1,000 cited sources, 67% come from places that no marketing budget can touch: Wikipedia (nearly 30%), homepages (almost 24%), and app stores. The remaining 33%: educational pages, reviews, news, blog posts is where you actually have a seat at the table.

One third. That is your playing field.

Which means that every piece of content you produce for AI visibility has to work harder, be more precise, and earn citation in a highly competitive slice of an already competitive landscape. The question you need to ask for every blog post, every product explainer, every case study you publish is no longer “will Google index this?” It is “would an AI chatbot find this authoritative enough to surface to a user asking a relevant question?”

That is a higher bar. And most content being produced today isn’t clearing it.

The Format That Actually Gets Cited

If there is one tactical signal in all of Ahrefs’ research that every content team should act on immediately, it is this: “Best X” listicles make up 43.8% of all page types cited by ChatGPT. Nearly half. The format that content marketers have been writing since 2009, the one that senior strategists have been quietly dismissing as low-effort, the one that your editorial team may have deprioritized in favour of long-form thought leadership, that format is dominating AI citations.

This does not mean you start pumping out lazy listicles. It means you write deeply researched, genuinely useful “Best X for Y” pieces and you write them in categories directly adjacent to what you sell. If you are a Shopify brand selling supplements, “Best Magnesium Supplements for Sleep in 2025” is not beneath you. It is the door through which AI walks a potential customer into your world.

Being Retrieved Is Not Being Cited

Here is the nuance that most AI search guides will skip: ChatGPT only cites around 50% of the URLs it actually retrieves. It fetches dozens of pages per query, reads them, uses them as background context and then only attributes half of them in the final response.

What this means is that being findable by AI and being visible to the user are two completely different achievements. You can be doing everything right at the retrieval level and still be invisible to the person reading the answer. The citation gap is real, and it is being driven by authoritativeness, recency, and specificity of the content that gets the attribution.

The implication is direct: produce content that is specific enough to be definitively useful, not just broadly informative. AI cites sources that give it something clean and clear to attribute. Vague, wide-angle content gets consumed in the background and dropped before the answer is written.

YouTube Is Doing More Than You Think

Of all the factors Ahrefs tested for AI brand visibility, backlinks, domain rating, page count, organic traffic, all of it, YouTube mentions had the single highest correlation at 0.737. Not a minor edge. A significant lead. And this correlation held across both Google-owned products and OpenAI products.

Think about what that means structurally. AI systems are not just reading text on the web. They are building an understanding of brand authority from a much richer set of signals, and video presence is near the top of that signal stack. A brand that has built real YouTube presence, genuine tutorial content, product walkthroughs, founder conversations, is being rewarded in AI visibility in ways that a brand with better backlinks but no video presence is not.

If you have been putting off building a YouTube presence because it is hard, time-consuming, and takes months to gain traction: this is the datapoint that should move that task up your priority list.

AI Overviews Are Eating Your Clicks. Faster Than You Think.

Twelve months ago, AI Overviews reduced clicks to the top Google result by about 35%. Now that number is 58%. In less than a year, the click-loss rate went up by more than twenty percentage points. The trajectory is not levelling off.

For transactional queries, someone searching to buy something, this is less of an immediate concern. AI Overviews appear on shopping queries only about 3% of the time. They are almost entirely focused on informational intent searches. Which means the content that is being displaced is the content that was already working hardest to build awareness and educate buyers at the top of your funnel.

This is not a reason to panic. It is a reason to redirect. The audience is not disappearing. It is being intercepted earlier in the journey. The brands that win in this environment are the ones who show up inside that interception, inside the AI answer itself rather than waiting for the user to scroll past it.

The Signal That Never Changes, Even When Everything Else Does

One last thing worth sitting with. Ahrefs found that AI Overviews change their content every 2.15 days on average, with 70% of the specific words and sources shuffling between observations. That sounds chaotic until you see the other number: the semantic similarity between those constantly changing answers stays at 0.95.

The words change. The sources swap in and out. The specific entities rotate. But the meaning, the core of what the AI is saying, stays almost perfectly stable.

What this tells you is that AI has already formed a settled view of most topics in your category. The sources feeding that view are not fixed, which means the door is open to new entrants. But the answer being produced is already shaped. To influence it, you have to produce content that is semantically consistent with the direction that answer is already moving in. You are not trying to disrupt the AI’s understanding. You are trying to become the source it trusts to express what it already believes.

That is a very different content brief than the one most teams are working from.

What to Actually Do

The map has changed. Here is how to read it.

Start by auditing what currently ranks for the “Best X” queries most relevant to your category not to copy them, but to understand the format and specificity that is earning citation. Build a content calendar that produces at least one deeply researched comparative piece per month in your core area.

Invest in YouTube with the seriousness you give to written content. Not production value for its own sake, but consistency and genuine usefulness. The AI visibility dividend from video presence is measurable and it compounds.

Stop measuring your AI strategy by Google rankings alone. Use tools that track AI citation and brand mention across ChatGPT, Perplexity, and AI Overviews. These are not the same metric and treating them as the same will leave you flying blind in the channel that is growing fastest.

And produce with specificity. The vague, wide-angle content that filled content calendars for a decade is the content most likely to be consumed silently by AI and never attributed. Every piece you produce from here forward should be asking: specific enough to cite, authoritative enough to trust, current enough to matter.

The brands who understood that search was changing in 2013 are still reaping the rewards. The window to be that brand in the AI search era is open right now.

It will not be open forever.

She had built something worth buying.

Eighteen months of sourcing. A manufacturer in Surat who finally got the drape right. An Instagram following that was engaged in the way most D2C founders only dream about, people tagging friends, saving posts, asking questions in the comments about whether the kurta runs true to size.

The ads were working. Traffic was consistent. And yet, every Monday morning when she opened her Shopify dashboard, the number that stared back at her was the same: a return rate nudging 28 percent, and a cost per acquisition that refused to come down no matter how well she optimised the campaign.

She called me after reading the last post in this series. The one about retention. She said she had the 90-day flow running, the segmentation logic was in place, Klaviyo was doing its job. But something upstream was broken.

I asked her to pull up her product detail page on her phone.

Three seconds of silence. Then: “Oh.”

The retention engine we built in the last post is only as powerful as the customer velocity feeding it. A 90-day flow cannot save a customer who never converted cleanly in the first place, or one who clicked “buy” with a knot of uncertainty in their chest that later became a return request. If your PDP is converting cold mobile traffic at 1.5 to 2 percent, which is exactly where the industry average sits, your CAC is structurally inflated. Not because your ads are bad. Because the page at the bottom of the funnel is leaking.

The fix is not a redesign. It is a rearchitecting. And the difference matters.

The page your customer actually lands on

Here is what the standard Shopify PDP looks like on a phone. A static image carousel. A product title. A price. A dropdown that says “Select size.” Three paragraphs of description that begin with the words “Made from premium quality fabric.” A button.

That dropdown is where the fashion founder’s business was quietly haemorrhaging.

Sizing confusion is one of the largest single drivers of cart abandonment in apparel, and it is almost entirely a page design problem. The customer does not know which size to pick. The chart is buried in an accordion they have to tap to open. They make a guess. Sometimes they buy. Sometimes they guess wrong and the return lands in your warehouse three weeks later, eating your CM2 from the inside.

The fix here is not a better size chart. It is removing the dropdown entirely and replacing it with an inline configurator that sits directly above the buy button. A few behavioral questions, lightweight and fast: height, preferred fit, what they usually order elsewhere. The logic maps to a variant recommendation and surfaces it instantly. The customer does not guess. They confirm.

This is not a plugin decision. It is a custom-coded interaction that requires thought about how your specific size logic works. But the return rate impact is immediate and measurable, and every point you take off your return rate goes directly back into CM2 without touching your ad spend at all.

The hero section that only shows one person what they need to see

The fashion founder was running three ad campaigns simultaneously. One was targeting women looking for occasion wear. One was targeting everyday workwear. One was retargeting everyone who had visited the site in the last 30 days.

All three of those audiences landed on the exact same product page.

The woman who clicked an ad about workwear kurtis landed on a hero section that was still showing the festive collection shoot from Diwali. The festive buyer who came in through retargeting saw the same layout as a cold visitor who had never heard of the brand. No one was wrong. The page just was not paying attention to who had arrived.

Shopify Metaobjects and URL parameters solve this. When your campaign UTMs are read by your storefront theme, the hero section, the primary value proposition in the headline, even the first lifestyle image can pivot automatically to match the intent of the visitor. The workwear audience sees workwear context. The festive audience sees the world they were already imagining. You are not showing everyone the same door. You are showing each person the door that was already open for them.

Bounce rates drop. Not because you made the page prettier. Because you removed the half-second of cognitive dissonance that was sending people back to the feed.

What a feature description actually costs you

There is a line on the fashion founder’s PDP that read: “Fabric: 100% handloom cotton. Weight: 180 GSM.”

She was proud of that line. She should be. The sourcing behind it was real and deliberate.

But her customer, scrolling on a phone at 11pm, does not know what 180 GSM feels like against her skin. She does not know if it means the kurta will breathe in May or feel heavy by noon. The specification is accurate and completely useless.

What she wants to know is whether it will still look like it did in the photograph after she has washed it twelve times. Whether it will survive the commute without creasing. Whether the drape in the image is achievable in real life or a product of a stylist and two hours of prep.

Replace the specification block with modular, icon-driven units that translate features into outcomes. Not “180 GSM handloom cotton” but “holds its shape through 100 washes.” Not “reinforced stitching” but “built for daily wear, not just the photo.” The goal is to make the post-purchase reality visible before the purchase happens. You are not selling fabric. You are selling the version of themselves they saw in the ad, and the PDP’s job is to close the distance between that image and reality before anxiety fills the gap.

The buy button that moves with them

A content-rich PDP in fashion is long by design. You need the outcome blocks, the configurator, the imagery, the reviews, the care instructions. A customer who is genuinely evaluating the product will scroll.

And somewhere in that scroll, the main “Add to Cart” button disappears off the top of the screen.

Most themes handle this with a floating button that covers content, annoys users, and gets dismissed. The right implementation is a sticky bottom bar that activates precisely when the primary button leaves the viewport, not before. It shows the product thumbnail, the selected variant, the price, and a clean checkout trigger. It does not interrupt the reading. It simply stays available.

On mobile, which is where the majority of fashion D2C traffic lives, this single change lifts checkout initiation rates in a way that is disproportionate to the engineering effort involved. The customer does not have to scroll back up to buy. The decision, when it comes, can be acted on immediately.

The compounding math of a better page

The fashion founder’s return rate is the obvious metric. But the conversion rate is the one that moves everything else.

A high-traffic PDP converting at 2 percent and one converting at 3.5 percent are not separated by 1.5 points of performance. They are separated by more than 40 percent in effective acquisition cost. Every rupee spent on traffic to the 3.5 percent page acquires more customers than the same rupee spent on the 2 percent page. The CAC that seemed stuck, the one she had been trying to fix with better creative and sharper targeting, was a page architecture problem the entire time.

When the PDP converts better, the retention engine you built upstream becomes more powerful because it has more customers to work with. When return rates fall, CM2 recovers without touching cost of goods or changing your pricing. These are not marginal improvements. They compound.

The kurta she was proudest of, the one with the drape that had taken six months to get right, was converting at 1.8 percent when she called me.

We started with the sizing configurator.

The numbers have not moved yet. But the page has, and that is always where it begins.

This is post seven in the series on D2C profitability. The earlier posts cover retailer margin costs, ad attribution, discounting’s hidden tax, store design, membership commerce, and the 90-day retention flow. If you have not read them, start from the beginning.

If you want to build the PDP architecture described here, custom sizing logic, dynamic hero sections, and mobile-optimised conversion flows, Brainium is the team to talk to.

Most D2C founders treat the post-purchase experience like a courtesy. A thank you email. A shipping notification. Maybe a review request three weeks later. Then silence, until the next paid acquisition campaign drops another stranger into the top of the funnel.

That is not a business model. That is a leaky bucket with a very expensive tap.

If you read the last post in this series, you know that reaching a 5:1 LTV to CAC ratio is fundamentally a unit economics problem, not a marketing one. CM3 tells you whether each order is actually generating cash. But CM3 is only the diagnostic. The 90-day post-purchase window is where you do the surgery.

The math is straightforward and worth sitting with. A customer who buys from you a second time within 90 days of their first order is substantially more likely to become a repeat buyer for life. That second purchase is not just incremental revenue. It is proof that a habit is forming. Every rupee you spend acquiring a customer and then losing them to silence is a rupee that funded someone else’s loyalty program.

The question is not whether to build a post-purchase flow. The question is whether yours is engineered or accidental.

The first two weeks are not for selling

This is where most brands get it wrong immediately.

The product has just arrived. The customer is either validating their decision or quietly regretting it. The worst thing you can do in this window is pitch them something else. The best thing you can do is make them feel like the purchase was the right call.

Shopify Flow lets you monitor delivery status in real time. The moment your logistics provider marks the package as delivered, that is your trigger. Not to upsell. To educate. Send them how to get the most from the product. Anticipate the questions they have not asked yet. Reduce the friction between what they expected and what they received. A well-timed, genuinely useful message here does two things: it cuts your return rate, and it starts building the relationship before the next sale becomes relevant.

Weeks three to six: pull them into something, not toward something

Once the product has been in their hands for a few weeks, they have an opinion about it. This is when you stop broadcasting and start listening.

Invite them to join a community, take a preference quiz, or submit a review. Not with a discount as a bribe, but because the invitation itself signals that they are now part of something. The insight you gather here is genuinely valuable. Use Shopify’s Customer Metafields to store it. If they tell you their skin type, their training goal, the problem they were trying to solve, tag that profile. Every future communication you send that person should reflect what they told you. Personalization is not a feature. It is the difference between a message that feels like it was written for someone and one that clearly was not.

Weeks seven to ten: now you sell, precisely

By this point you know who this customer is, what they bought, and what they told you about themselves. You have a reasonably good sense of when their initial supply or interest is starting to taper. This is when a well-timed, hyper-relevant recommendation lands differently than it would have on day three.

The mistake here is defaulting to generic product recommendations. Shopify’s data shows you what customers in this specific cohort bought as a second item. Use Liquid logic in your email templates to surface that, not a random bestseller. The recommendation should feel less like a suggestion and more like you were paying attention.

The final stretch: do not discount, differentiate

If someone has received your product, engaged with your community, and still has not bought again by day 70, they are not waiting for more information. They are waiting for a reason.

A discount is the laziest reason you can give them, and it trains them to wait for one every time. Instead, build a dynamic customer segment in Shopify Admin for high-value first buyers with no second purchase at day 75. Target that segment with brand-values content, not a coupon. An invitation to a loyalty tier. An exclusive gift with a future purchase. Something that makes them feel like they are being seen, not marked down.

The number that changes when you do this right

When a higher percentage of your first-time buyers convert to repeat cohorts within 90 days, the pressure on your paid acquisition channels drops. You are not acquiring new customers to replace the ones you lost. You are building on a base that is already bought in.

That shift is what makes the 5:1 LTV to CAC ratio an operational reality rather than a target you keep missing. Acquisition does not get cheaper. But when retention is working, you need less of it.

This is post six in the series. The earlier posts cover retailer margin costs, ad attribution, discounting’s hidden tax, store design, and CM3. If you have not read them, start from the beginning.

If you want to build the Shopify data architecture that makes this kind of segmentation and personalization actually work in practice, Brainium is the team to talk to.

There is a moment in every great sporting season where the narrative stops pretending it is not a story.

Where the coincidences stop feeling random.

Where every result, every dropped catch, every last-over six looks like it was arranged by someone who wanted this particular ending.

This IPL season hit that moment this week.

Last time I wrote here, I was processing a Virat Kohli century that cut through KKR’s bowling like a surgeon going through something that never stood a chance. Raipur. Wednesday night. 105 not out. The wound was still fresh when I put pen to paper.

That was May 16, early morning.

A lot has happened since.

Three teams have qualified. Three teams are now fighting over a single chair that remains in the playoff room. And in the next 48 hours, three matches will decide who gets to sit in it.

Let me take you through the week that built to this.

Saturday, 16th May. KKR vs GT

There are nights at Eden when the crowd doesn’t just watch cricket. It becomes the cricket.

Saturday night was one of them.

GT had won five in a row coming in. They had Rabada and Holder on a pitch that always had something for the bowlers early. They had Shubman Gill in the form of his life. On paper, this should have been clinical. Comfortable. Another step in GT’s march to the top two.

Finn Allen did not read the paper.

He has never read the paper, which is possibly why he keeps batting the way he does. Allen has this extraordinary quality of arriving at a crease and making you feel like the game has already been decided, you just need to wait for the confirmation. He survived two dropped catches, on 14 and on 33. The kind of lives that you don’t waste when you are in that kind of mood. He got to 50 off 21 balls. He ended at 93 off 35.

By the time GT got him, KKR were already somewhere that the chase was going to require something extraordinary.

Angkrish Raghuvanshi came in and batted like he had been waiting all season for this exact match. 82 not out off 44 balls. His second successive big knock in the purple and gold, and this one felt different. There was a control to it. The youngster who made his name last year is starting to look not just talented but composed. Cameron Green came in at the back end and hit 52 not out off 28. The hundred partnership between the two arrived in 50 balls.

KKR posted 247 for 2.

I will be honest. Even at 247, with GT’s batting lineup and the ability they have shown all season, there was no certainty. Gill smacked a half-century. Buttler got a fifty. Sai Sudharsan made a fifty as well. Six half-centuries in the same IPL game, a first in the tournament’s history.

But 247 is 247. GT fell short by 29 runs. Stranded at 218 for 4, a number that would have chased down almost anything else all season.

Sunil Narine took 2 for 29. Narine who has been quietly exceptional with the ball in the second half of this season, getting not nearly enough credit while everyone watches the batters.

KKR: 11 points from 12 games. Still alive. Still, at that point, needing everything to go right.

May 17: The Day the Race Changed

Two matches on a Sunday afternoon and evening that changed the shape of the season’s final week.

Match 1: PBKS vs RCB, Dharamsala

Royal Challengers Bengaluru needed a win to seal their playoff spot. They came to the HPCA Stadium and took it.

What made this match significant was not just the result. It was the manner. RCB batted first. Virat Kohli set Dharamsala ablaze with a half-century at the top. The man is simply not done with proving things to people who think he might be done.

RCB posted 222 for what would become a commanding total on that surface. Then Bhuvneshwar and Rasikh Salam got to work. PBKS were reduced to 19 for 3 inside the powerplay. The team that was invincible in April could not find a way to score against a bowling attack that had seen every blueprint of theirs, twice over. Shashank Singh hit 56 off 27 to give the total some respectability, but PBKS finished at 199 for 8. RCB won by 23 runs.

RCB: first team to qualify. First, and given what would unfold over the next few days, probably with the most comfort of anyone.

Punjab Kings: seven consecutive defeats. The table-toppers of April had become a cautionary tale about what happens when the league figures you out and you don’t have an answer.

Match 2: DC vs RR, Delhi

This match was the one that really tightened my chest on Sunday night.

Rajasthan Royals were cruising at 161 for 2 in the 15th over. Sooryavanshi had contributed 46 off 21, Dhruv Jurel was going, Riyan Parag had hit 51 off 26. The scoreboard at that point was pointing somewhere north of 220. This looked like a statement total.

Then Mitchell Starc bowled a single over that cricket will not forget in a hurry. Three wickets in four balls. The rug pulled, the platform destroyed, the over turned into a demolition job. Lungi Ngidi came back at the death and took 2 for 24. RR were restricted to 193 for 8.

KL Rahul and Abhishek Porel opened the batting for DC and put on 105 runs before the ten-over mark had arrived. A century opening stand in 61 balls. The game was effectively over. Jofra Archer managed 2 for 35, Brijesh Sharma got 2 for 44, but the platform was too high to tear down. Axar Patel finished it off with four balls to spare.

Delhi Capitals won by 5 wickets.

And the implication of that result was enormous. Rajasthan had slipped. DC had moved up slightly. And with RR dropping from fifth to sixth having played their 12th game, several doors that had looked like they were closing started to creak back open.

Monday, 18th May. CSK vs SRH

Cricket can be many things at Chepauk. Monsoon-threatened. Slow-paced. Unexpected. What it rarely is, when CSK are batting at home under lights, is comfortable for the opposition.

Sunrisers Hyderabad made it look comfortable.

Ishan Kishan had been in the kind of form that makes opposition captains avoid looking at the batting order too closely. Four consecutive fifty-plus scores against RCB in his recent outings, and on Monday night in Chennai he showed exactly why he has been the most improved batter in this league this year. 70 off 47. Three fours, seven sixes. On a pitch where CSK’s spinners were getting grip and the slower balls were doing things, Kishan stayed and read it.

Heinrich Klaasen made 47.

CSK had scored 180 for 7. It was not enough. SRH chased it with an over to spare, winning by five wickets.

Two things happened at once in that moment. SRH became the second team to qualify for the playoffs. And by virtue of their points tally, GT qualified automatically as the third. Three playoff spots filled on a Monday evening at Chepauk.

CSK’s season was not yet officially over, but the mathematics had been reduced to something very tight and very dependent on other teams failing.

One spot left. Technically five teams still in contention. Realistically, three with a genuine chance.

Monday-Tuesday crossover. The Table as It Stood

Let me give you the picture as it sat after CSK vs SRH:

RCB, 18 points from 13 matches. Qualified. Playing SRH in their final game, with top-two spot the only thing left to fight for.

GT, 16 points from 13 matches. Qualified. GT’s machine, six wins in their last seven games, was purring.

SRH, 16 points from 13 matches. Qualified. Finishing third unless something extraordinary happened.

And then the jam:

RR, 12 points from 12 matches. Two games left.

PBKS, 13 points from 13 matches. One game left.

KKR, 11 points from 12 matches. Two games left.

CSK, 12 points from 13 matches. One game left.

DC, 12 points from 12 matches. Two games left.

One seat. A table full of people who wanted it.

Tuesday, 19th May. RR vs LSG

The thing about Vaibhav Sooryavanshi is that you keep having to remind yourself he is fifteen years old.

Not because he looks young. He does, occasionally, in the quieter moments. But because when he is in full flow, there is no deference to seniority, no hesitation about the occasion, no visible gap between what he wants to do and what he can do. He just plays. And when he plays well, it looks less like talent and more like inevitability.

Tuesday night in Jaipur, he played very well.

LSG posted 220 for 5, a decent total, built on a Mitchell Marsh half-century and Josh Inglis doing damage at the top. But LSG are a team playing for nothing, which sometimes makes a team dangerous and sometimes makes them loose. They were neither. They were just… there.

Jaiswal opened with Sooryavanshi and took the tempo in the early overs. Jaiswal hit 43 and then Akash Singh got him with an outswinger. And then the 15-year-old took over.

93 off 38 balls. He got to his fifty in 23 balls. He hit sixes that made R Ashwin post on social media in real time, comparing him to something extraterrestrial, which is not an understatement when you see the geometry of some of those hits. Dhruv Jurel finished the job. RR chased 221 with five balls to spare.

RR: 14 points from 13 games. They had climbed to fourth on the table. They had overtaken PBKS.

The celebrations in the Jaipur dugout told you what that win meant. High-fives, fist-bumps, and the slightly glazed expression of a team that had gone from looking finished to looking like they might actually make it.

But they were not through yet. One more game. Against MI on Sunday.

Wednesday, 20th May. KKR vs MI

Let me be precise about what this match meant before I tell you what happened in it.

If KKR lost this game, they were finished. 11 points from 13 games with one match remaining against DC could still mathematically get to 13, but 13 would not be enough with RR on 14 and very likely to beat MI.

There was no margin. This was a must-win. In front of 66,000 people at Eden Gardens, in the city that has given this franchise everything, including two IPL titles and the loudest crowd in world cricket.

The pitch was slow. Unusual for Eden, which tends to be good for batting. The wicket gripped early. Bumrah was bowling. Hardik was in the XI. On paper, MI’s bowling was more than capable of defending any total.

MI batted first and made 147 for 8. In the context of the surface, it was not a bad score. Bumrah looked dangerous. Deepak Chahar moved the new ball.

KKR lost their top order. Finn Allen went cheaply. And in this moment of pressure, Manish Pandey and Rovman Powell steadied the innings in a partnership that got quieter mentions in the post-match coverage than it deserved. Powell, who has been largely quiet in this tournament, understood the surface and played accordingly. KKR wobbled but never fell apart.

Rinku Singh came to the crease at a moment that required his particular skill set: staying alive when it is difficult, and accelerating when there is room to do so. He hit the winning boundary. KKR won by four wickets with seven balls remaining.

The number that tells you everything: KKR’s score of 148 for 6 to win. Not a comfortable win. Not a dominant win. A win that required every run and every over. A win that, at various points, felt like it might not come.

But it came.

KKR: 13 points from 13 games. Tied with PBKS. With one game still to play.

Thursday, 21st May. GT vs CSK

By the time this match happened, CSK’s slim playoff mathematical hope required that GT lose. It also required RR to lose to MI. And KKR to lose to DC. And the NRR to work out.

Mohammed Siraj walked to the top of his run in the first over of CSK’s chase and didn’t seem interested in making it complicated.

He dismissed Sanju Samson for a duck. Then Ruturaj Gaikwad for 16. Then Urvil Patel for a duck. By the third over, CSK were 29 for 3, and the game was functionally over. Rashid Khan took 3 for 18. Rabada added 3 for 32. CSK crumbled to 140 all out in 13.4 overs. GT had made 229 for 4 built on another Gill-Sudharsan opening stand of 125. Gill hit 64, Sudharsan 84, his fifth consecutive half-century in IPL 2026. Jos Buttler thrashed an unbeaten 57 off 27 at the end.

The 89-run win: GT’s biggest win by runs in IPL history.

CSK were eliminated.

And GT confirmed a top-two finish. They now knew they would play Qualifier 1. The only question was whether they would play it as number one or number two, which would be settled by the SRH-RCB match on Friday.

Friday, 22nd May. SRH vs RCB

A match where both teams already knew they had qualified. A match where the prize was the top-two finishing position: Qualifier 1 or Eliminator for the team that finished third.

And yet it produced some of the most electric batting of the season.

Abhishek Sharma and Ishan Kishan opened the batting for SRH as if they had a point to prove to everyone who had spent the week talking about Sooryavanshi and Gill and Kohli. Abhishek blazed to 56. Kishan made 79 off 46, his fourth consecutive fifty-plus score against RCB in as many meetings. A half-century from Klaasen followed. 255 for 4 in 20 overs. A total that required RCB to be restricted below 167 to move SRH to second place.

RCB were not restricted below 167. Rajat Patidar made 56, Venkatesh Iyer 44, Krunal Pandya stayed unbeaten at 41. RCB reached 200 for 4.

SRH won by 55 runs. But it was a win that didn’t quite feel like one. They had needed 89 runs from RCB’s innings to move up. RCB managed 200. The calculation never got close.

RCB finish first. GT finish second. SRH finish third.

And then there was a footnote buried in the commentary feed that I want you to sit with for a moment.

Virat Kohli, in this match, played his 281st IPL game. The most in the tournament’s history. He went past Rohit Sharma.

281 games. The man has played this tournament for almost its entire lifetime. And he is still the one your seam attack does not want to bowl to in the 14th over.

Where We Are. Tonight. Tomorrow. The Last Act

The league stage ends in three matches. Two days. And this is what we know.

Three teams have qualified: RCB, GT, SRH.

One seat remains.

The teams fighting for it:

Rajasthan Royals. 14 points from 13 games. They are in fourth position. They play MI on Sunday afternoon at Wankhede. MI have nothing to play for except pride and, perhaps, Hardik Pandya’s desire to send a message about what he thinks of several things. If RR win, they are in. Simple as that. They do not need anyone else’s help.

Punjab Kings. 13 points from 13 games. They play LSG tonight at Ekana. LSG are in last place. On paper, the softest possible last game. Shreyas Iyer’s team, which was supposed to win this IPL two months ago, needs to beat the bottom side just to stay in contention. If they win, they are on 15 points. That probably gets them in, but only if KKR don’t win their game tomorrow night with a better NRR.

Kolkata Knight Riders. 13 points from 13 games. They play DC on Sunday evening at Eden Gardens. And do not make the mistake of thinking DC are playing for nothing. If LSG beat PBKS tonight, and if RR lose heavily to MI tomorrow afternoon, DC could theoretically leapfrog RR on net run rate with a big enough win over KKR. It is a slim thread, but it is a thread, and KL Rahul’s team will know exactly what the numbers say before they take the field. Axar Patel, Mitchell Starc, Jofra Archer: this is not a bowling attack that needs extra motivation to bowl well. KKR will get nothing for free.

The equation Ajinkya Rahane’s men are working with, as I write this on Saturday morning, is this:

LSG need to beat PBKS tonight. Then MI need to beat RR tomorrow afternoon. Then KKR need to beat DC tomorrow evening.

Three results. Three matches. Three teams that need to go wrong before the Knights can go right.

It requires LSG to find something they haven’t shown all tournament. It requires MI to be motivated enough to beat a team that would benefit from losing. It requires KKR to win their last home game and trust that the math works out.

Is it likely? No.

Is it impossible? Also no.

Because nothing about this IPL season has been likely. And nothing has been impossible.

PBKS went from six wins in seven to six losses in six. RR went from losing three in a row to Sooryavanshi blitzing 93 in a must-win. KKR went from one point in six games to six wins in their next seven.

The IPL doesn’t reward the team that played the best across ten weeks. It rewards the team that peaks at exactly the right moment, survives the chaos, and happens to be standing when the music stops.

I have been following KKR long enough to know that we exist at the intersection of hope and heartbreak. Sometimes in the same over. I have watched us win IPL titles and I have watched us finish in the bottom half and I have learned that the only way to survive being a KKR fan is to feel everything and hold on to nothing.

So tonight I will watch LSG vs PBKS with the tension of a man who knows that a win for a team he doesn’t support is the only way his team’s dream stays alive. I will make peace with the uncertainty. I will remember that Finn Allen scored 93 at Eden, that Rinku hit those winning boundaries, that Narine is still bowling in the 2026 IPL.

And tomorrow I will watch KKR bat and bowl at Eden Gardens in what may be their last game of the season.

Or the start of something.

Three matches. Two days. And somewhere in that sequence of results, KKR either find a way through or they don’t. I have stopped trying to predict what this team does. I just watch.

Read the previous post in this series here.

What do you think happens? Does the IPL work its script and give KKR the wild comeback story? Or does Sooryavanshi bat MI out of contention? Drop it in the comments.

Subscribe

Get top posts delivered to your inbox