current-funnel-ux-review

outputs/agent-4-twofold-research/current-funnel-ux-review.md

Twofold Current Funnel — Expert UX Review

Executive Summary

Twofold Health's signup/onboarding funnel follows a conventional SaaS pattern: landing page → signup → 4-step onboarding wizard → NUX dialog → app. The landing page is professionally designed with strong trust signals (HIPAA badge, 4.8-star rating, real clinician testimonials) and clear value messaging. The hero section immediately communicates the core benefit — auto-generated clinical notes — and the pricing is transparent with a compelling $19/month introductory offer.

The onboarding wizard is lean (4 steps: welcome, name, specialty, completion) but has structural issues. The welcome step adds friction without collecting data. The feature flag system (onboarding-note-customization-step, onboarding-specialty-improved) means different users see different flows, which is good for testing but creates inconsistency. The NUX dialog after onboarding presents three clear paths (record, demo, sample note) — a solid progressive disclosure pattern that lets users self-select their comfort level.

Overall Grade: B- — Strong landing page and clear value proposition, but the onboarding wizard has unnecessary friction, the signup-to-value path is too long (7+ screens before any product value), and several missed opportunities for personalization and psychological momentum. The biggest win would be collapsing the wizard and delivering value faster.

Flow Map

www.trytwofold.com                    app.trytwofold.com
┌──────────────────────┐              ┌──────────────────────┐
│ 1. Hero Section      │──CTA────────>│ 7. Signup Page       │
│ 2. Testimonials      │              │    (Google OAuth or   │
│ 3. Features          │              │     email/password)   │
│ 4. How It Works      │              └──────────┬───────────┘
│ 5. Pricing           │                         │
│ 6. Security          │                         ▼
└──────────────────────┘              ┌──────────────────────┐
                                      │ 8. Welcome Step      │ ← No data collected
                                      │ 9. Name Step         │ ← First/Last name
                                      │ 10. Specialty Step   │ ← Specialty + clinic size
                                      │ 11. Completion Step  │ ← "You're all set!"
                                      └──────────┬───────────┘
                                                 │
                                      (Feature flag: may also show)
                                      │ 11a. Note Preferences │ ← Patient/clinician naming
                                                 │
                                                 ▼
                                      ┌──────────────────────┐
                                      │ 12. NUX Dialog       │
                                      │  • Record (recommended)│
                                      │  • Demo recording     │
                                      │  • View sample note   │
                                      │  • Skip               │
                                      └──────────┬───────────┘
                                                 │
                                                 ▼
                                      ┌──────────────────────┐
                                      │ 13. App (/new)       │
                                      └──────────────────────┘

Total steps to first value: 7-8 (from signup CTA to app)
Estimated completion time: 3-5 minutes

Source Code Insights

Feature Flags Control the Flow

Two PostHog feature flags actively modify the onboarding experience:

  • onboarding-note-customization-step: When "test", adds a 4th step for note preferences (patient/clinician naming conventions). When off, shows a simple "You're all set!" completion step instead.
  • onboarding-specialty-improved: When "test", enables improved specialty selection with mobile-optimized search and a subtitle explaining why specialty data is collected.

Data Collection Strategy

  • Name Step: First/last name collected via react-hook-form + zod validation. Pre-fills from Clerk auth or existing personal info. Tracks whether each field was manually edited.
  • Specialty Step: Medical specialty (from server-side list) + clinic size (4 options: solo, 2-9, 10-49, 50+). Selecting specialty auto-sets note templates via setEnabledCustomTemplatesByMedicalSpecialty.
  • Note Preferences (flag-gated): How to refer to patient (by name, "the client", "the patient", custom) and clinician (by name, custom). Smart defaults: mental health specialties default to "the client", others to "the patient".

State Management

  • Wizard step tracked via URL search param (?step=1,2,3,4), enabling back/forward browser navigation.
  • Onboarding completion stored in userSettings.didFinishOnboardingWizard (server) AND a Zustand persisted store (client) for instant state.
  • Redirect loop protection: max 3 redirects between /onboarding and /new before Sentry alert.

