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
/onboardingand/newbefore Sentry alert.
NUX Dialog Behavior
- Shows after 2-second delay (
useDelayedRequest) on the/newpage. - 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
/demoand 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_viewedonboarding_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_viewedonboarding_wizard_completion_step_viewedonboarding_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

Grade: A-
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Clean 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 Triggers | Social proof (4.8/5 stars), authority (HIPAA badge), risk reduction ("No credit card required"). Missing: urgency, scarcity. | B+ |
| Interaction Design | Single prominent CTA ("Try for Free"). Sticky banner with "$19 for first month" creates passive urgency. Clean nav with anchor links. | A |
| Trust & Friction | HIPAA badge visible twice (above and below fold). "No credit card required" removes risk. | A |
| Conversion Mechanics | CTA above fold, clear value prop, secondary social proof. Banner with pricing creates awareness. Could benefit from a secondary CTA path. | A- |
| Technical UX | Hero image uses eager loading, responsive with Astro image optimization. Highlight cards below fold provide scannable benefits. | A |
| Source Code Insights | Audience-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

Grade: A-
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Dark navy background creates strong contrast. Card layout with star ratings. Clean, professional. | A |
| Copy Effectiveness | Real quotes from named clinicians with credentials. Specific outcomes mentioned ("five minutes", "1-2 years", "#1 fan"). Authentic voice. | A |
| Psychological Triggers | Strong social proof with name + credential + specialty. Diverse professions represented (LICSW, MD, PA-C). Peer validation. | A |
| Interaction Design | Horizontal scrollable cards (3 visible). Could benefit from carousel controls or swipe indicators on mobile. | B+ |
| Trust & Friction | Named individuals with professional credentials builds trust. No photos, which slightly reduces authenticity. | B+ |
| Conversion Mechanics | No CTA in this section — missed opportunity. Users primed by testimonials should have an immediate path to convert. | B |
| Technical UX | Audience-specific testimonials (different clinician types for different landing pages). Good segmentation. | A |
| Source Code Insights | 12 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

Grade: B+
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Simple 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 Triggers | Authority ("by clinicians"), trust ("HIPAA and HITECH"), personalization promise. | B+ |
| Interaction Design | Static section, no interaction. Directly flows into How It Works below. | B |
| Trust & Friction | Reinforces security messaging. "Recordings are never stored" is a powerful trust signal for clinicians. | A- |
| Conversion Mechanics | No CTA in this section. Acts as supporting content between testimonials and how-it-works. | C+ |
| Technical UX | Icons loaded from CDN (external URLs). Audience-aware title. | B |
| Source Code Insights | Title 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

Grade: A-
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Strong 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 Triggers | Simplicity framing reduces perceived effort. "Prefer not to capture?" section proactively handles objections. Loss aversion in "Reduce burnout" messaging. | A- |
| Interaction Design | Two 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 Mechanics | CTA embedded in the how-it-works section. "Reduce burnout" banner has its own CTA. Two conversion opportunities. | A |
| Technical UX | Product illustration uses optimized Astro image. Responsive layout with separate mobile/desktop title elements. | A |
| Source Code Insights | CTA 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

Grade: B+
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Clean 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 Triggers | Price anchoring ($69 → $19), social proof ("Most Popular"), loss aversion (what you miss on Free), anchoring effect. | A- |
| Interaction Design | Monthly/Annual toggle is standard. Cards are scannable. | B+ |
| Trust & Friction | Free tier exists, which reduces risk. But transition from $19 → $69 is a 3.6x increase — could cause churn shock. Not mentioned transparently. | B |
| Conversion Mechanics | CTA buttons present on each plan. Clear differentiation between tiers. Group plan for larger practices. | B+ |
| Technical UX | React component with client-side rendering (client:load). Monthly/Annual toggle works smoothly. | A- |
| Source Code Insights | Pricing 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

