ananga thapaliya
i design interfaces and vibecode them into existing before anyone can overthink it.
recent work
contact
linkedin
{{ emailLabel }}
× close
prev
next
{{ openProjectDesc }}
{{ openStatus }}
{{ openProjectTitle }}
role
{{ openRole }}
team
{{ openTeam }}
timeline
{{ openTimeline }}
description
{{ openDescription }}
focus
{{ openFocus }} {{ openFocusExtra }}
impact
{{ openImpact }}
problem
a post-booking page should feel like reassurance — your flight's confirmed, here's what's next. ours felt like four different departments shouting over each other on the same screen.
prime, ancillaries, customer support, and hotels all had legitimate reasons to want prime real estate. historically, "solving" that meant just adding more — until the page became noise. nobody had defined:
what actually deserves top billing vs. secondary placement
how much space each team's content is allowed to claim
how new products get added without breaking what's already there
that structural gap is what i was brought in to close.
what testing told us
we ran usability tests with 7 participants, plus 3 weeks of expi + fullstory data. three findings directly shaped my structural decisions:
support was invisible. all 7 participants got stuck looking for help — no chatbot, no clear path. → told me navigation needed a permanent, honest "help lives here" slot, not something teams could bury.
ancillaries felt orphaned. bag/seat info sat at the bottom of the page, disconnected from the flight it belonged to. → an information architecture problem, not a content one.
people wanted to browse hotels, not commit. users clicked "explore more" far more than the one curated deal we'd handpicked. → landed squarely on my plate, since hotels were mine.
solution
1. the outline & navigation
designed the underlying page hierarchy — what earns top billing (flight status, trip essentials) vs. secondary/contextual placement (upsells, prime, ancillaries). goal wasn't equal loudness for every product; it was a fair, defined slot for each one.
2. the template
built a flexible system other designers could design into:
defined content zones per section
consistent rules for space/prominence each team could claim
shared visual language so the page didn't feel stitched together from four separate projects
prime, ancillaries, and cx designers filled in their own sections — the template made sure their pieces didn't have to fight each other to exist.
3. hotels (fully owned)
redesigned the entry point around the "browse, don't push" insight — leading with exploration instead of a single hard-sell deal.
4. ai personalization layer
worked on the logic behind what gets surfaced (which hotel, which offer, which nudge) based on the actual booking — instead of a static set of products shown to everyone.
outcome
metric before target achieved
hotel (hsa) weekly traffic5k8.8k18,000+ (2x+ target)
contact rate (all devices)0.130.070.07 (-46%)
chatbot adoption10%50%50% (5x)
prime attachment rate~1%10%13% (exceeded target)
revenue margin per booking€0.43€0.46€0.48 (via ancillary sales)
the hotel redesign didn't happen in a vacuum — it worked because the navigation and template gave it a sane structure to sit inside. every other team's numbers moved too, which is really the point: get the structure right, and every product gets room to actually perform.
what's next
this was desktop — but the results made the case for themselves. with hotel traffic up 3.6x, prime attachment nearly 13x its baseline, and contact rate cut by nearly half, the next logical move is obvious: bring this same structural approach to mobile.
we're carrying forward everything this project taught us — the hierarchy logic, the shared template system, the "let people browse, don't force a decision" insight from hotels, and the ai personalization groundwork — into a mobile revamp, built on validated numbers instead of a hunch this time.
try it yourself on edreams (you need to purchase a flight though)
problem
this wasn't a single-page redesign — it's pillar 2 (pdp) and pillar 4 (plp) of a larger 5-pillar strategy (the others being product content, onsite search, and an ai shopping assistant). plp and pdp were prioritized first because they were the most direct blockers to conversion.
on plp, three problems compounded:
filters were a mess — largely because underlying product data lived in a free-text field, so filter values were inconsistent and unreliable
product cards carried limited information, forcing users to click into a pdp just to disqualify a product they didn't want
broad categories (like "beds & accessories") had no visual subcategory navigation — users hit a wall of products with no way to narrow down by intent
on pdp, the core issue was scale and clarity:
some products have 1,000+ variants — a dropdown-based selector simply breaks at that volume
out-of-stock and not-in-stock variants weren't clearly differentiated, leaving users stuck on dead-end options
recommendations and alternatives were weak compared to competitors, who lean heavily on guided, recommendation-driven pdps
sizing and specs were unclear, and the information hierarchy on the page didn't help users get to a confident decision quickly
research & hypotheses
working alongside 2 dedicated researchers, we didn't just redesign on instinct — every pillar had a written hypothesis and success/failure criteria before design started. for plp and pdp specifically:
plp hypothesis: if we improve filters, add visual subcategory navigation, and enrich product cards, users will reach relevant products faster because they can narrow the assortment and compare products directly from the listing — without needing to click into a pdp just to rule something out.
pdp hypothesis: if we redesign variant navigation, availability states, and guided decision support, users will make more confident purchase decisions because they can quickly understand what's available, what fits their need, and what alternatives exist if their first choice is out of stock.
a key risk we flagged early and designed around: richer product cards might actually reduce plp→pdp clicks — but that's not necessarily bad. if users can disqualify products they don't want directly from the card, fewer (but higher-intent) clicks into pdp is a win, not a loss. this reframed how we'd read the metrics later, rather than optimizing for click-through in isolation.
solution
plp — filters & product cards
redesigned the filter ui to work around the messy underlying data — grouping and normalizing filter values so users see clean, consistent options regardless of backend inconsistencies
rebuilt product cards to carry more decision-relevant information upfront (so a user can disqualify or shortlist without a pdp visit) — color swatches, key specs, and social proof indicators
worked within the broader visual subcategory navigation concept being rolled out for categories like beds & accessories, where flat product dumps were the biggest complaint
pdp — buy box & information hierarchy
designed a chip-based, step-based variant selector to replace dropdowns — built specifically to handle the 1,000+ variant extreme case without collapsing into unusable ui
applied clear visual states for available / not-in-stock / out-of-stock, with wishlist as a fallback action on oos items instead of a dead end
restructured the page's information hierarchy so the buy box, specs, and decision-critical content surface earlier — aimed at reducing the "pdp → pdp" pattern the team was tracking, where confused users bounce between product pages instead of committing
built with ai — full prototype and handover
this is where the process itself became a differentiator: i used claude to build fully working prototypes, not static figma mockups — meaning stakeholders and developers could interact with real variant logic, filter states, and buy-box behavior before a single line of production code was written. i extended this into the developer handover itself, using ai to generate structured documentation and specs directly from the working prototype, cutting down the usual back-and-forth of translating a design file into implementation-ready detail.
metrics we're tracking
since the project is mid-flight (design complete, ab testing ahead), here's what defines success once testing begins:
area metric what it tells us
plpplp → pdp click-through ratewhether better cards/filters get users to the right products faster
plpfilter & sort interaction ratewhether the new filters actually get used, not just exist
plpplp exit rate (no product click)whether users are finding a path forward or giving up
pdppdp atc (add to cart) ratethe core conversion signal for the whole redesign
pdptime to atc (add to cart)whether the new hierarchy speeds up decision-making
pdpvariant selector interaction ratewhether the chip-based selector actually gets used over old habits
pdppdp → pdp navigation ratea proxy for confusion — are users bouncing between products instead of deciding?
pdpbelow-the-fold scroll depthwhether restructured hierarchy pulls users past the buy box into supporting content
businessrevenue, cr, aov, cart abandonmentthe executive-level scoreboard this all rolls up into
what's next
designs are locked and ab testing is in progress this quarter.
try it yourself on vidaxl
problem
users scrolling through the home page were hitting what the team called "carousel blindness" — rows of hotel cards that read as ads, not invitations. the data backed it up:
home page ctr: ~1.7%
home alone was pulling 2.6m+ weekly sessions — a huge amount of traffic just... scrolling past
the real miss wasn't a lack of traffic. it was discovery intent going unserved — people open to the idea of a hotel, with no specific destination yet, and nothing on the page was built to catch that.
my hypothesis: a user-initiated, "stories-style" circular entry point would outperform carousels by tapping into a ui pattern people already trust from social apps — reducing the friction of "scroll and evaluate" down to "tap and see."
research — benchmarking the "story" mental model
i ran a competitive teardown across five products to see how the pattern gets used well:
product what they do takeaway i borrowed
revolutstories introduce new verticals (stays, crypto) to users who came for one thing (banking)stories are great for cross-selling a different product to an existing user base
hoppercircular bubbles for price watches / flash dealscircular ui creates a "curiosity gap" — feels like you're missing something if you don't tap
airbnbcircular category icons ("castles," "arctic")sell the vibe with imagery before the destination name does any work
instagramtap-to-advance, full-screen, instantsets the performance bar — any lag kills the pattern entirely
spotify wrappeddata-driven personal storytellingfuture direction: personalize based on search history, not just generic destinations
this shaped a clear principle: the interaction had to feel free and low-commitment — closer to flipping through friends' stories than clicking into a sales funnel.
validating it — usability testing (maze)
since i was the only designer on this, i ran the full research loop myself — moderated concept testing in maze to pressure-test the interaction before it went anywhere near engineering:
confirmed the tap-to-advance / swipe-to-dismiss gestures felt intuitive without explanation (people already knew the pattern)
validated that a progress bar at the top of each story was necessary — without it, users didn't realize there were more destinations to see
surfaced the risk of the pattern reading as an "interstitial ad" if the transition felt heavy or forced — which directly shaped the performance requirements i wrote into the spec
solution
1. the entry point
a row of 4 destination circles on the home page, each showing a destination image + starting price. grey ring = seen, colored ring = new — borrowed directly from the instagram mental model so no onboarding was needed.
2. the story experience
tap a circle → story opens at the first hotel, expanding from the circle itself (not a generic modal)
tap right 68% of the screen = next hotel; left 32% = previous — matching how people already tap through stories elsewhere
auto-advances every 5 seconds; press-and-hold pauses it
swipe down to dismiss, with a rubber-band snap-back if the drag doesn't clear the threshold
3. the content logic
destination priority order: upcoming trip → flight search → accommodation search history → fallback deals — so the first thing shown is always the most relevant one, not a generic list
no pricing shown on cards deliberately — kept the focus on discount %, ratings, and social proof ("x people viewing") rather than turning it into a price-comparison tool
always exactly 4 circles, with over-fetching logic to gracefully backfill if a destination has no valid recommendations
4. the guardrails i wrote into the spec
because this pattern can easily tip into feeling like an ad if done wrong, i defined explicit safety metrics upfront:
pop-up transition had to trigger within 150–200ms
if load time exceeded 400ms, the experiment would auto-pause
dismiss/skip rate was tracked as an early warning sign of irrelevant or annoying content
outcome
metric estimated achieved
weekly visits to hotel funnel (this touchpoint)~4,50010,000+ (2.2x estimate)
the gap between projection and reality is the clearest signal that "discovery intent" was real, not a theory — people weren't just tolerating the stories format, they were actively engaging with it well beyond what static carousels ever pulled.
download edreams app on app store or play store
problem
kompyte didn't have a product design team when the first version of this release shipped — it was built by an external consultancy, under time pressure, with no usability testing along the way. engineering had to move fast, and ux was the trade-off.
by the time i joined and ran research interviews with the primary users (sales and marketing managers), the pain points were clear:
users were frustrated by duplicated insights cluttering the collect feed
filters existed, but nobody understood how they worked
search was available but effectively unused — too hard to trust
the consumer portal buried the information people actually needed under a lot of wasted space
this reframed into three concrete design questions:
how might we communicate required information in consumer cards?
how might we empower users to use filters and search efficiently?
how might we inform users of different states of the insights?
process — fast iteration, constant testing
as the only designer, i moved quickly between paper and digital prototypes, testing with users and getting feedback from internal sales executives and a mentor along the way. some iterations led to small polish fixes; others reshaped the direction entirely.
before locking a direction, i identified the specific features the design needed to support:
smart trait updates
seen/unseen status
rolling dates
folders & reorder options
grouped cross-channel insights (to cut down curation time)
richer information on consumer cards
solution
collect feed redesign — restructured around clarity of system status (seen/unseen, breadcrumbs) so users always know where they are
simplified filtering — reworked filters and menu structure so insights could be grouped into folders and categories that actually matched how users thought about them
consumer portal redesign — surfaced key information at a glance instead of requiring users to dig for it
i also used this project to build the foundation kompyte didn't have yet:
a design process — giving the team (and other departments) visibility into upcoming sprint work
a design kit — for visual consistency across the platform
a design system — so engineering and product understood why certain components were chosen, not just how to implement them
validating it
i ran usability testing sessions against a written script of scenarios, directly targeting the pain points identified at the start — then observed how people actually navigated the new prototype before it went to engineering.
outcome
metric before after
task completion time19 min6 min (-68%)
user satisfaction1.8/54.3/5 (+139%)
post-launch, service desk complaints dropped noticeably, and feedback centered on how much time the simplified insight configuration saved users.
working with engineering
i built high-fidelity mockups in figma for direct engineering handoff, working closely with the front-end team to spec out interactions the mockups didn't fully cover — and reviewed every front-end ticket against the designs before it shipped, rather than treating handoff as the finish line.
what's next
plan for an mvp strategically — it keeps scope-creep from derailing a project and gets a quality product out on time
testing doesn't stop at launch — design is ongoing iteration, not a one-time validation step
bring engineering in early — understanding technical constraints upfront shapes better design decisions, not just easier implementation
the hardest part of this project wasn't any single screen — it was building a design system from scratch, solo, with no prior structure to build on. comparing that task to something like ios's or material design's system felt daunting at first, but getting it to a usable bar for the team was the real win here.
problem
this wasn't a blank-slate project — it was inheriting two years of research scattered across four different agencies (tribeone, ideo, madpow, langland), each with their own low-fidelity screens, their own validation methods, and no single coherent thread tying it together.
my first job wasn't designing screens. it was making sense of what existed.
turning fragmented research into a foundation
i structured the accumulated research into a single usable set of artifacts:
personas
a summary of research and key insights
customer journey map
assumptions, validations, and recommendations
identified research gaps
product strategy
feedback on existing low-fi screens (none of which were clickable yet)
from that, i defined the actual problem statement, goal statement, and value proposition — the groundwork the rest of the team would design against.
prototyping with real clinical input
working within huma's existing design system, i built the first prototype and ran feedback sessions with healthcare professionals across multiple countries — not just patients. getting clinical buy-in early mattered here in a way it doesn't in most consumer products; this app needed to work for nurses and clinicians managing the treatment relationship, not just the end patient.
before testing began, i defined exactly what we'd measure:
completion rate per prompt
time taken to complete each prompt
number of errors or difficulties encountered
satisfaction level per module
likelihood to recommend
system usability scale (sus) score
qualitative feedback
testing with patients
i tested the first high-fidelity prototype with 20 patients, running individual interviews at 90 minutes each — a serious time investment per participant, reflecting how much nuance this population's feedback required.
every piece of feedback went into a structured table tracking: observation, evidence, recommendation, type, module, rating, proposed design change, priority, rationale, and whether it became an actionable task. from there, i ran prioritization sessions with the design team based on impact vs. effort, and assigned resulting tasks by each designer's module specialization.
outcome
the app shipped on the app store and play store, having gone through 7 design iterations, each reviewed not just by design but by internal clinical, regulatory, and technical teams at huma.
reported outcomes:
increased patients' ability to successfully self-infuse at home
increased patient and caregiver confidence and competence managing treatment
reduced treatment attrition
improved patients' quality of life / reduced burden
maintained desirability for healthcare providers, not just patients
what made this different
this wasn't a typical "ship fast, iterate later" product cycle. certain modules (onboarding, profiles, caregivers, journal, medication) were treated as low-risk-of-change and could evolve — but other features were deliberately frozen based on the research-to-date in order to hit regulatory deadlines. balancing clinician needs, patient needs, and regulatory constraints simultaneously is what shaped most of the prioritization calls across those 7 iterations.