NUX Dialog Behavior

  • Shows after 2-second delay (useDelayedRequest) on the /new page.
  • Won't show if group invitation dialog is active.
  • Three options: Record (stays on page), Demo (navigates to /demo), Sample (navigates to /notes/{sampleVisitId}).
  • Prefetches /demo and sample note pages 500ms after dialog appears.
  • Skip tracks interaction type: "skip_button" vs "outside_dialog".

PostHog Tracking Events

Every step fires granular events:

  • onboarding_wizard_welcome_step_viewed
  • onboarding_wizard_name_step_viewed (with pre-fill status)
  • onboarding_wizard_name_step_first_name_edited / last_name_edited (one-time)
  • onboarding_wizard_specialty_step_viewed (with initial specialty)
  • onboarding_wizard_note_preferences_step_viewed
  • onboarding_wizard_completion_step_viewed
  • onboarding_wizard_step_next_pressed / back_pressed (with stepId)
  • new_user_nux_dialog_viewed / skipped / item_selected

Hero Section A/B Testing (Commented Out)

The landing page has a commented-out feature flag (www_hero_section_content_v3) with 3 variants testing different hero copy:

  • Variant A: "Save Time with AI Clinical Notes"
  • Variant B: "Boost Productivity with AI Clinical Notes"
  • Variant C: "Reduce Burnout, Automate Your Clinical Notes"

This was disabled, suggesting the current control copy won.

Schedule-a-Call Step (Unused)

A ScheduleACallStep component exists with Calendly integration (calendly.com/d/cv3x-6yf-pp9/twofold-intro) but is not currently rendered in the wizard step array. This is dead code — likely a previous experiment.

Per-Step Analysis

Step 1: Landing Page — Hero Section

Step 1

Grade: A-

DimensionAssessmentGrade
Visual DesignClean two-column layout with warm beige/salmon palette. Good hierarchy with hero image showing actual product UI. Professional typography.A
Copy Effectiveness"Your clinical notes. Auto-generated. Magically." — Clear, benefit-first headline. Subtitle reinforces trust ("most trusted and loved").A-
Psychological TriggersSocial proof (4.8/5 stars), authority (HIPAA badge), risk reduction ("No credit card required"). Missing: urgency, scarcity.B+
Interaction DesignSingle prominent CTA ("Try for Free"). Sticky banner with "$19 for first month" creates passive urgency. Clean nav with anchor links.A
Trust & FrictionHIPAA badge visible twice (above and below fold). "No credit card required" removes risk.A
Conversion MechanicsCTA above fold, clear value prop, secondary social proof. Banner with pricing creates awareness. Could benefit from a secondary CTA path.A-
Technical UXHero image uses eager loading, responsive with Astro image optimization. Highlight cards below fold provide scannable benefits.A
Source Code InsightsAudience-aware copy (clinicians/therapists/PT/SLP/nutritionists). Commented-out A/B test suggests they've optimized this section. Copy overrides architecture enables per-campaign customization.A

Top Recommendation: Add a micro-demo or video preview above the fold — clinicians want to see the product before committing. A 15-second GIF showing record → note generation would increase conversion.

Step 2: Landing Page — Testimonials Section

Step 2

Grade: A-

DimensionAssessmentGrade
Visual DesignDark navy background creates strong contrast. Card layout with star ratings. Clean, professional.A
Copy EffectivenessReal quotes from named clinicians with credentials. Specific outcomes mentioned ("five minutes", "1-2 years", "#1 fan"). Authentic voice.A
Psychological TriggersStrong social proof with name + credential + specialty. Diverse professions represented (LICSW, MD, PA-C). Peer validation.A
Interaction DesignHorizontal scrollable cards (3 visible). Could benefit from carousel controls or swipe indicators on mobile.B+
Trust & FrictionNamed individuals with professional credentials builds trust. No photos, which slightly reduces authenticity.B+
Conversion MechanicsNo CTA in this section — missed opportunity. Users primed by testimonials should have an immediate path to convert.B
Technical UXAudience-specific testimonials (different clinician types for different landing pages). Good segmentation.A
Source Code Insights12 clinician-specific testimonials for the default audience, 6-9 for specialty audiences. Horizontally scrollable with different card sets per audience.A-

Top Recommendation: Add clinician photos (even stock-style headshots) and embed a CTA button at the end of the testimonial carousel ("Join 20,000+ providers").

Step 3: Landing Page — Features Section