Grade: B+
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Clean 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 Triggers | Fear reduction (addresses #1 clinician concern: data privacy). Authority signals (HIPAA, HITECH, Azure). | A |
| Interaction Design | Static informational section. Could benefit from expandable FAQ format. | B |
| Trust & Friction | HIPAA badge, mention of Microsoft Azure, BAA, encryption at rest/transit. Covers all healthcare compliance bases. | A |
| Conversion Mechanics | CTA at bottom of section. Positioned well as the final objection-handler before conversion. | B+ |
| Technical UX | Icons use external CDN URLs (same Webflow legacy as features section). | B |
| Source Code Insights | Same 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

Grade: A-
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Split 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 Triggers | Social proof (20,000+ providers), specific outcome (2 hours/day), peer testimonial with 5-star rating, risk removal ("No credit card required"). | A |
| Interaction Design | Google OAuth prominent (reduces friction). Email/password as fallback. Only 2 fields. "Create Account" CTA is clear. | A |
| Trust & Friction | HIPAA badge at bottom, Terms/BAA/Privacy links visible. Google OAuth reduces password fatigue. Minimal fields (just email + password). | A |
| Conversion Mechanics | Single clear CTA. Google OAuth as primary path. "Already have an account?" for returning users. | A- |
| Technical UX | Clerk-powered auth (detected from source code). Likely handles email verification, password strength, etc. | A |
| Source Code Insights | Redirects 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

Grade: C+
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Card-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 Triggers | Commitment/consistency (started the journey), future pacing ("stress-free documentation"). But no concrete benefit teaser. | C+ |
| Interaction Design | Single "NEXT" button. No data collected. No back button (first step). Progress bar shows 0%. | C |
| Trust & Friction | This step adds pure friction. No data is collected, no value is delivered. It's a welcome mat that delays the user. | D |
| Conversion Mechanics | Only action is "NEXT". No skip option. Users who just signed up are forced through a zero-value screen. | C |
| Technical UX | Auto-animate transitions. Progress tracked via URL param. Responsive with separate mobile/desktop layouts. | A- |
| Source Code Insights | Only 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

Grade: B
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Two 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 Triggers | Personalization promise (name will be used in notes). Pre-fill from Google auth reduces effort. | B+ |
| Interaction Design | Pre-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 & Friction | Minimal friction — only 2 fields. Often pre-filled from OAuth. But for Google auth users, this step may be redundant. | B |
| Conversion Mechanics | Data saves optimistically on NEXT. No mutation blocking. | A- |
| Technical UX | Uses react-hook-form + zod. Saves via tRPC mutation. Optimistic cache update. | A |
| Source Code Insights | Tracks 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

Grade: B+
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Two 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 Triggers | Personalization promise is strongest here — users understand why specialty matters for note quality. | A- |
| Interaction Design | Searchable specialty selector with alphabetical sorting. Clinic size is a simple 4-option popover. Improved version has mobile-optimized search. | A- |
| Trust & Friction | Two fields is acceptable. Specialty search may take effort if the list is long. | B+ |
| Conversion Mechanics | Auto-sets note templates based on specialty selection — immediate behind-the-scenes value delivery. | A |
| Technical UX | Server-fetched specialty list. Async mutation with loading state on NEXT. Refetches user settings after save. | A |
| Source Code Insights | This 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
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Simple 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 Triggers | Forward momentum ("Let's create your first note!"). But the exclamation feels forced. | C+ |
| Interaction Design | Single FINISH button. Sets didFinishOnboardingWizard: true and redirects to /new. | B |
| Trust & Friction | Another zero-data-collection screen. Like the welcome step, this is ceremony. It should be the action, not a prelude to action. | D |
| Conversion Mechanics | Redirects to /new which shows the NUX dialog. Two screens of "get ready" before value delivery. | C |
| Technical UX | Sets completion flag in both server settings and client Zustand store. Mutation has disableOptimisticUpdate. | B+ |
| Source Code Insights | When 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)

Only shown when onboarding-note-customization-step flag = "test"
Grade: B+
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Pill-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 Triggers | Personalization and control — users feel ownership over their note style. Smart defaults based on specialty (mental health → "the client"). | A- |
| Interaction Design | Pill-group selection is intuitive. Smart defaults reduce effort. Custom input only appears when needed. | A- |
| Trust & Friction | Meaningful data collection — this actually improves the product experience. FINISH button sets completion flag. | A- |
| Conversion Mechanics | This is the last step before app entry. Sets didFinishOnboardingWizard: true on success. | B+ |
| Technical UX | Saves to user settings via optimistic update disabled. Handles custom moniker trimming and empty-string fallback. | A- |
| Source Code Insights | Smart 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

