← Portfolio
OneCard · Fintech · Travel

Helping Drive 2.2× Flight Booking Conversion by Building a Scalable Travel Ecosystem

OneCard

How we fit a partner's booking engine inside the OneCard app, used reward points to win the booking, and built it to take hotels, visas and experiences later.

OneCard Travel screens with reward points, fare rules and ticket highlights
2.2×Home-to-booking conversion3.0% in April → 6.6% in August
82%of flight bookings used reward pointsApril – August
141Hotel bookings in AugustLaunched on the same pieces, no rebuild

My role

Designed every native screen around the partner's engine. Took over partner alignment while my UX Lead was on leave, which is where the fare-rules decision came from.

Travel pageLoading hand-offCheckoutSuccessHistoryMy CollectionUpcoming trips Search · Results · Review · Booking details (partner)

Worked with

Thejas Jayan, UX Lead
Sambhid Gaurav, PM
OneCard engineering
The partner's design and tech team

Timeline

4-week design sprint
Limited launch in April 2026
Numbers tracked through August

01Problem

We had to fit a partner's web app inside ours, and design everything around it

Cardholders booked elsewhereon other apps, paying with OneCard
OneCard partneredwith a travel-tech company
They gave us a web appsearch, results, fare review, booking details
We plugged it inand designed the journey around it
01

What's ours, and what's theirs?

Two teams, two codebases, one journey.

02

How do we hide the seams?

Every jump between apps can feel broken.

03

Why would anyone book here?

MakeMyTrip is one tap away.

04

How do we build for what's next?

Hotels, visas and experiences would follow.

Constraints

Four rules we had to design within

Scalability

Flights first, but built so hotels, visas and experiences could slot in later.

Navigation

No task more than three taps from the bottom nav, whatever the partner's flow needed.

Travel inside the OneCard app
Seamless experience

Two codebases, two design teams, but users should never feel the join.

Platform priority

Travel had to earn its place in a credit-card app, never compete with it.

02Approach

We started with the business and the user, then worked our way to the screens

A OneCard rule we follow on every project

No screen ships without its empty and error states. We design for the first visit, the failed load and the lost connection, not just the happy path.

1 · Hypothesis & goals

Travel only makes money if people prefer booking here

User goals
  • Book fast
  • Get the best realistic price
  • No doubts after booking
Success looks likeNo surprise at payment
Business goals
  • Travel is seen and used
  • A clean partner integration
  • More reward points redeemed
Success looks likeTravel becomes a habit, paid with points
Design goals
  • The partner engine stays invisible
  • Trust at the moment of payment
  • Room for more categories
Success looks likeA new category needs no new screens
Where all three meetPeople prefer booking here: points on the results page, one price to payment, the booking kept in the app.
2 · User interviews

We talked to 10 cardholders who already booked flights elsewhere

10active OneCard users
3 mosince their last flight booking
Metro + tier 2to match our user base
Biggest findingPeople decide where to book on the results page, right after they see prices. Checkout is just where they pay.
3 · Competitive analysis

Everyone competes on fare. Nobody keeps the price the same till payment.

AppSame price, search to paymentPoints usable in the appOffers shown upfrontUpdates after bookingCoverage
MakeMyTrip1.5/4
Paytm1.5/4
EaseMyTrip1.5/4
Skyscanner0/4
Booking.com1.5/4
OneCard, our design4/4
YesPartlyNoCoverage counts partly as half. Skyscanner sends you to another site to book.
4 · Mapping who owns what

Two codebases, two product teams, one journey

With the whole journey on one line, the plan was clear: own the way in and the payment, and make every jump between the two apps feel like nothing happened. We shared our design tokens with the partner up front, so both teams built from the same base.

OneCard appFlight partner

Follow the line left to right. Each drop is a handoff between the two apps.

OneCard appOur screens, our codebase
Flight partnerTheir PWA, our design tokens
123StoreTravel pageSearchResultsFare reviewCheckoutSuccessHistory / My CollectionBooking details
OneCard appour code
Flight partnertheir PWA
123StoreTravel pageSearchResultsFare reviewCheckoutSuccessHistory / My CollectionBooking details
  1. Store
  2. Travel page
  3. 1Into the PWAA few seconds of load, so we designed the wait.
  4. Search
  5. Results
  6. Fare review
  7. 2Back to usSame fare and reward points carried into checkout.
  8. Checkout
  9. Success
  10. History / My Collection
  11. 3After bookingHistory and My Collection open the partner's booking details.
  12. Booking details
  1. 1Into the PWAA few seconds of load, so we designed the wait.
  2. 2Back to usSame fare and reward points carried into checkout.
  3. 3After bookingHistory and My Collection both open the partner's booking details.
