diff --git a/docs/LOGIN-ONBOARDING-REDIRECT-ANALYSIS.md b/docs/LOGIN-ONBOARDING-REDIRECT-ANALYSIS.md
new file mode 100644
index 00000000..c029a312
--- /dev/null
+++ b/docs/LOGIN-ONBOARDING-REDIRECT-ANALYSIS.md
@@ -0,0 +1,280 @@
+# Login/Onboarding Redirect Issues - Root Cause Analysis
+
+## Problem Statement
+
+User reports:
+1. After logging in, they get redirected to onboarding
+2. When first loading the site, it shows them as "logged in" but with incomplete profile
+3. Frustrated because users shouldn't be shown as logged in without a complete profile
+4. Confused by unnecessary onboarding redirects
+
+---
+
+## Root Causes Identified
+
+### Issue 1: Session Restoration Before Profile Completion Check
+
+**What happens:**
+1. User logs in successfully
+2. Session cookies are set by Supabase
+3. Page reloads or user navigates
+4. AuthContext initializes and restores session from cookies
+5. User appears "logged in" immediately
+6. **BUT:** Profile is still being fetched from database
+7. UI shows user as logged in while profile data loads
+8. Once profile loads, if incomplete, they might be redirected
+
+**Why it's confusing:**
+- User sees themselves logged in
+- But profile might still be loading
+- Then get redirected to onboarding
+- Feels like a bug rather than normal flow
+
+---
+
+### Issue 2: "Logged In By Default" Appearance
+
+**What's happening:**
+The AuthContext loads the session from browser storage immediately:
+- Supabase session stored in cookies/IndexedDB
+- On page load, `onAuthStateChange` fires with existing session
+- User state is set
+- UI shows user as authenticated
+
+**But:**
+- Profile data takes time to load from database
+- UI briefly shows "logged in" before profile is available
+- This can feel like users are logged in "by default"
+
+---
+
+### Issue 3: Onboarding Redirect Logic
+
+**Current logic in Dashboard.tsx (line 291):**
+```typescript
+if (!user && !authLoading) {
+ navigate("/onboarding", { replace: true });
+}
+```
+
+**Issues with this:**
+1. Redirects to onboarding if NO user
+2. But never checks if profile is INCOMPLETE
+3. Should either:
+ - Redirect to onboarding if profile NOT complete, OR
+ - Not redirect at all if profile is incomplete
+
+---
+
+## Why This Matters
+
+**Current behavior is confusing because:**
+
+1. **Mixed signals:**
+ - User sees themselves logged in
+ - Then gets redirected to onboarding
+ - Feels like auth is broken
+
+2. **No clear intent:**
+ - Onboarding is meant to COMPLETE the profile
+ - But if you're already logged in, you should be on dashboard
+ - Redirect should only happen if profile is incomplete
+
+3. **Session uncertainty:**
+ - Page shows user as authenticated
+ - But redirects as if they're not
+ - Unclear what state the app is in
+
+---
+
+## Solution
+
+### Fix 1: Don't Redirect to Onboarding from Dashboard
+
+**Current:** Line 291-295 in Dashboard.tsx checks `if (!user)` and redirects
+
+**Should be:**
+- If no user → stay on dashboard (it handles showing loading state)
+- If user but profile incomplete → show a prompt, don't redirect
+- If user and profile complete → show full dashboard
+
+**Change:**
+Remove the automatic redirect to onboarding. Instead:
+- Let Dashboard render
+- Show a "Complete Your Profile" banner if profile is incomplete
+- Let user click to go to onboarding, don't force redirect
+
+---
+
+### Fix 2: Clear Session Restoration UI
+
+**Current:** Session restored from cookies → UI shows user as logged in immediately
+
+**Should be:**
+- Show loading state while profile is being fetched
+- Don't show user as "logged in" until profile is loaded
+- Once profile loads, show actual dashboard
+
+**Change:**
+Ensure `loading` state is true while profile is being fetched, then show LoadingScreen instead of Dashboard
+
+---
+
+### Fix 3: Clarify Onboarding Intent
+
+**Current:** Onboarding shows up unexpectedly after login
+
+**Should be:**
+- Onboarding only when INTENTIONALLY started (user clicks "Complete Profile")
+- Not automatically triggered by auth state
+- Dashboard can show "Profile incomplete" message with link to onboarding
+
+**Change:**
+- Remove auto-redirect logic
+- Let Dashboard handle incomplete profile display
+- User explicitly chooses to complete profile
+
+---
+
+## Specific Code Changes Needed
+
+### In code/client/pages/Dashboard.tsx (Lines 283-311)
+
+**Current (WRONG):**
+```typescript
+useEffect(() => {
+ if (!user && !authLoading) {
+ navigate("/onboarding", { replace: true });
+ return;
+ }
+
+ if (user && profile) {
+ loadDashboardData();
+ }
+}, [user, profile, authLoading, navigate]);
+```
+
+**Should be:**
+```typescript
+useEffect(() => {
+ // Don't auto-redirect to onboarding
+ // Let Dashboard render and handle missing profile gracefully
+
+ if (user && profile) {
+ loadDashboardData();
+ }
+}, [user, profile, authLoading, navigate]);
+```
+
+---
+
+### In code/client/pages/Dashboard.tsx (Top level)
+
+**Add this check:**
+```typescript
+// If loading, show loading state
+if (authLoading) {
+ return
You need to be logged in to access the dashboard
+Please complete your profile to continue
+ +