Case study · Hopper
Hopper's shift to direct-listed inventory stalled on an engineer-ese MVP enterprise hotel groups wouldn't sign. As senior product designer, I rebuilt listing CRUD and reservations, blueprinted a roles-groups-permissions system, and shipped the interaction states the partner surface now runs on.
01 · Situation
02 · Task
Rebuild listing CRUD and reservations, design a role-group-permission model that scales, and leave behind documented interaction states the team reuses everywhere.
03 · Action
Enterprise RBAC is a solved problem. Proxy patterns from mature tools, tested against real hotel-group workflows in weekly prototype reviews.
| What we needed | Precedent I studied | What I kept |
|---|---|---|
| Role & permission model | AWS IAM, Google Workspace, Shopify Plus | Role belongs to Group, Role has Permissions. Plain-English descriptions, not permission strings. |
| Listing CRUD | Mews, Cloudbeds, Airbnb Host | Sectioned detail view with per-section Edit, not one giant form. |
| Data tables & filters | Linear, Stripe, Retool | Sortable columns with explicit cycle, status chips, strikethrough for cancelled. |
| Destructive confirmations | Stripe, Vercel | Plain-English summary modal before the action commits. |
| Partner onboarding | Shopify Plus, Figma Org admin | Admin-vs-end-user wizard entry points, same flow, different scope. |
Three atoms: Groups (brands, sub-brands, regions), Roles bundling permissions scoped to a group, Permissions as plain-English capabilities. Eight shipped in V1, extensible without touching the UI.
Group scope, then role name plus permission cards in plain English, with a confirmation modal that reads out what the role will do before committing.
Sectioned detail with per-section Edit, so a GM updates amenities without opening a form that scrolls three pages.
Inline filters, explicit sort state, status as color plus text, strikethrough on cancelled payouts.
Designed consumer mobile features for Hopper Homes and ran research across both consumer and partner products so the two sides stayed coherent.
Shared sort cycle and checkbox states across every table in the partner surface, documented so no one has to guess.
| Audience | What they need | How the surface serves them |
|---|---|---|
| Hopper admins | Scope roles and groups across any partner | Admin wizard with cross-group browse |
| Hotel partner group admin | Create roles for their own staff without IT help | End-user wizard pre-scoped to their group |
| Front desk, tax, finance | Do their job, see only what they should | Permission-scoped views on listings and reservations |
Permissions shipped before promotions, because hotel groups wouldn't adopt a tool where front desk could see payouts. Everything else slotted on top.
Shipped eight well-chosen permission types and left the UI extendable so adding a ninth is a config, not a redesign.
04 · Result
“Excellent at collaborating with engineers and delivering beautiful, thoughtful UX. She takes feedback well, delivers with high output, and leads with a hypothesis-driven approach.” Susan Ho · Hopper (now Head of New Travel Verticals, Capital One Travel)
Roles-groups-permissions model. Scales to any new permission the business invents without a redesign. Adding a ninth permission is a card, not a new UI.
Listing CRUD pattern. Sectioned detail with per-section Edit. Works for hotels today, extends to Hopper Homes and any future supply vertical.
Partner-surface interaction states. Column label and checkbox state matrices documented and shared across every table in the partner surface.
Plain-English confirmation pattern. Reused for any destructive admin action across the product.
The Hopper partner surface anchors on the Hopper coral mark on a near-black sidebar, with a cyan primary action across tables, forms, and modals.