The real design work was the seams. A single booking crosses between two codebases three times. If people never notice the jumps, the integration worked.
5 · Brainstorming

We worked it out on whiteboards first

Entry points, the Travel page structure, every trip state and the checkout timer, worked out with the team on whiteboards. Tap a board to read it.

  • What came off the boards

    One Travel hub for every category, a way back in for every trip state, and a checkout that handles its own timer.

6 · Insights to ideas

We put everything side by side and kept what served both the user and the business

  1. InterviewsI earn points but can't use them there.
    Points only work inside OneCard: our edge. And people choose on the results page.
    Reward points toggle on results, on by default82% of bookings used pointsSee it ↓
  2. InterviewsThe price goes up on the last screen.
    Keep one price from search to payment.
    One price from search to paymentSee it ↓
  3. InterviewsI don't know which offer applies until I pay.
    Show savings upfront, where the decision happens.
    The points discount on results, not just at checkoutSee it ↓
  4. Competitor reviewOther apps let you pick fares that can't work.
    Stop the error before it happens.
    Disable the invalid fare, explain why on tapSee it ↓
  5. Journey mapOpening the partner's app takes a few seconds.
    Design the wait, so the jump doesn't feel broken.
    A loading state with changing messagesSee it ↓
  6. Journey mapA ticket is a payment and something you keep.
    Give it a home for each job.
    History for the payment, My Collection for the ticketSee it ↓
03Solution
1 · A way in

Making room for Travel in the Store

Travel had to live in the Store, next to everything people already bought there. The top of the Store had three cards: 10% Store, Gift Cards and Memberships. Instead of squeezing a fourth card into that row, we reworked it into a 2×2 grid with Travel as the new tile. That put Travel two taps from the bottom nav, without pushing anything else out.

BeforeThree cards in a row
OneCard Store before Travel
The original three-card row
→
AfterA 2×2 grid, with Travel as the new tile
OneCard Store with Travel
Travel tile in the Store grid
2 · A reason to book here

Show the reward points discount on the results page, not just at checkout

OneCard reward points are earned on every spend but can only be used inside OneCard (10 reward points = ₹1). No other app can match that, so we put them where people actually decide.

Partner screenReward points toggle

On by default, so every fare shows the price after reward points.

Partner flight results screen
Reward points toggle on the results page

The results page was the partner's, so this was a pitch, not a design change. They didn't push back; they just needed the why: if the cheaper price isn't visible while people compare, our reward points can't win the booking.

82% of flight bookings went on to use reward points.
3 · Fare rules

Stopping a fare error before it happens

Other apps let you add a child as a traveller, pick a student or senior citizen fare, and only tell you it's invalid after you search. The partner's first version did the same. I pushed for a different rule: the app knows the combination won't work before you tap search, so it shouldn't let you get that far.

MakeMyTrip

Lets you enter or select the fare, then won't let you continue until you change it.

Paytm

Searches anyway, flashes an error, and quietly switches to regular fares.

What we did

Add a child, and fares that don't apply, like student or senior citizen, are disabled. Tap one, and a short message explains why.

Partner screenFares that don't apply, disabled

With a child on the booking, tapping student or senior citizen explains why it isn't available.

Partner flight search screen
Message explaining why the fare is not available
4 · Hiding the seams

Making the jump between two apps feel like one

Into the partner app. Their web app takes a few seconds to open, and a blank screen reads as broken. We added a loading state with messages that change as it loads, so the wait felt like progress.

OneCard screenLoading hand-off

Changing messages while the partner app opens, then straight into results.

Loading screen shown while the partner app opens
We're picking out the best flights
Partner results page after loading

Back to OneCard. Payment happens in our app, so the fare, reward points and fees had to match the partner's results to the rupee. Any change at this point feels like a bait and switch.

OneCard screenCheckout

The same fare, reward points and fees people saw on the results page.

OneCard checkout screen
5 · After booking

Keeping people updated between booking and the flight

A booking isn't finished at payment. Every booking stage was pinned in the in-app notification hub, with web check-in and the ticket one tap away, and the same updates went out on WhatsApp and email.

