Case study · Product
Paper loyalty cards are a classic example of a system that works — until you lose it.
While digital loyalty apps exist, many small cafés still rely on paper punch cards — especially in neighborhoods where repeat customers are the lifeblood of the business.
Inspired by walking through San Francisco with a fan of half-punched cards in my wallet, I set out to explore whether Apple Wallet could replace them without asking anyone to download another app.
- My role
- Product Engineer
- What I did
Customer Discovery
PassKit Development
UX Design
Prototyping
- Timeline
- 3 weeks · Spring Break 2025



How might we move loyalty off paper without asking customers to download another app?
Problem
We aren't designing for the person holding the card.
Loyalty punch cards are handled by baristas, store owners, and customers — each with different needs, making it especially hard to know what to prioritize.
Store owners and baristas see punch cards every day. They know exactly where to stamp and how many punches until a free drink.
Customers, on the other hand, lose cards, forget them at home, and often have no idea how many punches they have left until they are already at the counter.



Competitive Landscape
Snackpass solves loyalty for owners.StreakIT tried to solve it for customers.
Several shops I visited in San Francisco already used Snackpass — an all-in-one POS and branded app that bundles loyalty, online ordering, and SMS marketing. It is built for the business: owners get customer data, repeat-order analytics, and automated campaigns. Customers download the Snackpass app to earn points, order ahead, and send rewards to friends.
StreakIT took the opposite bet. Instead of replacing a shop’s entire checkout stack, I wanted loyalty to live in Apple Wallet — already on the customer’s phone, with no new app to install.
How they compare
Customer onboarding
Snackpass
Download app, create account, find the shop
StreakIT
Scan QR at checkout → pass added to Wallet
Value for owners
Snackpass
POS, CRM, SMS marketing, and loyalty analytics in one platform
StreakIT
Digital punch card only — no customer database or campaigns
Switching cost
Snackpass
High — migrate POS, retrain staff, rebuild ordering flow
StreakIT
Lower for customers; still high for owners at the register
Multi-shop loyalty
Snackpass
Branded app per shop or Snackpass network
StreakIT
Each pass stacks independently in Apple Wallet
Snackpass proved that digital loyalty works when owners commit to the full platform. StreakIT asked whether the customer experience could be lighter — and learned the bottleneck was never the pass design.

Research
40+ conversations over coffee — and across language barriers.
To understand why paper punch cards persist and whether Wallet could replace them, I interviewed 40+ customers and small business owners across San Francisco — ranging from regulars who visit the same café daily to owners running checkout themselves.
Some conversations happened across language barriers and required Google Translate. Most happened over coffee.
Research Findings
Paper, still the default
Nearly every café I visited had some variation of a paper punch card — cheap to print, but impossible to track once a customer walks out the door.
Customers want zero friction
The single most important thing to customers was not downloading another app. Apple Wallet — already on their phone — was the only channel that felt effortless enough to actually use.
Businesses bear the switching cost
Store owners liked the idea in theory, but adoption meant learning a new system, training staff, and changing checkout behavior — a cost many were not ready to absorb.
Personas
Meet the two sides of the punch card
I was starting to see how differently owners and customers experience the same piece of cardboard. I created two personas to represent those perspectives — and revisited them throughout prototyping to make sure design decisions were making direct impact.
Regular Rita
Rita visits a different café most mornings and juggles loyalty cards from each one.
Pain point
She has lost punch cards mid-streak and never knows her count until a barista flips the card over.
Needs
She needs her punch count visible at a glance — without opening another app.
Owner Omar
Omar runs a single-location café and stamps cards himself at the register.
Pain point
He has no idea who his repeat customers are or whether his loyalty program is actually driving retention.
Needs
He needs a system that fits his existing checkout flow — not one that slows down the morning rush.
Restructuring the flow
Giving Rita her punch count back through design.
To help customers like Rita find what they need without friction, I narrowed the loyalty experience to only what matters at each step — and mapped what information is needed when.
I sketched a typical customer journey from walking into a café to earning a punch, based on the assumption that a barista could update the pass with a single scan at checkout.
Digitize existing punch cards
Businesses submit their logo, reward details, and number of punches. A digital Apple Wallet pass is automatically generated.
Generate a store QR code
Customers scan a QR code displayed at checkout. The loyalty card is added directly to Apple Wallet — no app download required.
Track progress digitally
Each purchase updates the customer’s Wallet pass, replacing paper punches with a digital experience.
Customer journey
- 1.Customer enters store
- 2.Scans business QR code
- 3.Loyalty card is added to Apple Wallet
- 4.Purchase is made
- 5.Wallet card updates with new punch count
Building the Demo
From PassKit files to a working punch card in Wallet.
To test feasibility, I built custom Apple Wallet passes (.pkpass), dynamic loyalty card designs, a QR-code onboarding flow, and a Wallet-based punch card experience.
One challenge was learning how Apple Wallet passes are structured and customizing pass assets to mimic traditional punch card layouts.
Version 1
Translating the punch card metaphor
Many users liked seeing familiar stamp grids in Wallet, but the layout felt cramped on smaller passes. I rebuilt the stamp assets as custom PassKit images to mimic a traditional punch card layout.

Version 2
Designing for the Wallet stack
Customers told me they wanted StreakIT passes to sit naturally alongside payment cards — not feel like a separate app experience. I refined the pass hierarchy so shop name, punch count, and reward status were scannable in the stack view.



Final Design
After multiple rounds of testing and conversations, I reached a Wallet-native punch card.



What I Learned
The problem was real.The switching cost was higher than I expected.
StreakIT confirmed that customers want Wallet-native loyalty — but it also showed me that a product can solve a real problem and still fail because adoption costs outweigh the value created.
Validation
What 40+ conversations revealed
I did not run timed usability tests — but the pattern across interviews was consistent enough to treat as a signal.
Interviews completed
40+
Customers and small business owners across San Francisco
Preferred channel
Apple Wallet
The only digital option customers described as frictionless
Biggest blocker
Workflow change
Owners cited staff training and checkout disruption — not the idea itself
Next Steps
Talking to more store owners
Being able to separate design goals from operational feasibility is essential. It would be valuable to shadow checkout flows and ensure alignment with how staff actually work during a rush.
Testing a lighter onboarding path
Many owners hesitated at anything that required changing their existing punch card design. A flow that digitizes what they already have — logo, punch count, reward — might lower the barrier to trying it.
Reflections and Learnings
Focusing on the why, not the what
By focusing on customer and owner needs first — not the PassKit implementation — I learned that validating a market is often more important than building the solution itself.
Fall in love with the problem
The biggest lesson was not technical. StreakIT helped me develop a stronger appreciation for customer discovery and the gap between what users say they want and what they will actually change behavior for.