Step 3

Grade: B+

DimensionAssessmentGrade
Visual DesignSimple 4-column icon grid. Clean but sparse — feels generic compared to the rest of the page. Icons are small and hard to distinguish.B
Copy Effectiveness"Built for clinicians, by clinicians" — good authority framing. Feature names are clear (Accurate, Secure, Compatible, Personalized) but descriptions are brief.B+
Psychological TriggersAuthority ("by clinicians"), trust ("HIPAA and HITECH"), personalization promise.B+
Interaction DesignStatic section, no interaction. Directly flows into How It Works below.B
Trust & FrictionReinforces security messaging. "Recordings are never stored" is a powerful trust signal for clinicians.A-
Conversion MechanicsNo CTA in this section. Acts as supporting content between testimonials and how-it-works.C+
Technical UXIcons loaded from CDN (external URLs). Audience-aware title.B
Source Code InsightsTitle varies per audience type. Icons use external Webflow CDN URLs — a legacy from the original Webflow site, not optimized Astro images.B

Top Recommendation: Expand each feature into a more detailed card with a before/after narrative or a specific clinician use case. The "Compatible" feature could show EHR logos.

Step 4: Landing Page — How It Works + Value Prop

Step 4

Grade: A-

DimensionAssessmentGrade
Visual DesignStrong visual: step-by-step product illustration on the left, text on the right. "Dictate" and "Upload" cards offer alternative paths. Gradient CTA banner is eye-catching.A
Copy Effectiveness"Super simple." is effective — directly addresses complexity concerns. Three-step process (Capture → Review → Send) is clear and memorable. "Reduce burnout, improve patient care" is emotionally resonant.A
Psychological TriggersSimplicity framing reduces perceived effort. "Prefer not to capture?" section proactively handles objections. Loss aversion in "Reduce burnout" messaging.A-
Interaction DesignTwo card options for non-recording use cases (dictate summary, upload notes) expand perceived flexibility.A-
Trust & Friction"Up to 1.5 hours" sets clear expectations. "Twofold learns your style" builds confidence in personalization.A-
Conversion MechanicsCTA embedded in the how-it-works section. "Reduce burnout" banner has its own CTA. Two conversion opportunities.A
Technical UXProduct illustration uses optimized Astro image. Responsive layout with separate mobile/desktop title elements.A
Source Code InsightsCTA button text is configurable via getCtaButtonText() utility, suggesting per-campaign customization.A

Top Recommendation: Add a brief animated demo or micro-interaction showing the Capture → Note flow in real time. The static illustration is good but motion would be more compelling.

Step 5: Landing Page — Pricing Section

Step 5

Grade: B+

DimensionAssessmentGrade
Visual DesignClean 3-column pricing grid. "Most Popular" badge on Personal plan. Strikethrough pricing ($69 → $19) creates anchoring effect. Monthly/Annual toggle.A-
Copy Effectiveness"for the first month" clearly indicates intro pricing. Feature lists are concise and relevant. Free tier features are limited but present.B+
Psychological TriggersPrice anchoring ($69 → $19), social proof ("Most Popular"), loss aversion (what you miss on Free), anchoring effect.A-
Interaction DesignMonthly/Annual toggle is standard. Cards are scannable.B+
Trust & FrictionFree tier exists, which reduces risk. But transition from $19 → $69 is a 3.6x increase — could cause churn shock. Not mentioned transparently.B
Conversion MechanicsCTA buttons present on each plan. Clear differentiation between tiers. Group plan for larger practices.B+
Technical UXReact component with client-side rendering (client:load). Monthly/Annual toggle works smoothly.A-
Source Code InsightsPricing section is a React component rendered client-side. CTA text is configurable. Audience-aware via props.B+

Top Recommendation: Make the price transition from $19 → $69 more transparent (show "then $69/month" explicitly). Add ROI calculator ("Save X hours/week = $Y value") to justify the price.

Step 6: Landing Page — Security Section

Step 6

Grade: B+

