Skip to content
MAM

E-commerce & web experience redesign

UX/UI2022–23UX/UI DesignerLive in production

NeoLife

Four customer tiers. Four pricing structures. One storefront that had to look simple.

Role-based feature architecture and recurring-purchase optimization for a global health-and-wellness storefront serving four customer tiers.

Live product

Tools · Figma · Photoshop

The live NeoLife storefront — beta.neolife.com
The live NeoLife storefront — beta.neolife.com

01

What this was

NeoLife runs a global health-and-wellness storefront on a legacy commerce platform. I spent close to a year on the team as the UX/UI designer for the web experience, focused on the buying journey — product listing, product detail, recurring purchase, and the account features that sit behind them.

Role
UX/UI Designer
Platform
Web · desktop & mobile responsive
Status
Live in production
Focus
Role-based features · recurring purchase

A note on this work

This was done during my tenure at NeoLife, and I don’t own the output — so there are no Figma files to walk through. Everything shown here is a live production implementation you can open at beta.neolife.com. This case study documents the reasoning and the constraints, using the shipped result as the record.

02

The core challenge: hiding system complexity

The front end looks like a straightforward supplement store. Underneath, the platform serves four distinct customer types, and almost every commerce surface has to render differently depending on which one is looking at it.

A Guest sees retail pricing and can browse and check out. A Retail Customer adds an order history and favorites. A Member unlocks 10–20% pricing and recurring shipments through NeoShip, plus a points balance. A Promoter is running a business on top of the storefront — 25% pricing, case (bulk) pricing, commissions, and a downline. Same product card, four different truths about price, savings, and what the buttons do.

CustomerPricing shownAccount layer
GuestRetailBrowse · cart · checkout
Retail CustomerRetail+ order history · favorites
MemberMember (10–20% off) · NeoShip+ points balance · recurring shipments
PromoterPromoter (25% off) · case pricing+ commissions · downline · bulk ordering
Every pricing block, savings callout and CTA on the storefront resolves against this

The design job wasn’t a redesign — it was fitting new capability into that grid without the interface getting louder for the people who didn’t need it.

Feature 1

A favorites system that scales across roles

High-frequency buyers and business partners re-order the same products constantly. The old flow gave them no way to hold a shortlist, so every re-order started from search.

Favorites had to be reachable from wherever the decision happens, without adding a screen. Two placements, one behavior: a heart on every product card in the listing, and a Favorite link on the detail page directly under the primary CTA — close enough to the buying decision to be useful, quiet enough to ignore. The list itself is account-scoped, so it follows a Member or Promoter across sessions and devices.

NeoLife product listing page with a heart icon in the top-right of every product card
Product card — the heart sits top-right, identical on every card in the catalog
NeoLife product detail page with a Favorite link directly beneath the Add to Cart button
Detail page — Favorite is a link right under Add to Cart, not a competing button

Feature 2

Buy by the case — bulk ordering as a role-aware component

Promoters and business-builders buy inventory, not units. Making that a first-class action on the listing page — rather than something you assemble by adding six of a thing to the cart — directly targets average order value.

The catch is that “buy the case” means something different per role, so it’s not one button. For a Guest or Retail Customer it’s a green savings pillCase of 6, Save $99 — a straightforward upsell. For a Member or Promoter it’s a checkbox carrying that role’s case price inline, because they’re deciding on margin, not on a discount. Selecting it swaps the card into an active state: the title becomes Case of 6 and the price updates. Same component, three renderings.

  • NeoLife product card with a green Case of 6 Save pill

    Retail — a green savings pill

  • NeoLife product card with a Case of 6 checkbox showing the member case price

    Member — a checkbox with the member case price

  • NeoLife product card with a Case of 6 checkbox showing the promoter case price

    Promoter — the checkbox carries the promoter case price

  • NeoLife product card in the active case state: title reads Case of 6 and the price has updated

    Selected — the card commits to the case: title and price update

NeoLife product detail page with a green Case of 6 Save button positioned above Add to Cart
Detail page — the case CTA sits above Add to Cart, so the bulk option is a choice, not a hidden setting

Feature callout

Both features, one card, one tap

Because both features live inside the product card, a buyer can add a bulk case to the cart or save an item for later without ever opening the detail page. For someone rebuilding a monthly order across nine products, that’s the difference between a two-minute task and a ten-minute one.

NeoLife product card showing both the favorite heart and the case selection control together
One card doing both jobs — favorite and case selection, no navigation

Reflection

What I took from it

  • Designing the state matrix, not the screen. The case control shipped as a pill, a checkbox, an active state and a detail-page button — one feature rendered four ways by role. Most of the work was the matrix of what each role sees and what each interaction returns, not the layout.
  • Legacy constraints are the brief. The platform was years of accumulated decisions. New features had to slot into the existing card and detail-page structure without a redesign, which is what set the bar for “good” — additive, quiet, consistent.
  • Align with engineering before high fidelity. Role-based pricing and points logic lived server-side. The design only held up if it matched what the system could actually return per role, so speccing that with engineering early saved rebuilds later.
  • You don’t always keep the files. I can point at the live site, not a source file. Writing decisions down as they ship — the reasoning, the constraints, the trade-offs — is the version of the work that stays with you.