Card offer inventory management

An internal SaaS tool for managing hundreds of credit card offers. Each offer goes from setup to copy, legal and approval, then goes live automatically in the card offer flow without a developer touching it.

Card offer inventory management

An internal SaaS tool for managing hundreds of credit card offers. Each offer goes from setup to copy, legal and approval, then goes live automatically in the card offer flow without a developer touching it.
The public view. Anyone can filter the inventory by dates and status and open an offer to read its setup, its English and French copy and its legal footnotes.
Role
Product designer & content designer
company
RBC Royal Bank of Canada
duration
3 months
setting
Internal SaaS, inventory management
why we built it

Offers that plug straight into the card offer flow

Card offers are one of the top three reasons people choose a credit card, yet RBC’s offers ran on a site built and managed by a third-party agency. Every change, even expiring an offer, needed a manual request to the agency.

There was no shared structure for offer content. Legal and footnotes were formatted differently from offer to offer, so developers had to fix how they displayed for every offer flow on every channel. Those fixes didn’t always work. Formatting broke and footnotes conflicted, and with so many offers in rotation, most errors went unnoticed. Business uploaded copy as written, so some offers were long or had grammar mistakes.

As a result, new offers were slow to reach the market, expired offers stayed live too long, and the number of offers RBC could run at once was limited.

No agency or manual builds

Offers are structured data, so no one waits on an agency or builds each one by hand.

Live in rotation

Approved offers go live on their start date, rotate with other offers and expire on their own. More offers in market means more chances to win card sales.

Targeted offers

Every offer is tied to a card, an activity and a client segment, so it reaches the right group, such as newcomers, students or clients in their first 60 days.
1 · Offer inventory
Business sets it up, a content designer writes it, Product approves it.
→
2 · Structured offer data
card codeASC codeactivitysegmentstartexpirycopy EN/FRlegal
→
3 · Card offer flow
Combines the offer with the card's features and card art, which already exist.
→
4 · Live in rotation
BA123BA235BA241BA256
Starts and expires on its dates, alongside other offers.

More offers in market

Without manual builds, many more offers can rotate at the same time. That means more chances to reach new applicants and win more card sales.

Targeted by design

Activity and segment fields let each offer reach the right group, such as newcomers, students or clients in their first 60 days.

Fewer launch mistakes

Dates drive go-live and expiry, so offers stop missing their start or running past their end date.

Where these offers appear?

Pre-approved card offer, that has over 150 rotating offers when live
problem

An agency-run site with no guardrails

The first screen was a read-only list of offers, built and updated by a third-party agency. It showed only the card name, card code, ASC code and status. Opening an offer revealed its copy, dates and one long block of legal per language. As the catalogue grew, the gaps showed.

agency in the loop

Every change, even expiring an offer, was a request to a third-party agency.

free-text legal

One block of text per language, with no consistency in clauses or footnote markers, so developers reformatted it for every offer flow and channel.

unreviewed copy

Business uploaded offers as written, so some were long or had grammar mistakes.

hard to search, no workflow

Only an ASC code dropdown and a search box, no dates in the list, and only Active or Expired.
The first screen, built by the agency, redrawn as a sketch with the issues called out.

Bank held the largest share of the Canadian credit card market at 20.3% for 2025

The Credit Cards team ran ongoing research with students, newcomers, current clients, new clients and the general public to learn how people choose a credit card. We also interviewed advisors about the features prospective cardholders most often look for, and drew on third-party research from iSky. Across about 3,000 people, the card offer was consistently one of the top three reasons for choosing a card.
mapping the process

Flows first, screens second

Card offers are regulated. Legal wording, dates and approvals all have to be right before an offer reaches clients. Before designing any screens, I mapped the whole life of an offer: every task, who owns it, and where the system can take over. The map showed which steps need a person and which ones the tool can do on its own.
Role
Set up
Write
Check
Go live
Rotate and end
Business
Set up the card, ASC code, activity, segment and dates
Add a short brief
Content designer
Pick up the offer from the Needs copy queue
Write the English and French copy
Turn on clauses and add this card's wording
↺ Fix it if Product sends it back
Legal (guest, no login)
Review offers as a guest
Send approved wording by email
Product
Run the go-live checklist
Approve, adjust dates or send back
System
Go live on the start date in the card offer flow, with card features and card art
Rotate with other offers
Expire on the end date
Task done by a person
Outside the tool
Loop back
Done by the system

Remove steps

Going live, rotation and expiry moved from developers to the system. No one builds or ends an offer by hand.

One owner per task

Each task has a single owner. Only content designers write copy, and Business sees it read-only.

Make the rules visible

Legal became a fixed set of clauses, and approval became a checklist that shows who owns each item.
exploration