Grade: B+
| Dimension | Assessment | Grade |
|---|---|---|
| Visual Design | Modal 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 Triggers | Recommended option (social proof/authority). Progressive disclosure (3 comfort levels). Low-commitment "View Example Note" for hesitant users. | A- |
| Interaction Design | Click any card to proceed. Skip button in footer. Closing dialog = skip. Desktop arrow icons suggest clickability. Short-screen responsive layout. | A- |
| Trust & Friction | Skip option available (important for autonomy). 2-second delay before showing prevents jarring popup. | B+ |
| Conversion Mechanics | Three paths: Record (stays on page), Demo (→ /demo), Sample (→ /notes/sample). Record is pushed as recommended. | A- |
| Technical UX | Prefetches demo and sample pages 500ms after dialog appears. Zustand state prevents re-showing. Group invitation dialog takes priority. | A |
| Source Code Insights | Record 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
| Rank | Friction Point | Severity | Step | Impact |
|---|---|---|---|---|
| 1 | Welcome step collects no data | High | Step 8 | Adds an entire unnecessary screen to the flow |
| 2 | Completion step collects no data | High | Step 11 | Another empty screen before value delivery |
| 3 | 7+ screens before product value | High | All | Landing → Signup → Welcome → Name → Specialty → Completion → NUX → App |
| 4 | Name step redundant for OAuth users | Medium | Step 9 | Google auth pre-fills both fields, user just clicks NEXT |
| 5 | "Record" NUX option doesn't auto-start | Medium | Step 12 | User selects "Record" but nothing happens — they must find the button |
| 6 | Price jump from $19 → $69 not transparent | Medium | Step 5 | "for the first month" is easily missed; could cause churn shock |
| 7 | No progress indicator on signup page | Low | Step 7 | User doesn't know onboarding is coming after signup |
| 8 | 2-second delay before NUX dialog | Low | Step 12 | User 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:
- Show a personalized note preview during onboarding (after specialty selection)
- Auto-play a 10-second demo during the completion step
- Show their configured note template after the specialty step
- Embed a sample note view directly in the NUX dialog
Drop-Off Risk Assessment
| Transition | Drop-Off Risk | Why |
|---|---|---|
| Landing → Signup | Medium | Standard conversion gap. CTA is clear but requires leaving the domain. |
| Signup → Welcome | Low | Users just committed to signing up, momentum carries them. |
| Welcome → Name | Medium-Low | If the welcome screen feels pointless, users may question the process. |
| Name → Specialty | Low | Natural progression. Specialty selection feels relevant. |
| Specialty → Completion | Low | Almost done, momentum is strong. |
| Completion → App | Low | Automatic redirect. |
| NUX Dialog → Action | High | This 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 → Return | Very High | If 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
| Dimension | Score (1-10) | Key Finding |
|---|---|---|
| Visual Design | 8 | Professional, clean, medical-appropriate palette. Consistent across all steps. |
| Copy Effectiveness | 7 | Strong on landing page, weak in onboarding (generic welcome/completion copy). |
| Psychological Triggers | 7 | Good social proof and trust signals on landing page. Missing urgency and scarcity throughout. |
| Interaction Design | 7 | Forms are well-designed but two empty screens waste user time. OAuth pre-fill underutilized. |
| Trust & Friction | 8 | Excellent trust signals (HIPAA, BAA, testimonials). Friction from unnecessary wizard steps. |
| Conversion Mechanics | 7 | Clear CTAs, good pricing display. But too many screens between intent and value delivery. |
| Technical UX | 8 | Solid tech stack (Astro, React, Clerk, PostHog). Good feature flag architecture. Smart prefetching. |
| Source Code Insights | 7 | Good tracking coverage. Feature flags enable experimentation. Some dead code (ScheduleACallStep). |
| Overall | 7.4 | Strong fundamentals with clear optimization opportunities in onboarding flow compression. |
Top 10 Recommendations
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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