Why this matters
Most onboarding flows treat attention as infinite. We used lightweight signals—language, scroll intent, and action density—to offer the next helpful step only when it would be welcome.
Signals → decisions
We mapped inputs to small state transitions. Think of it like a thermostat for attention: don’t blast heat, maintain comfort.
// tiny state sketch
const signals = { lang: 'de', idleMs: 4200, clicks: 1 };
const state = { step: 'collect_profile', nudge: null };
if (signals.idleMs > 3500) state.nudge = 'tooltip';
if (signals.clicks > 3) state.nudge = null; // user is moving
if (signals.lang === 'de') state.locale = 'de-DE'; // route copy
“Onboarding shouldn’t shout. It should harmonize with the user’s current tempo.”
Outcome snapshot
The funnel below is a synthetic preview…
Implementation notes
- Kept all prompts under 14 words.
- Localized first; animated later.
- Logged drop-off with reasons, not just counts.