Sketching the options before choosing a direction

With the flows mapped, I sketched low-fidelity options for the offer list, the offer details, filtering and legal.
A table with a filter side panel, which was the direction taken. It's the fastest way to compare dates and statuses across hundreds of offers.
An offer’s legal is merged with the legal for the card features. Fixed clause names and symbols keep every offer consistent, so nothing conflicts when they’re combined.

table over cards

A card grid looked friendly but fit only six offers on screen and made dates hard to compare.

open in place

Opening offers inside the list, instead of a side drawer, keeps people's place and lets them compare several at once.

filters with apply

People usually combine a date range with a couple of statuses, so they set filters first and apply them once.

fixed clause set

Clause names and symbols stay the same in every offer, which ended the drift in legal.
solution 1

HMW make a large inventory easy to search?

A dense, sortable table that anyone can browse
The catalogue works like any inventory tool. You can browse without signing in, combine dates and several statuses, and apply them together. Each offer opens in place, so you can compare two or three side by side.
Offers open and close in the list, and more than one can be open at a time.
solution 2

How might we move each offer through a clear workflow?

One owner for each stage
business

Sets up the offer

Adds the card, ASC code, activity, segment and dates, plus a short brief. The copy stays read-only for Business.
content designer

Writes copy and legal

Picks the offer up from a shared queue, writes the English and French copy and turns on the legal clauses it needs.
product

Checks it and approves

Runs a go-live checklist and can adjust dates. Product approves the offer or sends it back with a note.
Legal and anyone else view offers as guests, with no account. Legal sends approved wording to content designers by email.
Products go-live check: one checklist that shows who owns each part, before the offer goes into rotation.
solution 3

How might we give legal a consistent structure?

Fixed clauses, wording written for each card
Each clause has a name and symbol that never change. The wording inside it is specific to the card, such as the number of welcome points, the card name and the offer dates.
†
Welcome bonus
optional
§
Annual fee waiver
optional
Good standing
always on
‡
Offer period
always on
Footnotes are listed in the order their symbols appear in the copy.
The clause library: a fixed set of clauses. A new clause gets the next free symbol and shows up in every offer, turned off.
The content designer updates what a clause covers. The clause name and symbol stay fixed.
solution 4

How might we control who can change what?

Work email sign-in, roles managed by Product
Everyone who makes changes signs in with their work email. Product manages the team: invite people, change roles or remove someone.
This shows the sign-in experience for users along with assigned roles
solution 5

How might we keep a trail?

Helps with transparency and confidence
Card offers are regulated. It keeps a record of exactly what each offer said and when, so the bank can answer client disputes. It shows Product what changed before they approve edits to a live offer. It records who changed what across Business, content designers and Product, and it gives you a good version to go back to if an edit goes wrong. The Activity log covers the whole inventory, while each offer’s history tells that one offer’s story.
Product sees only what changed against the live version, plus the go-live checklist. Approving updates the live offer; Send back works as in the main flow.
roles

Who can do what

Role
Signs in
Can do
Guest (incl. Legal)
No
Browse, filter and read every offer
Business
Yes
Set up offers and write the brief; copy is read-only
Content designer
Yes
Write English and French copy, turn on clauses and add per-card wording, manage the clause library
Product
Yes
Run the go-live check, adjust dates, approve or send back, manage the team
Every change is traceable. Each offer has its own History panel, and an Activity log covers the whole inventory.
outcome

An inventory that runs itself

Offers move through one workflow with clear owners and a consistent legal structure. Approved offers flow straight into the card offer experience next to the card's features and card art, and rotate live without manual developer work. More targeted offers can be in market at once, which gives the Cards team more chances to win new cardholders.

Errors down 87%

Human error still exists however there are less missed deployments or expiries

27% increase in conversion

In first three months for clients who received another offer 6 months prior.

90%+ improvement in cycle time

A request made to deployment on average took up to two weeks. Now business request to deployment happens in one day. Allowing teams to have a more proactive approach
~$100K
saved every year
Partnered with Product to lead the redesign of a credit card offer management system, bringing it in-house from a third-party vendor and automating integrations, saving ~$100K annually. It also reduced errors and kept legal content consistent across offers.

Consistent structure

Every clause keeps the same name and symbol, with details specific to each card.

Clear ownership

Business, content design and Product each have their own step.

Faster lookups

Filter a large inventory by dates and several statuses at once.

No manual builds

Offers go live, rotate and expire on their dates, with no developer work.

Full audit trail

History on every offer and an activity log for the whole inventory.

Design flexibility

Originally had to design specifically to hold very long content for offers. Now with design control, content follows content stuctures and can be included effectively for visual design