Trusted by 1.4k+ founders & product teams

Add the emotional layer,
make your features land

Each card is an emotional building block. Use them to make users instantly understand, adopt, and come back to your app.

Buy the deck

Buy once, lifetime updates

Secure payment

“Scaled our start up to $100K MRR in months”Pontus Wellgraf, Co-founder, Roots

“Impressive detail and instantly usable”Rico Beran, Founder, Northhold Capital

“Shipping faster and getting many more users”Gary Perelberg, Co-Founder, WatchTrack

The Experience Refinement stack · 46 cards

Experience Refinement: every dead moment is a designed moment

Refinement is the discipline of designing the moments nobody puts in the pitch deck.

Empty states. Loading screens. Errors. The end of a flow. The gaps between features where products quietly leak people.

A blank screen is either a dead end or an open door, and which one it becomes is a choice someone either made or skipped.

Where do polished apps still leak users?

In the in-between moments.

The search with no results that says only no results found. The error that apologises without helping. The spinner with no voice. The finished task that just... stops.

Each is a moment the user is asking what now, and the app is silent.

These surfaces rarely appear in roadmaps because no feature lives there. That is exactly why refining them is such an unfair advantage: your competitors skipped them too.

Common experience refinement problems, fixed

The same failures come up again and again when founders describe broken experience refinement. Each one below has its own guide: how to spot it in your funnel, why it happens, and the fix.

How do you design a good empty state?

Treat it as the start of something instead of the absence of everything.

A first-use empty state is onboarding: show what belongs here and the one tap that begins it. A no-results state is navigation: offer the nearest useful alternative. A cleared state can even be celebration: inbox zero earned a moment.

The common failure is treating all three as the same grey placeholder. They are different moments with different jobs.

What should a loading screen say?

Something, almost always.

Dead air reads differently at different lengths: past a beat, users need proof of life; past a few seconds, they need progress; past that, they need honesty about waiting.

The voice matters as much as the mechanics. A wait narrated in your product's voice becomes brand time. The same wait in silence becomes doubt. One line of copy is often the whole fix.

How should apps handle errors?

Say what happened, what it means, and what to do next, in that order and in human words.

Something went wrong fails all three. Your changes are saved offline and will sync when you reconnect passes them in one sentence.

Blame is the detail to watch: the error is the app's problem to explain, never the user's fault to feel. Tone in the worst moments is remembered longest.

The building blocks inside the Experience Refinement stack

These are 5 of the stack’s building blocks (46 cards in total). Each building block comes as five cards: the tactic itself, covering why it works psychologically, when to use it and what to avoid, a Make It Yours prompt card, and three real app examples.

  • Empty States —​ Nothing-to-show becomes the door into something.
  • Loading Feedback —​ Every wait gets proof of life and a voice.
  • Micro Interactions —​ Small confirmations that the app heard you.
  • Pattern Alignment —​ Familiar behaviour everywhere attention is low.
  • Perceived Effort Delay —​ A considered pause where instant would feel cheap.

There is no universal answer. Make it yours

None of the above is a rulebook, and the playbook does not pretend to be one.

Every building block ships with Make It Yours prompts: guided questions that shape the tactic around your product, your users, and your stage.

Work through them yourself, or hand them to your AI agent as context. The thinking should happen about your app, not the average app.

  • Open your app as a brand-new user with no data: what does every screen say to you?
  • List your three most common error messages: do they explain cause, effect, and next action?
  • Which wait in your product is longest, and whose voice fills it right now?

How the best apps do it

Duolingo: Even error and empty moments stay in character. The owl's voice never drops, so the product feels continuous.

Pinterest: An empty board is an invitation with ideas attached, not a void with a plus button.

Uber: The wait for a driver is narrated minute by minute on a map. The same wait in silence would feel broken.

Usually works

  • Write every empty state as a next step
  • Give waits proof of life within a beat
  • Explain errors in cause, effect, action order
  • Keep the product's voice alive in its worst moments

Usually backfires

  • Ship no items found as a design
  • Leave spinners unlabelled past a beat
  • Apologise in errors without helping
  • Let flows end without pointing anywhere

Questions founders ask

Why do empty states matter so much?

Because they concentrate at the exact moments of highest doubt: first use, failed search, fresh start.

A new user seeing an empty screen is deciding whether this app has anything for them. The state answers, one way or the other.

What is perceived performance?

How fast the app feels, which is related to but not identical with how fast it is.

Narrated waits feel shorter than silent ones. Instant results can even feel too cheap where users expect consideration, which is what the Perceived Effort Delay card is about.

Where should refinement effort go first?

Wherever real users actually hit the dead moments.

Session recordings and error logs beat intuition here. Refine the empty state a thousand people see before the one a dozen do, and let your own traffic set the order.

Ask a question
Not sure where to start?Find your stack →