Grace Lee · Selected product design workHong Kong · Updated June 2026
← Index
Case 01Swire Properties · four malls2020 – 2024

Four malls, one platform, each running it their own way.

A single CRM and membership platform for Swire’s four malls — Taikoo Place, Cityplaza, Pacific Place and Citygate. It replaced four ageing, mismatched systems and let each mall run its own members, tiers and campaigns. Redeeming a receipt went from a paper process that took days to something staff finish at the desk.

Swire CRM cover
Fig. 01 — Member screen, concierge desk buildLive across four malls · 2020 – 2024
ClientSwire Properties
RoleLead Product Designer · from month four
TeamDesign 1 · Eng 4–5 · BAs 4
Field partnersRedemption desks across all four malls
StatusLive · still in use after handover

§1 · Context

Swire Properties runs four major malls in Hong Kong. Each had its own membership setup — its own member list, its own receipt‑redemption desk, its own ladder of spending tiers. The same job, done four different ways, on systems no one could keep in sync.

§2 · Problem

Membership had never really worked well in a Swire mall. Redeeming a receipt, claiming a reward, checking your spending — each was its own hassle, and different in every mall. A previous vendor had built a system, and Swire wasn’t happy with it. So instead of patching it, we rebuilt the whole experience — one platform, run by each mall on its own.

§3 · Approach

The work fell into four phases.

Understand what the vendor left, define what a member record is, build the earn-and-reward loop with gifts and campaigns on top, then scale it across four mall brands — five steps in all, in that order.

Phase 1Understandsee what the previous vendor actually left
01
Go through the old system

With the business analysts who knew how each mall ran day to day, I walked the old portal screen by screen to work out what was really going wrong.

Phase 2Defineagree what a member record is before drawing a screen
02
Define the record

Before any screen, I worked out the member and receipt model with Swire's tech lead — what a record is, and the states it can hold. We agreed it in week three, and everything after held together because of it.

Phase 3Buildthe earn-and-reward loop first, then gifts and campaigns on top
03
Rebuild the core loop

Receipt → points → tier, rebuilt around what staff already do. I pushed back to keep this loop right before scope grew, because everything else depends on it.

04
Set up gifts and campaigns

A campaign tool that ties every promotion back to real spending, sent as email through one tool — styled to each mall's branding, set up once.

Phase 4Scaleone Vuetify library, themed across the four above tiers
05
One library, four tiers

The membership programme runs on four above tiers — blue, gold, platinum and black. I built the interface on Vuetify and themed it per tier, so buttons, forms and the receipt-upload flow stay consistent to run while each tier keeps its own identity — one set of components to maintain, not four.

From my notes
“Most of enterprise design is just the patience to keep editing the same thing.”
A note from late in the project

§4 · Process

I worked out the flows before drawing screens— scanning a receipt, redeeming a reward, same‑day spending, and the yearly renewal — then the parts behind them: building campaigns, and the emails each mall sends in its own branding.

How it fits togetherone shared record · everything connects to it
What members dothe journey, in order
01Receipt scanningscan · validate → points
02Reward redemptionat the desk · in the app
03Same-day spendingtier as a live state
04Year rewards · renewalresets each year
every step reads & writes the record ↓
The member recordone per member · each mall runs its own
TaikooCityplazaPacific PlaceCitygate
↑ every tool below is built on it
What staff managethe tools behind the record
DataReceipt data & historyupload → validate → ledger
RulesPoints & tier rulesspend → points → upgrade
GiftsGift cataloguestock · eligibility · validity
CampaignCampaign managerdates · gifts · audience
Fig. 02 — How it fits together · what members do, the shared record between, and the tools staff manage

Five steps, across four phases.

The map above is where it ended up; the steps below are how it got there — grouped into the four phases it actually moved through, in order.

How we workedone designer, a mixed team

I worked out the member-record model with Swire’s tech lead, then led the design from there — with the BAs, the product owner, and the engineering team.

Design · memodel, flows, system
Tech Lead · Swirefeasibility & the data model
Product Owner · Swirepriorities & sign-off
Business analysts ×4mall operations → requirements
CadenceTwo-week sprints · weekly design reviews · a demo to Swire each sprint
Phase 1 · Understandwhat the vendor left
01Go through the old systemwhat the vendor left

The business analysts knew how the four malls actually ran day to day. I went through the old portal with them, screen by screen, to work out what was really going wrong.

Worked withThe business analysts — they knew how each mall actually ran the floor, and walked the old portal with me.
Reimbursement portal · legacy build · Cityplaza
Audit
ReceiptMember · tierAmountStatus
#48207L. Chan · Gold$1,280Pending
#48198M. Wong · Silver$640Submitted
#48172S. Lau · Diamond$3,150Endorsed
#48150K. Ho · Member$420Expired
#48133J. Ng · Gold$980Voided
Audit notes
01One “status” meant different things in each mall’s copy of the portal.
02Endorsement lived in email — no trail on the record itself.
03Expiry only surfaced after the receipt had already lapsed.
Fig. 03 — The old redemption portal · gone through and marked up
Phase 2 · Definewhat a record is
02Define the recordstates & status logic

Before drawing any screen, I worked out the member and receipt model with Swire’s tech lead — what a record is, and the states it can be in. We agreed it in week three, and everything after that held together because of it.

Phase 3 · Buildthe loop, then gifts & campaigns
03Rebuild the core loopreceipt → points → tier

This is where I pushed back with the product owner. The scope kept growing, but the receipt loop had to be right first — everything else depends on it.

04Set up gifts & campaignsscheduled · branded per mall

The campaign tool came out of what the BAs heard from each mall’s marketing team. I demoed it to Swire every sprint and adjusted it on the spot.

Phase 4 · Scaleone Vuetify library, four tiers
05One library, four tiersVuetify · themed ×4

The membership programme runs on four above tiers — blue, gold, platinum and black. I built the interface on Vuetify — buttons, forms, the receipt-upload flow, the lot — and themed it per tier, so it stays consistent to operate while each tier keeps its own identity.

§5 · What shipped

Three screens tell the whole story: one member record, the redemption desk rebuilt around what staff already do — scan, validate, redeem — and the tier shown as a live, visible state.

Member overview
Fig. 09 — Member overview · one record per member, readable at any desk
Receipt redemption
Fig. 10Redemption · scan, validate, redeem, same day
Tier as live state
Fig. 11Tier as a live state · staff stop guessing

§6 · Reflection

The CRM I designed in 2020 isn’t the one running today — it’s changed a lot through small fixes since I handed it over. The member‑record model we agreed on early is why all those changes held together. The version running now is easier to use than the one we launched— and that’s the point.

© 2026 Grace Lee · Hong Kong