Good design. Wrong order.

I rebuilt Dynery's onboarding twice — and the second time, I overturned my own 2025 design. The first rebuild was cleaner, faster, and better-looking than the MVP, and users walked through it without friction. They still didn't build the one thing the product needed. The fix wasn't better craft. It was sequence.

Role
Lead Product Designerend to end
Team
PM · iOS · BackendTrofimo / Dynery
Timeline
v1 shipped 2025rebuilt Q1–Q2 2026
Scope
Research → delivery QAflow, IA, visual, system
*
Activation vs launch
~2×
7-day lift after rollout
122→64s
Median profile setup
2
Rebuilds, one overturned

* team-measured · backend · cumulative    † PostHog · production · 2026

The 2025 onboarding redesign: dining preference screens across three phones
Fig. 01 · The 2025 rebuild — still in productionThe exhibit, not the trophy
01 / Context

Activation meant a profile, not a signup.

Dynery's curation runs on a dining profile — the recommendations only work once one exists. Users who set up stay; users who don't churn early. So the metric that mattered was profile completion, and one constraint shaped everything: we were brand new.

Account createdActivated

A signup the product can't personalize is an empty seat, not a user.

Dining profile=Curation works

Profile → curation → return visits. Everything downstream starts here.

The MVP onboarding flow
Fig. 02 · The MVP — 12 mandatory screens

We were brand new. Nobody had a reason to believe us yet.

The constraint behind every decision on this page
02 / Design decisions

One question drove the 2025 rebuild.

"What is the absolute minimum a user needs in order to understand this product and start using it?"

The 2025 design question — hold onto it, it comes back
Decision 01

Split one flow into three modules

The minimum needed to start is an account. Everything else is something the product wants. Sign-up became the only gate; quick actions and the profile wait until they're wanted.

Trade-off accepted

Gave up guaranteed profile data at signup — a patchier day-one picture in exchange for users who actually reach the app.

Decision 02 · overturned in 2026, §04

Defer the profile — keep the prompt quiet

Mature social apps treat setup as ambient: a nudge you can ignore, never a wall. I borrowed the restraint.

Trade-off I didn't see

Quiet works where trust exists. I didn't price in that we had none. This is the decision the rest of the case examines.

Decision 03

Ask for permissions in context, never in a batch

Each request now arrives when the feature needs it, naming what it buys the user — not as a stack of pop-ups at the end.

Trade-off accepted

The efficiency of asking once. Some permissions arrive late or never — a lower ceiling, but consented.

Early off-screen ideation sketch

The step I'd defend hardest produced no screens.

A first encounter with a product is a social problem before it's an interface problem, so I worked it in sketches and analogies from ordinary introductions before opening a design file. That's where "show value before asking" came from. What it couldn't tell me was how much value a stranger needs to see first — that gap is the rest of this page.

Every decision held up under that question. The question itself was incomplete.

03 / The 2025 rebuild

Three changes, shipped and validated.

Twelve mandatory screens became three modules. Every change below tested clean — keep that in mind for §04.

3.1

Modularized the flow

Account first; quick actions optional; profile whenever wanted.

Onboarding split into three modules: sign-up, quick actions, dining profile
3.2

Restructured the tag picker

Flat tag wall → collapsible categories, pinned selections, split color coding.

Before: flat uncategorized tag wall
Before
After: collapsible categories with pinned selections
After
3.3

Moved permissions into context

End-of-flow pop-up stack → just-in-time asks that name their benefit.

Before
After: contextual, benefit-oriented permission ask
After

Validation: a clean bill of health.

10-participant moderated usability test
24s
Median to home screen
~70%
Task time cut vs MVP
15–20 → 4–10
Clicks to the app
10/10
Completed · 9 no hesitation
I feel like I keep seeing this screen many times.
P7 · adding favorite places

Iterated: the add-a-place loop now runs continuously instead of returning to the same confirmation screen.

I wanna see who's in the group before I join.
P2 · invited-user flow

Iterated: a bottom sheet now shows the group before anyone has to commit to joining.

Moderated test environment, measured against the MVP flow — not production data

It worked by every measure I was looking at.

And they didn't build profiles.

04 / The signal

The flow held. The pull was missing.

My first instinct is the one this case is about: "the flow works, people complete it, so the design is fine." That instinct protects a design instead of a product. I traced where new users actually went after registration.

Install
arrives cold
Sign up
fast · clean
Home feed
browses fine
Getting started
too quiet to pull anyone in
Profile
a trickle
Fig. 03 · Where new users actually went, post-registrationNot a wall — an absence

The trust gap

Restraint reads as respect inside a product you rely on — and as absence inside one you downloaded ten seconds ago. Same pattern, different credit.

The orientation gap

I had designed for someone who already knew what Dynery was for. Nobody did.

A pattern's risk isn't a property of the pattern. It's how much credit your product has with the user on the day they open it.

05 / The fork

The obvious fix was pressure. We didn't ship it.

Considered — not shipped

Gate the feed until a profile exists

It probably would have moved the number, fast. But a gate spends credibility, and we hadn't earned any. Forcing a door doesn't make anyone want what's behind it.

Chosen

Show what a profile buys — then ask

The problem was never that users refused to invest. We had never shown them why it was worth it.

06 / The 2026 rebuild

Show value first. Then ask.

2025Ask for the profilethen deliver curation
2026Show what curated looks likethen ask

Seeded the feed with living profiles.

A newcomer's first screen now shows five example Dyners — filled-out dining profiles with real taste, real places, real curation. Personas we built at first; signed influencers as the base grew. You see what a profile buys before anyone asks you to build one.

Recs · FeedMeet some Dyners
D
Meet Diego
The Explorer
Seeded home feedExport pending · Figma → ONB3 Personas

"View more curated lists by finishing setting up your dining profile."

Shipped UI copy · Getting Started, 2026 — the value, stated before the ask
6.1

Seeded the feed

Example profiles make curation visible on first open — and make Dynery legibly not-Yelp.

6.2

Made the value legible

The getting-started now answers "why would I set this up?" before asking anyone to.

6.3

Kept the 2025 craft

The visual work stayed in production. It was never the problem.

The shape of the fix — I didn't make the onboarding better. I made the thing before it do the work the onboarding couldn't do for itself.

07 / Outcome

What moved — and how each number is sourced.

Activation versus launch across the recovery period. Product-team result — not a controlled A/B, and not mine alone.

Team-measured · backend · cumulative
~2×

7-day activation lift isolated to the seeded-feed release: four weeks after vs four weeks before.

PostHog · production · Jun–Jul 2026
122→64s

Median time to complete a dining profile, monthly. Same task, half the hesitation.

PostHog · production · time_to_complete

Reading notes — not an A/B test · instrumentation changed the same week as the rollout, which if anything biases these numbers down · no absolute rates published by policy

What lasted

"Prove value before the ask" is now how we model onboarding — every new surface starts from it.

What I'd tell myself in 2025

  • On a product users already trust, I'd make the same call again — and be right.
  • I upgraded the craft and left the sequence alone. Craft was never the bottleneck.
  • Judge onboarding by activation, never by completion of the flow.

Made in Seattle with ❤️