Linkedin
Platinumlist app, 2024

In-app resale for concerts

Design a full resale feature flow from scratch to help users resell tickets fairly and intuitively
How the deal works screen
Select tickets to resale screen
Tickets on the listing screen
Listing details screen

The Challenge

Scalping is a major issue in ticketing: resellers buy up large quantities early and sell them later at inflated prices. This harms fans, ticket providers, and even artists — many of whom now avoid platforms that don’t address resale abuse.

In late 2023, our team set out to address this issue head-on. One of the initiatives we launched was a controlled resale feature. It limits ticket purchase volumes, caps resale prices. And as a bonus it funnels traffic into our app, generating revenue from secondary sales.

Preparation & Research

As part of our fight against ticket scalpers, we rolled out a few major updates. Adding resale directly inside the Platinumlist app was actually the final step.

Before that, we had already launched smart tickets with dynamic QR codes and the ability to transfer tickets easily. This was big and quite challenging task I worked on with my team in 2023. I'd love to tell the full story about it another time!

For now, what matters is: by the time we started on the resale feature, we already had a strong, flexible ticket system that we could build on.

Choose version
Old ticket example
Old ticket example
New ticket example
New ticket example

After syncing up with stakeholders and our product manager, I started digging into how competitors handled resale — plus a few ideas from other industries. Based on that, I mapped out a first version of the "perfect flow" — just the happy path, no edge cases yet.

The photo of a screen with a map of the whole process of the Resale feature

When we walked through it as a team, we quickly spotted a few areas that needed more attention.

The trickiest part? Legal. It wasn’t clear yet what rules we could apply to users in different markets, and what exactly we needed to collect in the Withdrawal Request form. Spoiler: we didn’t get the final list until almost right before development started.

Early Ideas & Sketches

Even with a lot of unknowns, I had a pretty good picture of the main screens in my head, so I jumped into early designs. I decided to start with the resale listing flow because it had had the fewest open questions.

One of the biggest UX challenges was making resale feel consistent with the ticket transfer flow we’d already launched — but resale needed way more information (like price settings for example). I needed a way to show all of it without making the screens feel cluttered.

Select tickets screen of a transfering flow
The ticket has a 'Pending Accept' status
Ticket transfer screens that I wanted to use as a basis for consistency

I used the ticket selection flow from transfers as my starting point and sketched a few variations on paper.

Pretty quickly, I ran into the price-setting challenge:

First sketch
Second sketch
Third sketch
Fourth sketch
Fifth sketch

After a few rounds of sketching, I found a simple solution — a smart segmented control to switch between the original price and a custom price.

Once I found this solution, I moved into Figma to start fleshing it out properly.

Design

While designing the screen, I had an idea to add simple animation with the "unfolding" ticket when users adjust the price. It gives additional visual visual hint that the price is editable.

All the variations of a tickets from the Select Tickets screen

By this point, we had enough info to start building out more of the full journey: onboarding, post-listing steps, etc.

For onboarding, I created a beatiful animation that made the resale flow feel more special and important.

In the Resale tab, I also mapped out all the listing states and statuses — making sure everything was super clear for the user at every step.

We spent extra time polishing the microcopy too. The whole team helped rework the text several times to make sure it felt sharp, clear, and friendly.

Resale screen with one active listing and one completed
Listing on sale Listing on sale with some already sold tickets Listing on sale with not sold tickets
Listing details screen
'Event ended' listing status 'Under review' listing status 'Paid' listing status

Even though we still didn’t have a final list of the data we needed to collect in the Withdrawal Request form, I put together a working prototype with a placeholder set of fields so we could test the full resale experience end-to-end.

The prototype with the final version of Withdrawal Request form since the original prototype wasn't saved

We ran a small round of user testing — made a few tweaks based on feedback — and then I focused on filling in all the missing pieces: edge cases, skeleton screens, error states, Arabic localisation, Android version, everything.

Extra screens

Meanwhile, another designer on the team, working under my guidance, finalized the Withdrawal Request form once all the legal details came together.

First step of a 'Withdraw funds'
Second step of a 'Withdraw funds'
Success screen of a 'Withdraw funds'

Results & Impact

Even in the first three months after launch, we saw a real impact. But over time, it became clear that Resale was even more significant than we expected — it has grown into a completely new business stream.

More importantly, we kept resale ethical. Thanks to price caps and security features, people were using it mainly when they genuinely couldn't attend an event — not to make money.

Average resale markup was only 45%, way lower than the typical 300% you see on other platforms. As a result

For Platinumlist, this wasn’t just a new feature — it was the beginning of a new chapter. By bridging the primary and secondary markets, we created a unified ecosystem that truly sets us apart.

What's Next?

The next big move is to build a native wallet inside the app — so users can keep their resale earnings and spend them on more events and experiences within Platinumlist.

But that’s a story for another time…