# Gap Card — S13 · Who Are You (Onboarding Profile) > UX-refactor planning artifact. Execution model is **in-place incremental refactor** of `apps/web` + > targeted backend extension. Every claim below is grounded in a real file. PRD = source of truth; > mockup is directional (PRD §24). Screen index: **Onboarding Flow PRD §12.12 step 2** ("Who Are You"). --- ## 1. Screen & purpose The second onboarding step: capture the user's professional context so Waggle can personalize and recommend. Per PRD §12.12 and the blueprint screen-spec table (PAGE 14, row 13): "Capture role, industry, work type, team size and goals." Blueprint acceptance: **"Profile drives recommendations but can be edited later."** Blueprint states: `Empty; partially complete; validation; saved`. The mockup (`screen_13_who_are_you.png`) shows a single-step form inside the onboarding shell: left rail step list (Welcome / Who are you / Tool discovery / Memory import / Review & confirm) + a "Your data is private" reassurance card; center form with **Name, Role, Industry, Work type, Team size, and a "What are your goals with Waggle?" multi-select chip group** (Build a second brain / Improve team productivity / Automate recurring work / Make better decisions / Scale the business) + free-text "Add other goal"; a right-hand live **"Your profile" preview panel** that mirrors the form as the user types; Back / Continue footer. Mockup is directional — PRD/blueprint acceptance wins. This profile drives downstream screens: Tool Discovery (S14) recommendations, Memory Import (S15) source suggestions, Workspace Creation (S17) template/persona pre-fill, and the Home Cockpit greeting. --- ## 2. Required states (PRD/Blueprint) From the blueprint screen-spec (PAGE 14, row 13) + PRD §14.1 global-state mandate: - **Empty** — fresh form, nothing entered. - **Partially complete** — some fields filled (Continue still allowed; profile is editable later). - **Validation** — surface invalid/missing required input (blueprint lists "validation" as a state; PRD acceptance says it must not block — soft validation, not a hard gate). - **Saved** — profile persisted; advance to Tool Discovery. - **Loading** (PRD §14.1) — restoring a resumed/partial profile on re-entry. - **Offline / local-only** (PRD §14.1, §6.7) — sidecar unreachable; the step must still let the user type and continue (write deferred / retried), mirroring the wizard's existing "created locally, sync later" fallback (`OnboardingWizard.tsx:286-288`). PRD §12.12 acceptance criteria that bind this screen: "Onboarding asks user questions, not infrastructure questions"; "Profile drives recommendations." PRD §7.1 activation metric: "% of new users who complete onboarding." --- ## 3. Current state in repo — disposition: **partial** (rework + create-new) There is **no onboarding "Who Are You" profile step today.** The profile-capture *capability* exists post-onboarding as a separate app, and the onboarding wizard does NOT collect it. Two surfaces are relevant; both partially overlap the requirement: **(a) `OnboardingWizard.tsx`** (`apps/web/src/components/os/overlays/OnboardingWizard.tsx`) — the first-launch wizard. Its actual step order (`STEP_NAMES`, line 35) is: `welcome → why-waggle → tier → memory-import → template → persona → api-key → ready` (8 steps, 0-indexed; rendered via the `step===N` switch at lines 499-571). **There is no profile/identity-capture step at all.** Steps map to `onboarding/` components: `WelcomeStep, WhyWaggleStep, TierStep, ImportStep, TemplateStep, PersonaStep, ModelTierStep, ReadyStep` (`onboarding/index.ts`). The wizard's data model (`OnboardingState` in `hooks/useOnboarding.ts`) tracks `step/tier/templateId/personaId/workspaceId/ apiKeySet` — **no profile fields.** Disposition for the wizard: **rework** — insert a new profile step and a `WhoAreYouStep` component; widen `OnboardingState` minimally (or post directly to `/api/profile`). > Note: the wizard's IA (tier picker, API-key step, model-tier step) is the OLD onboarding, not the > PRD §12.12 flow (Welcome → Who Are You → Tool Discovery → Memory Import → Memory Review → Workspace > Creation → Home). PRD §20.2 explicitly lists "Onboarding wizard → simplify to user-oriented 5-step > setup plus workspace creation." S13 is one slice of that larger onboarding rework; this card scopes > only the profile step, but the planner must sequence it inside the onboarding-IA rework (see §7). **(b) `UserProfileApp.tsx`** (`apps/web/src/components/os/apps/UserProfileApp.tsx`, 533 LOC) — the post-onboarding "My Profile" app (dock id `profile`). A 4-tab surface: **Identity** (Name/Role/Company/ Industry/Bio + "Research Me" + harvest-suggestion accept/dismiss banner, lines 242-343), Writing Style, Brand & Templates, Interests (interests chips + language, lines 483-520). Its Identity tab already renders the heading "**Who Are You?**" (line 245) and captures Name/Role/Company/Industry/Bio via `adapter.getProfile()` / `adapter.updateProfile()` (lines 86-102, 120-133). This is the **reuse target** for the form fields, validation pattern, and adapter wiring — but it is NOT an onboarding step, it has NO Work type / Team size / Goals, and it has NO live preview panel. Disposition: **keep-promote** the field/adapter patterns; extract a shared profile-form so the onboarding step and the app don't diverge. **Net:** the requirement is **partial** — backend persistence (`/api/profile`) + a structurally similar form (UserProfileApp Identity tab) exist, but the *onboarding step itself*, the *3 new fields* (work type / team size / goals), and the *live preview panel* are net-new frontend. --- ## 4. Frontend work **Create:** - `apps/web/src/components/os/overlays/onboarding/WhoAreYouStep.tsx` — the new step component (matches the `*Step.tsx` sibling convention; default-exported from `onboarding/index.ts`). Renders: Name (text), Role (text), Industry (`