OneCard screenNotification hub

Every booking stage pinned in the in-app notification hub, with web check-in and the ticket one tap away.

OneCard notifications screen
Flight reminder notification
6 · Built for what's next

Flights were the first category, not the whole product

Every native piece had to work for booking types that didn't exist yet. The test I kept using: when the next category arrives, does it need a new screen, or just new content?

1

Travel page as a hub. Categories are tiles next to upcoming trips and offers. A new category adds a tile, not a page.

2

One card for every booking. History shows it as a payment, My Collection as something you keep, and both work the same for a flight, a hotel stay or an e-visa.

3

One booking details page. It lives in the partner's app, and History and My Collection both open the same page.

  • Store
    • Travel
      • Flights
      • Hotels
      • Upcoming trips
      • Visa
      • Experiences
    • History
      • Booking detailsPartner PWA
    • My Collection
      • Booking detailsSame page
At launchAdded laterPlannedPartner PWA
OneCard screenTravel page as a hub

Flights today. Every new category just adds a tile.

OneCard Travel page
Book Flights tile
OneCard screenHistory

The booking as a transaction.

OneCard History screen
Flight booking card in History
OneCard screenMy Collection

The ticket as something you keep.

OneCard My Collection screen
Flight ticket in My Collection
The proof: hotels launched in July on these same pieces, with no rebuild, and reached 141 bookings in August.
7 · When things go wrong

Every screen shipped with its empty and error states

At OneCard, no screen ships without its empty and error states. For Travel it mattered even more, because half the journey ran on someone else's engine.

Empty states. Before someone's first booking, History and My Collection don't just say there's nothing here. They turn the empty space into a nudge to book.

Error states. We designed for the three ways booking can break, and gave each one a clear next step: try again, check your connection, or reach support.

04Outcome

Conversion grew 2.2× in four months

2.2×

Home-to-booking conversion, 3.0% → 6.6% in four months

82%

of flight bookings used reward points, our one edge no other app had

141

Hotel bookings in August, launched on the same pieces with no rebuild

Home-to-booking conversion, flights

Share of people who searched for flights and went on to book

3.0%
4.1%
4.9%
5.3%
6.6%
AprMayJunJulAug
The number I trust mostFrom June to August, searches fell 26% while bookings held at about 1,500 a month. Fewer people looked, more of them booked. 15% of August's users were booking again.
What I don't lean onApril was a limited rollout, so the 15× jump in bookings is partly more people getting access. Conversion settled around 5.7% in early September, so 6.6% was the peak.
05Post-launch & trade-offs

We forgot the people who had opted out of WhatsApp and email

At launch, booking updates went out three ways. For some cardholders, none of them landed.

Reported by customer supportA cardholder missed their flight, saying they never got a reminder.

So we shipped two fixes after launch.

Fix 1 · Push notifications. Alerts that reach people without WhatsApp, email or opening the app, at every booking stage: booking confirmed, web check-in open, flight tomorrow, and a rich alert on the day of travel with the ticket one tap away.

OneCard Travel push notifications on the lock screen and an expanded day-of-travel alert
OneCard screenFix 2 · Upcoming trips

Your next trip at the top of the Travel page, where every booking starts.

OneCard Travel page with upcoming trips
Upcoming trips cards
The trade-off

Upcoming trips stayed off the home page

Explored, held backA trip card on the OneCard home page

The home page is reserved for critical card actions. A trip card would sit in the second or third fold: clutter that nobody sees.

ShippedWhere people already look
Travel hubUpcoming trips at the top, where every booking starts
NotificationsThe hub, and push alerts at every booking stage

Upcoming trips live where people already look for them.

People don't feel a booking is done when they pay. It stays open until they're on the plane. We designed the purchase, but they were living in the wait.

There's more behind this one

Some screens and numbers are under NDA. I'm happy to walk you through the full project on a call.

Up next
Wizely GoldBoost screens: buy flow with GoldBoost, how it works, and lease success
Wizely·WealthTech & Digital Gold

Turning 68% of Gold Portfolio Value Into Gold Lease with a Frictionless Buy Flow

Sole designer on GoldBoost, integrating an upfront leasing mechanism into the gold purchase journey — earning users 4% extra yield annually without locking capital or hurting conversions.

68% of portfolio value in GoldBoostRead case study →