DimensionAssessmentGrade
Visual DesignClean two-column layout with HIPAA logos. Good information hierarchy. Adequate whitespace.B+
Copy Effectiveness"We don't train our models on your data. We don't store any audio." — Direct, fear-addressing headline. Sub-sections cover all key concerns.A
Psychological TriggersFear reduction (addresses #1 clinician concern: data privacy). Authority signals (HIPAA, HITECH, Azure).A
Interaction DesignStatic informational section. Could benefit from expandable FAQ format.B
Trust & FrictionHIPAA badge, mention of Microsoft Azure, BAA, encryption at rest/transit. Covers all healthcare compliance bases.A
Conversion MechanicsCTA at bottom of section. Positioned well as the final objection-handler before conversion.B+
Technical UXIcons use external CDN URLs (same Webflow legacy as features section).B
Source Code InsightsSame icon repeated for all 6 security features — should use distinct icons per feature for better scanability.C+

Top Recommendation: Use distinct icons for each security feature (lock for encryption, shield for HIPAA, cloud for Azure, etc.). The repeated icon makes the section look templated.

Step 7: Signup Page

Step 7

Grade: A-

DimensionAssessmentGrade
Visual DesignSplit layout: dark left panel with value prop + testimonial, light right panel with form. Professional, clean.A
Copy Effectiveness"Unlock More Time for What Matters" — emotionally resonant. "Join 20,000+ providers saving 2 hours a day" — specific, compelling social proof. Testimonial with name/credential.A
Psychological TriggersSocial proof (20,000+ providers), specific outcome (2 hours/day), peer testimonial with 5-star rating, risk removal ("No credit card required").A
Interaction DesignGoogle OAuth prominent (reduces friction). Email/password as fallback. Only 2 fields. "Create Account" CTA is clear.A
Trust & FrictionHIPAA badge at bottom, Terms/BAA/Privacy links visible. Google OAuth reduces password fatigue. Minimal fields (just email + password).A
Conversion MechanicsSingle clear CTA. Google OAuth as primary path. "Already have an account?" for returning users.A-
Technical UXClerk-powered auth (detected from source code). Likely handles email verification, password strength, etc.A
Source Code InsightsRedirects from /get-started to /sign-up. Auth handled by Clerk. Post-auth redirects to /onboarding if wizard not completed, /new if completed.A

Top Recommendation: Add a small product preview or "What happens next" indicator below the form — users want to know what they're signing up for before committing.

Step 8: Onboarding Wizard — Welcome Step

Step 8

Grade: C+

DimensionAssessmentGrade
Visual DesignCard-based layout (desktop) with step progress indicator showing logo + numbered steps. Clean white card with centered title.B+
Copy Effectiveness"You're one step closer to stress-free documentation" — warm but vague. "Let's personalize your experience" — explains the why.B
Psychological TriggersCommitment/consistency (started the journey), future pacing ("stress-free documentation"). But no concrete benefit teaser.C+
Interaction DesignSingle "NEXT" button. No data collected. No back button (first step). Progress bar shows 0%.C
Trust & FrictionThis step adds pure friction. No data is collected, no value is delivered. It's a welcome mat that delays the user.D
Conversion MechanicsOnly action is "NEXT". No skip option. Users who just signed up are forced through a zero-value screen.C
Technical UXAuto-animate transitions. Progress tracked via URL param. Responsive with separate mobile/desktop layouts.A-
Source Code InsightsOnly fires onboarding_wizard_welcome_step_viewed. No data collection. Back button disabled. This is pure ceremony.D

Top Recommendation: Remove this step entirely. It collects no data and delivers no value. Merge the welcome messaging into the name step's subtitle or eliminate it. This would reduce the wizard from 4 steps to 3.

Step 9: Onboarding Wizard — Name Step

Step 9

Grade: B

DimensionAssessmentGrade
Visual DesignTwo inputs (First name, Last name) with underline-style borders. Clean, minimal. Horizontal on desktop, stacked on mobile.B+
Copy Effectiveness"What's your name?" — simple and direct. No explanation of why name is needed, which is fine given context.B+
Psychological TriggersPersonalization promise (name will be used in notes). Pre-fill from Google auth reduces effort.B+
Interaction DesignPre-fills from Clerk or existing personal info. Zod validation (min 1 char each). Tracks first edit of each field. NEXT disabled until valid.A-
Trust & FrictionMinimal friction — only 2 fields. Often pre-filled from OAuth. But for Google auth users, this step may be redundant.B
Conversion MechanicsData saves optimistically on NEXT. No mutation blocking.A-
Technical UXUses react-hook-form + zod. Saves via tRPC mutation. Optimistic cache update.A
Source Code InsightsTracks whether first/last name were pre-filled vs manually entered. If both are pre-filled via Google OAuth, this step is 100% redundant — the user just presses NEXT.B-

Top Recommendation: Auto-skip this step when both names are pre-filled from OAuth. Show the pre-filled names in a confirmation prompt ("We'll use Dr. Jane Smith in your notes — correct?") instead of a full form.

Step 10: Onboarding Wizard — Specialty Step

Step 10

Grade: B+

DimensionAssessmentGrade
Visual DesignTwo fields: searchable specialty dropdown + clinic size selector. Consistent underline-style inputs.B+
Copy Effectiveness"Tell us about your practice" — conversational. With improved flag: adds "We use this to match your clinical language and note format" — explains the value.B+ (A- with flag)
Psychological TriggersPersonalization promise is strongest here — users understand why specialty matters for note quality.A-
Interaction DesignSearchable specialty selector with alphabetical sorting. Clinic size is a simple 4-option popover. Improved version has mobile-optimized search.A-
Trust & FrictionTwo fields is acceptable. Specialty search may take effort if the list is long.B+
Conversion MechanicsAuto-sets note templates based on specialty selection — immediate behind-the-scenes value delivery.A
Technical UXServer-fetched specialty list. Async mutation with loading state on NEXT. Refetches user settings after save.A
Source Code InsightsThis is the most valuable onboarding step — it configures note templates automatically. Two feature flags affect the UX (onboarding-specialty-improved). The auto-template-setting is invisible to the user but critical for first-note quality.A

Top Recommendation: Surface the value: after specialty selection, show a brief preview of "Here's what your notes will look like" or "We've loaded 3 templates for [specialty]". Make the behind-the-scenes magic visible.

Step 11: Onboarding Wizard — Completion Step

Note: In the current flag-gated flow, this step is replaced by Note Preferences (Step 11a). The completion step only appears when the onboarding-note-customization-step flag is off.

Grade: C

DimensionAssessmentGrade
Visual DesignSimple centered card with title and subtitle. "FINISH" button.C+
Copy Effectiveness"You're all set! Time to experience Twofold in action. Let's create your first note!" — Good momentum messaging but generic.B-
Psychological TriggersForward momentum ("Let's create your first note!"). But the exclamation feels forced.C+
Interaction DesignSingle FINISH button. Sets didFinishOnboardingWizard: true and redirects to /new.B
Trust & FrictionAnother zero-data-collection screen. Like the welcome step, this is ceremony. It should be the action, not a prelude to action.D
Conversion MechanicsRedirects to /new which shows the NUX dialog. Two screens of "get ready" before value delivery.C
Technical UXSets completion flag in both server settings and client Zustand store. Mutation has disableOptimisticUpdate.B+
Source Code InsightsWhen note preferences flag is ON, this step is replaced by the note preferences step (which actually collects data). The completion step is essentially a dead-end screen that exists only when the flag is off.C

Top Recommendation: Remove this step. Have the specialty step's NEXT button go directly to the app with a "Creating your workspace..." transition. Or better: merge it with the NUX dialog prompt.

Step 11a: Onboarding Wizard — Note Preferences Step (Flag-Gated)

Step 11a

Only shown when onboarding-note-customization-step flag = "test"

Grade: B+

DimensionAssessmentGrade
Visual DesignPill-group selection for patient naming (By name / The client / The patient / Other) and clinician naming (By name / Other). Custom input appears for "Other".B+
Copy Effectiveness"Note preferences" title. "How should your client be referred to in notes?" — clear and relevant.B+
Psychological TriggersPersonalization and control — users feel ownership over their note style. Smart defaults based on specialty (mental health → "the client").A-
Interaction DesignPill-group selection is intuitive. Smart defaults reduce effort. Custom input only appears when needed.A-
Trust & FrictionMeaningful data collection — this actually improves the product experience. FINISH button sets completion flag.A-
Conversion MechanicsThis is the last step before app entry. Sets didFinishOnboardingWizard: true on success.B+
Technical UXSaves to user settings via optimistic update disabled. Handles custom moniker trimming and empty-string fallback.A-
Source Code InsightsSmart defaults: mental health specialties auto-select "the client", others "the patient". Clinician defaults to "by name". This step actually justifies its existence — unlike welcome and completion steps.A

Top Recommendation: Always show this step (remove the feature flag gate). It's the most user-empowering part of onboarding. Consider adding one more preference (note format/template preview).

Step 12: NUX Dialog

Step 12

Grade: B+

DimensionAssessmentGrade
Visual DesignModal dialog with gradient header (primary color). Three options as cards with icons (Mic, Play, FileText). "Recommended" badge on Record.A-
Copy Effectiveness"Welcome to Twofold! Take the first step to save time." — Warm greeting with benefit reminder. Option descriptions are clear and action-oriented.B+
Psychological TriggersRecommended option (social proof/authority). Progressive disclosure (3 comfort levels). Low-commitment "View Example Note" for hesitant users.A-
Interaction DesignClick any card to proceed. Skip button in footer. Closing dialog = skip. Desktop arrow icons suggest clickability. Short-screen responsive layout.A-
Trust & FrictionSkip option available (important for autonomy). 2-second delay before showing prevents jarring popup.B+
Conversion MechanicsThree paths: Record (stays on page), Demo (→ /demo), Sample (→ /notes/sample). Record is pushed as recommended.A-
Technical UXPrefetches demo and sample pages 500ms after dialog appears. Zustand state prevents re-showing. Group invitation dialog takes priority.A
Source Code InsightsRecord option does nothing except close the dialog (user stays on /new page to record). Demo navigates away. Sample navigates away. Skip just closes. didFinishNuxDialog is set to true for ALL actions including skip.B+

Top Recommendation: When "Record a Conversation" is selected, auto-start the recording UI or at minimum highlight the record button with a tooltip/pulse animation. Currently selecting "Record" just closes the dialog — the user needs to figure out what to do next on their own.

Cross-Step Analysis

Friction Map

RankFriction PointSeverityStepImpact
1Welcome step collects no dataHighStep 8Adds an entire unnecessary screen to the flow
2Completion step collects no dataHighStep 11Another empty screen before value delivery
37+ screens before product valueHighAllLanding → Signup → Welcome → Name → Specialty → Completion → NUX → App
4Name step redundant for OAuth usersMediumStep 9Google auth pre-fills both fields, user just clicks NEXT
5"Record" NUX option doesn't auto-startMediumStep 12User selects "Record" but nothing happens — they must find the button
6Price jump from $19 → $69 not transparentMediumStep 5"for the first month" is easily missed; could cause churn shock
7No progress indicator on signup pageLowStep 7User doesn't know onboarding is coming after signup
82-second delay before NUX dialogLowStep 12User may start exploring the empty app state before dialog appears

Value Delivery Timeline

Time ──────────────────────────────────────────────────────>

Landing     Signup    Welcome   Name    Specialty  Complete   NUX      App
  │           │         │        │         │          │        │        │
  ▼           ▼         ▼        ▼         ▼          ▼        ▼        ▼
[Learn]   [Commit]  [Wait]   [Wait]   [Customize] [Wait]   [Choose] [VALUE!]

  ◄─────── Understanding ──────►◄── Configuration ──►◄─ Ceremony ─►◄─ Value ─►

First value delivery: Step 13 (App). This is too late.

The user doesn't experience any product value until they reach the app AND either record a conversation, try the demo, or view a sample note. That's potentially 8-9 screens from first CTA click.

How to move value earlier:

  1. Show a personalized note preview during onboarding (after specialty selection)
  2. Auto-play a 10-second demo during the completion step
  3. Show their configured note template after the specialty step
  4. Embed a sample note view directly in the NUX dialog

Drop-Off Risk Assessment

TransitionDrop-Off RiskWhy
Landing → SignupMediumStandard conversion gap. CTA is clear but requires leaving the domain.
Signup → WelcomeLowUsers just committed to signing up, momentum carries them.
Welcome → NameMedium-LowIf the welcome screen feels pointless, users may question the process.
Name → SpecialtyLowNatural progression. Specialty selection feels relevant.
Specialty → CompletionLowAlmost done, momentum is strong.
Completion → AppLowAutomatic redirect.
NUX Dialog → ActionHighThis is the highest-risk transition. Users see an empty app with a popup. "Skip" is prominent and tempting. Record requires a real patient or demo setup.
First session → ReturnVery HighIf the user skips NUX and sees an empty app, there's nothing to pull them back.

Information Architecture

Current order: Welcome → Name → Specialty → (Note Prefs) → Completion Optimal order: Name → Specialty → Note Prefs → [Remove Welcome & Completion]

  • Welcome step: Should be removed — it's pure friction
  • Name step: Should be first (quick, easy, often pre-filled)
  • Specialty step: Should be second (drives template configuration)
  • Note preferences: Should always be shown (currently flag-gated)
  • Completion step: Should be removed — merge with app entry

The current flow asks information in a reasonable order but includes two zero-value screens. For OAuth users, the name step should also be optional (auto-confirm).

Overall UX Scorecard

DimensionScore (1-10)Key Finding
Visual Design8Professional, clean, medical-appropriate palette. Consistent across all steps.
Copy Effectiveness7Strong on landing page, weak in onboarding (generic welcome/completion copy).
Psychological Triggers7Good social proof and trust signals on landing page. Missing urgency and scarcity throughout.
Interaction Design7Forms are well-designed but two empty screens waste user time. OAuth pre-fill underutilized.
Trust & Friction8Excellent trust signals (HIPAA, BAA, testimonials). Friction from unnecessary wizard steps.
Conversion Mechanics7Clear CTAs, good pricing display. But too many screens between intent and value delivery.
Technical UX8Solid tech stack (Astro, React, Clerk, PostHog). Good feature flag architecture. Smart prefetching.
Source Code Insights7Good tracking coverage. Feature flags enable experimentation. Some dead code (ScheduleACallStep).
Overall7.4Strong fundamentals with clear optimization opportunities in onboarding flow compression.

Top 10 Recommendations

  1. Remove the Welcome Step — It collects no data and delivers no value. Merge any messaging into the name step subtitle. Saves 1 click and reduces perceived onboarding length by 25%.

    • Impact: High
    • Effort: Low
    • Priority: P0
  2. Remove the Completion Step — Replace with a direct transition to the app with a "Setting up your workspace..." animation. Or merge with NUX dialog as a combined "You're ready! How would you like to start?" screen.

    • Impact: High
    • Effort: Low
    • Priority: P0
  3. Auto-skip Name Step for OAuth Users — When both first and last name are pre-filled from Google, show a quick confirmation ("We'll use Dr. Jane Smith — correct?") as a banner rather than a full step.

    • Impact: Medium
    • Effort: Medium
    • Priority: P1
  4. Always Show Note Preferences Step — Remove the feature flag gate and always include this step. It's the most empowering part of onboarding and directly improves note quality.

    • Impact: Medium
    • Effort: Low
    • Priority: P1
  5. Make "Record" NUX Option Actionable — When user selects "Record a Conversation", auto-highlight or pulse the record button, show a tooltip, or open the recording interface. Currently it just closes the dialog.

    • Impact: High
    • Effort: Medium
    • Priority: P0
  6. Show Value During Onboarding — After specialty selection, show a preview: "Here's what your SOAP note will look like" with a template thumbnail. This delivers a glimpse of value 3 screens earlier.

    • Impact: High
    • Effort: Medium
    • Priority: P1
  7. Add Testimonial Photos — Real or professional headshot-style photos next to testimonial names would increase trust and authenticity on both the landing page and signup page.

    • Impact: Medium
    • Effort: Low
    • Priority: P2
  8. Make Pricing Transition Transparent — Show "$19/month for the first month, then $69/month" explicitly in the pricing card. The current small "for the first month" text is easily missed and could cause churn shock.

    • Impact: Medium
    • Effort: Low
    • Priority: P1
  9. Add Distinct Security Icons — The security section reuses the same icon for all 6 features. Use distinct icons (lock, shield, cloud, etc.) for better scanability and visual differentiation.

    • Impact: Low
    • Effort: Low
    • Priority: P2
  10. Add Product Demo on Landing Page — Embed a short GIF or video (15-30 seconds) showing the record → note generation flow above the fold. Clinicians want to see the product work before signing up.

    • Impact: High
    • Effort: Medium
    • Priority: P1