Overstock
Lead Designer
Timeline
2 quarters to initial launch, evolved continuously after
Platform
iOS, Android
Team
Designer (me), UX Researcher, PM, 3 execs, 1 analyst, 1 dev lead, 2 devs
Pulled from interstitial surveys, global ecosystem surveys, and hundreds of raw complaints, the pattern was consistent. Customers felt ripped off. Restrictions on certain categories weren’t clear upfront. Discounts didn’t apply to items already on sale. And our coupons were literally labeled “stackable,” but between the restrictions and the underlying system, they rarely actually stacked.
The real kicker was simpler than any of that. If you had a 20% off coupon attached to your account and then clicked a 10% off link from a marketing email, the 10% would auto-apply and silently override the 20%. Poof. Gone. No warning, no choice. Just a worse deal than the one you already had.
At the same time, our Apps vertical was tasked with growing MAU and GMS for the year. Coupons weren’t the obvious answer. Marketing was leaning toward loyalty and points. Execs were eyeing a search overhaul. Coupons became the lever, but not by default, I had to make the case.
That gap was my argument. We’re already investing in coupons as a traffic driver, so why not fix what happens once people actually arrive? I ran opportunity graphing sessions and pulled the org into user research and interviews to build the case. Marketing agreed fast, since it aligned with what they were already pushing. Execs wanted to see real validity first, so I went into our analytics platform and mapped the actual journeys, bounce rate and conversion rate for users arriving with a coupon attached. Paired with the complaint data sorted into distinct pain points, that made the case on its own. I didn’t need to argue opinion against opinion. I had the numbers.
I also pitched it beyond our own vertical. Whatever we learned in-app could inform decisions in desktop and mweb too, which helped get broader buy-in from teams outside our immediate org.
That didn’t mean the stakeholder group agreed on everything from there. Execs, marketing, PM, dev, three different sets of incentives pulling toward the same rough goal from different angles. The way I kept things aligned wasn’t persuasion by volume, it was going back to the data every time a disagreement surfaced.
The fix was obvious once I saw the override problem clearly. Collect coupons, don’t overwrite them. The wallet let users accumulate every coupon they’d interacted with and choose which to apply, instead of the system silently picking for them. That one shift, collection instead of overwrite, was the foundation everything else in this project sat on top of.
This wasn’t just a UI move. Marketing had real concerns going in, if we’re too upfront about restrictions, does the coupon feel less valuable? I pushed back. Hiding the terms wasn’t going to solve the actual problem we’d identified, the bait-and-switch feeling itself. We landed on a compromise: clear terms, one tap away, with wording that took the sting out without hiding anything. Would I have preferred going further on transparency? Sure. But it solved the core trust issue, and that was the actual goal.
What we landed on instead was a coupon wallet inside cart itself, plus a savings callout near the add-to-cart button showing what a customer could save. Users could toggle through their own coupons and find the best one themselves, rather than the system doing it for them automatically. PM was happy, since it was largely backend-driven and lighter to ship. I still think full automated surfacing would build more trust than self-discovery does. But the compromise solved the real problem well enough to matter, and there were a handful of smaller asks like this throughout the project that landed the same way.
That number holds up because of what it actually unlocked. Before the wallet, coupon usage was suppressed by the override bug itself, customers were losing value they’d already earned, so usage never reflected real demand. Once that was fixed, we were able to lean much harder into push campaigns driving coupon traffic into the app, the same channel that had been sending people into a broken experience before. During peak season, the app was carrying up to 50% of total user traffic. The wallet is what made that scale of investment actually convert.
More than the numbers, it changed how coupons functioned in the app. What used to be a single fragile string of value became something customers could actually trust and manage.
The miss I still think about: personalized coupon surfacing. Based on what’s sitting in someone’s cart or wishlist, we could’ve been showing relevant coupons proactively, even small ones, tied to actual purchase intent. It was out of scope at the time, and we never circled back to it. With where AI-driven personalization is now, that gap looks less like a missed feature and more like a missed loyalty play.
