Brand and art direction for food, culture and music clients - identity, space, packaging and social.
Built the Instagram community from 0 to 58K followers. Led content design, cultural curation, collaborations and visual storytelling around Indian matchbox art.
Designed cross-border financial experiences, translating complex banking and credit journeys into clear user flows, prototypes and polished interfaces.
Built the festival ticketing website and led UI/UX. Directed Bloom TV, a behind-the-scenes series documenting the making of the festival.
Designed learning flows for an edtech platform built around bite-sized learning, spaced repetition and active recall.
Bachelor of Computer Application
Zolve is a cross-border neobank. It gives international students and professionals moving to the US a bank account and a credit card before they land - underwritten on their home-country credit file, with no SSN and no US credit history required.
Moving free-tier cardholders onto a paid premium card.
No boosted cashback at Zolve Select brands. Every month on Classic left money on the table.
Boosted cashback on 3 chosen brands, Mastercard cover, dollar-worth credit. The tier this project targeted.
5 chosen brands, higher cover, higher credit.
End-to-end product design on the upgrade journey: research, cohort definition with risk, every screen and the edge states.
Discovery surfaces, value proposition, savings calculator, commit flow, re-issue states, post-upgrade recovery.
Product, Engineering, Ops, Risk & Credit, Legal and Compliance.
Mixpanel funnels per entry point, read over a four-week cycle after launch.
Roughly a third of the base was already checking for an upgrade - and more than 90% of them dropped off at the very next step. The intent existed. The product wasn't converting it.
To match the industry average at 4%, and beat it at 9-10%.
Every user who wanted the upgrade was stopped by one of three things. The biggest was never about price.
To move someone to a better card, Zolve has to re-issue it. The old card stops working the instant you upgrade, and the replacement takes 7-10 days. We were asking people to give up a card that works today for one they can't hold yet.
Answer every doubt about the old card before the user thinks to ask it.
Put the offer on the surfaces they already open, and cap how often it asks.
Show each user what their own spend would have earned on a paid tier.
Defined the cohort first, with risk and credit - active users with real spend history, no delinquency, no fraud flags. The check runs before anything is shown, so nobody is pitched an upgrade they'd be declined for.
Then the whole journey was structured in low fidelity first - entry points, pitch, commit, re-issue, recovery.

Eligibility shouldn't be something you go hunting for. The primary surface sits on the home screen, which every user opens first.
The profile menu carries the same offer for people who go looking deliberately.
The rewards section shows what the free card cost the user last month. The post-payment nudge fires at the one moment the user is already thinking about money.
Both are capped at three views, with a remind-me-later that resurfaces twice before going quiet for good.
The pitch leads with concrete value - boosted cashback at the user's own top brands, Mastercard cover, credit worth real dollars - with FAQs inline to pre-empt the "what happens to my old card?" hesitation.
The same page serves both premium tiers, and reshapes for users who also qualify for a credit-limit increase by leading with the new limit instead.



They read a user their own spend, then what that spend would have earned on a paid tier. Those calls converted, so I turned the script into a screen.
How to pay, and agreeing to the terms. Annual is framed as the value choice - $99 a year against $9.99 a month on Signature - while monthly stays the low-commitment default so nobody is pushed.
The terms screen shows the user's own name embossed on the new card with their own name on it, so they can see what they are agreeing to before they confirm.
The old card has just stopped working. Instead of a spinner, the processing screen animates the classic card physically transforming into the premium one, so the wait shows the thing being done rather than a spinner.
A virtual card is live immediately, so there is never a moment with no usable card. Delayed and failure states were designed alongside the happy path.
Worked through with engineering, ops and legal, against Mastercard's re-issuance rules. The card re-issues on the same credit line so the score is untouched, pending bills carry to the next statement, and auto-pay moves across.
Inside the 4-9% target, and above the 4% industry average - from a starting point of under 1%.
Six entry points diluted the effort. Home and profile did nearly all the work. I'd ship two surfaces and instrument them hard before adding more.
Agents led with a personalised number and it converted. In-app I put it behind an optional tap, and most users never opened it. It belonged inside the pitch.
Turning one big credit card purchase into a plan you control.
A single large purchase can wreck a student's month. FlexiPay splits it into fixed monthly instalments for a flat fee, payable in cash or in rewards already earned.
The user wants the plan to feel free and flexible: no interest, pay with points, get out whenever.
Risk, Finance and Legal need each of those promises true only inside tight bounds. The design job was making the friendly version never become a lie.
Every purchase over $100 is checked against a risk rule engine before it is ever shown as convertible - utilisation, delinquency history, how often the account transacts, and the mix of merchants it spends at. Customers are tiered by how reliably they clear their balance.
This is the part of the flow the user never sees. It is the reason nobody is offered a plan and then refused one.
Four surfaces, each tied to a moment the user is already thinking about the purchase.
Drag the slider to change tenure and the monthly number updates live. Tick a box to pay the fee from rewards instead of cash. Nothing hides behind a second screen until the user asks for it.
The first version buried the numbers people actually compare behind a "Show More." Someone weighing 3 months against 6 had to expand a drawer to see the trade-off - exactly the moment you don't want friction.
The second pass split the same information into two tabs and promoted three fields that had been hidden: the tenure, the exact instalment amount, and the first due date.
I reused the existing bill-pay screen so one keypad handles two intents: a partial prepayment that spreads across the remaining instalments, or a full foreclosure that clears and closes the plan. That keeps exits inside the payment and autopay logic that already exists.
There's no usage data to claim. What the work produced is a flow that holds up against what Risk, Finance and Legal each need from it.