We believe new heywavelength users churn early when generic onboarding fails to capture nuanced taste preferences, leading to irrelevant recommendations. Current analytics show 42% of new users abandon the app within 24 hours (source: June 2024 core funnel), primarily citing "recommendations feel impersonal" (source: exit survey n=187). The business case: 27,500 monthly new users × 12.5% churn reduction × $38.50 LTV = $158,812/month recoverable value (source: Amplitude cohort data, credit card decline analysis). Downside (40% adoption): $63,525/month. This calibrates recommendations from session one — it is not a social feature nor replaces core discovery UI.
HYPOTHESIS: Building AI-powered taste calibration during onboarding for first-time users will increase D7 retention by ≥15pp by capturing 8 critical taste signals upfront. Evidence: Lookback sessions show users skipping profile setup complete it when framed as "get better recs" (78% completion, n=41), while cold-start errors drop 60% when ≥5 taste signals exist (Q1 ML model test). Cost: 5 engineering-weeks + 3 design-weeks using Lambda benchmarks → $73k total. Value floor: $63k/month at partial adoption justifies build.
This feature is a mandatory swipe-based taste capture flow generating structured embeddings for our recommender. It is not a social compare tool, a content search function, or a prerequisite for app entry — users can skip with default preferences.
HOW COMPETITORS SOLVE THIS:
- Pinterest: Requires manual board creation and pinning (hires for curation)
- Spotify: Post-signup music playback preferences (hires for listening context)
- Letterboxd: Social follow graph imports (hires for friend-aligned discovery)
| Capability | Pinterest | Spotify | heywavelength | | --- | --- | --- | --- | | Capture during signup | ❌ | ✅ | ✅ (unique) | | Cross-category signals | ❌ (visuals) | ❌ (audio) | ✅ | | Generates embedding | ❌ | Partial | ✅ (structured)| | WHERE WE LOSE | Ecosystem depth | Audio focus | ❌ content breadth vs Pinterest |
Our wedge is multimodal taste binding because we connect sparse signals across domains into a unified preference vector — Spotify and Pinterest specialize.
WHO/JTBD: When a first-time heywavelength user completes onboarding, they need the platform to understand their unique cultural preferences so they immediately encounter relevant recommendations without manual trial-and-error.
INCIDENT: On May 15, 2024, "Sam T." (documented UX study P47) abandoned heywavelength after onboarding asked only for email and name. She swiped left on 12 consecutive "popular picks" — jazz albums despite hating jazz, abstract art despite preferring photorealism — before deleting the app. This mismatch stemmed from zero taste calibration, forcing reliance on weak collaborative filtering. The session lasted 9 minutes versus her stated 2-minute tolerance for "first value."
SYSTEMIC COST:
| Metric | Baseline | Frequency | Cost |
|---|---|---|---|
| D1 abandonment | 42% | Per new user | $1.03M annual lost acquisition spend |
| Avg. sessions to first rec "like" | 4.2 sessions | 67% of new users | 22,275 hours monthly wasted engagement |
| Support tickets re: "bad recs" | 31/day | 63% from first-week users | $142k annual ops cost |
JTBD: "When I sign up, I want to teach the AI my taste in 90 seconds flat so I see things I actually like immediately."
CORE FLOW (90-second swipe calibration):
- Post-email verification, full-screen modal triggers: "Get better recommendations in 90 sec?" [Skip for now] → [Start]
- Swipe interface: Eight sequential card stacks (2 per category: music/books/films/aesthetics). Example card: Album art + "Swipe right if this resonates"
- Per swipe, system records:<br> - Explicit: ✅/❍ (like/skip)<br> - Implicit: Dwell time, hesitation pattern<br> - Context: Card metadata (genre/era/vector embedding)
- Final screen: "Your Taste Profile is ready!" with 3 personalized recs + "See why" tooltip showing matched attributes
- Profile stored as JSON {taste_vector: [0.34, -0.72...], explicit_signals: {music: {rock: +2, jazz: -1}}...}
KEY DECISIONS:
- 8 swipes balances signal density vs. dropout risk (validated via 5-user time tests)
- Skippable: Allows opt-out but designs friction (full-screen modal, value-prop copy)
- No text input: Avoids cognitive load; leverages pre-tagged content library
- Decoupled from social graph: Avoids privacy/comparison distractions
SCOPE BOUNDARY: Phase 1 uses existing content catalog; no custom uploads.
┌───────────────────────────────────────────────┐
│ [Book Category] │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ │ │
│ │ [Cover Art: "Dune" Poster] │ │
│ │ "Foundational sci-fi epic" │ │
│ │ │ │
│ └─────────────────────────────────────┘ │
│ │
│ Swipe ← for not you Swipe → for love it │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
│ Taste Profile Complete! │
│ │
│ We found patterns in your 8 choices: │
│ • Strong preference: 80s synth, photorealism │
│ • Avoids: Abstract art, jazz │
│ │
│ TRY THESE FIRST: │
│ ┌───────┐ ┌──────┐ ┌───────┐ │
│ │ [Img] │ │[Img] │ │ [Img] │ │
│ └───────┘ └──────┘ └───────┘ │
└───────────────────────────────────────────────┘
Phase 1 — MVP (4 weeks)
US#1 — Taste onboarding entry
- Given new user completes email verification
- When modal displays with "Skip/Start"
- Then 100% display consistency (P0)
Failure: Skip rate >55% → redesign modal
US#2 — Swipe interaction
- When user swipes on a content card
- Then system records card metadata + vector position within 200ms p95
Failure: Latency >500ms → fall back to simple logging
Out of Scope (Phase 1):
| Feature | Why Not Phase 1 |
|---|---|
| Profile editing UI | Requires complex preference weighting controls |
| Custom content upload | Needs moderation pipeline not in scope |
| Multi-user correlation | Phase 2 social features required |
Phase 1.1 (2 weeks): Edit profile button in settings, 3-tap preference adjustments
Phase 1.2 (3 weeks): "Taste match" social compare (non-default)
| Metric | Baseline | Target | Kill Threshold | Measurement |
|---|---|---|---|---|
| Primary | ||||
| D7 retention | 51% | ≥66% | <55% at D90 | Amplitude cohort |
| Avg. rec accuracy (first session) | 22% like rate | ≥35% | <25% at D45 | Thumbs-up tracking |
| Onboarding completion | N/A | ≥67% | <50% at D30 | Mixpanel workflow |
| Guardrails | Threshold | Action | ||
| Skip rate | N/A | ≤45% | UX review @D7 | First modal tracker |
| App launch latency | 1.4s p95 | ≤1.6s | Revert if breached | Firebase Perf |
| Cold-start rec CTR | 12% | ≥10% | Investigate models | A/B test control |
What We Are NOT Measuring:
- Profile creation count (inflated by partials, doesn't indicate usage)
- Median swipe time (no proven correlation with signal quality)
- Social shares (not a Phase 1 objective)
RISK: Low signal density from minimal swipes
Probability: Medium | Impact: High
Trigger: Avg. signals/user <5.5 at D14
Mitigation: Alex (Data) monitors signal distribution → inject high-contrast cards if <5 signals (live by Phase 1)
RISK: Embedding degrades base model recall
Probability: Low | Impact: Critical
Trigger: p95 rec latency >3.2s in canary
Mitigation: Diya (ML) implements circuit breaker → fall back to generic model if inference >2.5s (validated via load test)
RISK: GDPR consent for implicit signals
Probability: High | Impact: Medium
Trigger: DPA flags dwell-time collection
Mitigation: Lena (Legal) confirms compliance by 6/20 → if blocked, collect explicit-only (reduces model accuracy 15%)
KILL CRITERIA (within 90 days):
- D7 retention below 55% despite ≥50% calibration completions
- Support tickets about bad recs increase >15% from pre-launch baseline
- Skip rate >55% with no downward trend by D30
Decision: How many swipe interactions to require
Choice Made: 8 signals (2 per category)
Rationale: 90s max, validated per usability tests. 12+ increased dropouts by 22%.
Decision: Data retention for skipped users
Choice Made: Store partial profiles and retarget at D3 via notification
Rationale: Partial signals better than cold-start; notifications historically show 38% CTR (source: push campaign data)
Decision: Personalization depth in Phase 1
Choice Made: Profile populates session but no editable UI yet
Rationale: Edits require complex preference tuning UI — deferred to Phase 1.2 to hit launch target
Decision: Empty state handling for skip-all users
Choice Made: Use "popular near you" with explicit "based on location" label
Rationale: Avoids false personalization; preserves trust per ethics guidelines
BEFORE/AFTER STORY
Before: Riley signed up and got classical music recs despite hating it. She searched manually for 8 minutes, found one relevant film, then quit. churned at D2.
After: Riley swiped through 8 cards (loved Blade Runner, hated Kandinsky). Session 1 recommendations included synthwave playlists and cyberpunk books. Saved 3 items in 90 seconds.
PRE-MORTEM
"It is 6 months from now and this feature failed because:
- Users interpreted swipe gestures as content voting, not taste calibration — polluting signals
- Phase 1.1 editing tools got cut, trapping users in wrong profiles with no recourse
- Pinterest launched Lens-based taste capture 5 weeks before us using existing image graph
Success means VP Product says: 'Our D7 retention finally beats benchmark. Users report "it gets me" on day one — ops tickets about bad recs dropped 70%.' The team no longer hears 'Wavelength doesn't know me.'"