Skip to content

Personalized onboarding: goals-driven setup that shapes identity, soul, and prompts #3

@matthewod11-stack

Description

@matthewod11-stack

Summary

Transform onboarding from a data-collection exercise into a goals-driven conversation that deeply personalizes Gary — shaping IDENTITY.md, SOUL.md, prompt selection, and priority weighting based on what the user actually needs help with. The current onboarding asks who you are; this asks what you need and adapts everything accordingly.

Why This Matters

Every Gary deployment is different:

  • A founder needs email triage + calendar prep + investor research
  • A PM needs Slack synthesis + meeting prep + project tracking
  • Someone using Gary as a personal assistant wants personal email, family calendar, research, reminders — not Slack channels
  • A developer might want GitHub activity + code review prep + minimal email

Right now, everyone gets the same prompts, the same SOUL.md, the same briefing format. Personalization makes Gary feel yours instead of generic.

Proposed Flow

Phase 1: Goals & Needs Assessment

Use AskUserQuestion with a mix of multiple-choice (select all that apply) and free-form questions:

Q1: "What do you most need help with?" (select all that apply)

  • Email triage — too many emails, need someone to sort signal from noise
  • Calendar management — meeting prep, schedule awareness, conflict detection
  • Slack/messaging synthesis — keeping up with channels without reading everything
  • Research — staying informed on topics, competitors, industry
  • Task/project tracking — keeping commitments visible, following up
  • Personal organization — family calendar, personal email, life admin
  • Writing/drafting — emails, docs, announcements
  • Other: ___

Q2: "How would you describe your work style?" (pick one)

  • Fast-paced, give me bullets and action items only
  • Thorough — I want context and reasoning
  • Casual — talk to me like a friend who happens to be organized
  • Professional — clean, structured, no personality needed

Q3: "What's your biggest recurring frustration?" (free form)

  • This surfaces the pain point that Gary should prioritize solving

Q4: "Is this primarily for work, personal life, or both?"

  • Work only
  • Personal only
  • Both — but work is primary
  • Both — roughly equal

Q5: "What tools/surfaces do you check most?" (rank or select top 3)

  • Email, Slack, Calendar, GitHub, Linear/Jira, Notion, Discord, other

Q6: (If "personal" selected) "What personal things should Gary help with?"

  • Family calendar coordination
  • Personal email management
  • Research / learning
  • Health / fitness tracking
  • Finance / bills
  • Travel planning
  • Other: ___

Phase 2: Identity Generation

Based on answers, Claude generates a customized IDENTITY.md:

# IDENTITY.md — Who Am I?

- **Name:** Gary (or user's chosen name)
- **Role:** Personal productivity assistant (work-focused)
- **Vibe:** Direct and action-oriented  ← derived from Q2
- **Primary focus:** Email triage, meeting prep  ← derived from Q1
- **Secondary focus:** Slack synthesis  ← derived from Q1
- **Pain point:** "I miss important emails because they're buried in noise"  ← from Q3
- **Human:** [name from existing onboarding]

Phase 3: Soul Generation

SOUL.md gets generated from a personality questionnaire:

Q7: "When Gary gives you information, do you prefer:"

  • Just the answer, no explanation
  • Answer + brief reasoning
  • Full context so I can make my own call

Q8: "Should Gary proactively suggest things, or only respond when asked?"

  • Be proactive — surface things I might miss
  • Mostly reactive — I'll ask when I need something
  • Proactive for urgent things only

Q9: "How should Gary handle uncertainty?"

  • Flag it clearly and let me decide
  • Make a best guess and note the uncertainty
  • Ask me before proceeding

Q10: "Pick the vibe that feels right:"

  • Sharp coworker who knows everything
  • Calm executive assistant
  • Enthusiastic teammate
  • No personality — just the data

These answers generate a personalized SOUL.md with the right tone, proactivity level, and communication style.

Phase 4: Prompt Adaptation

Based on Q1/Q4/Q5 answers, adjust prompt behavior:

User Need Prompt Impact
Email-heavy Briefing leads with email triage, expands email section
Slack-heavy Briefing leads with Slack digest, more channel coverage
Personal mode Skip work-oriented language, add personal calendar/email sections
Research-focused Enable research-refresh task, expand knowledge-compile
Minimal comms Shorter briefings, bullet-only format, skip narrative sections
Meeting-heavy Prioritize meeting-prep frequency, expand prep depth

Implementation options:

  • Option A: Conditional sections in prompt files (e.g., <!-- IF email_priority == high -->)
  • Option B: Generate user-specific prompt variants during onboarding
  • Option C: A config/user-profile.json that prompts read at runtime to adjust behavior

Recommend Option C — single config file, prompts check it, easy to update later without re-onboarding.

Phase 5: Import Existing Identity

Support bringing identity from other AI tools:

"Do you already have an AI assistant identity or memory you'd like to import?"

  • Claude Desktop (check ~/.claude/ for memory/identity files)
  • Claude Code CLI (check for CLAUDE.md in home or common project dirs)
  • ChatGPT (paste or upload custom instructions / memory export)
  • Other (paste text)
  • No, start fresh

If importing: parse the content, extract relevant personality/preference signals, merge into IDENTITY.md and SOUL.md rather than overwriting.

Technical Implementation

Config File: config/user-profile.json

{
  "priorities": ["email", "calendar", "slack"],
  "mode": "work_primary",
  "style": "direct_action",
  "proactivity": "proactive_urgent",
  "uncertainty_handling": "flag_and_decide",
  "vibe": "sharp_coworker",
  "pain_point": "Missing important emails in noise",
  "personal_areas": [],
  "imported_from": null
}

Prompt Integration

Prompts read user-profile.json at runtime:

## User Profile
Read `config/user-profile.json` to understand what this user cares about most.
Adjust section ordering and depth based on their priorities.

AskUserQuestion Usage

Use AskUserQuestion tool throughout — it supports:

  • Multiple choice (select one)
  • Free-form text
  • Can be called sequentially for a conversational flow

For "select all that apply" — present as numbered list, ask user to type numbers (e.g., "1, 3, 5") or use multiple sequential single-select questions.

Verification

  • Onboarding asks goals/needs questions before data source setup
  • IDENTITY.md is generated from answers (not template defaults)
  • SOUL.md is generated from personality questions
  • config/user-profile.json is written with parsed preferences
  • At least one prompt (morning-briefing) reads user-profile.json and adapts
  • Import path works for at least one source (Claude Desktop memory)
  • User can re-run personalization without losing data source connections

Automation Hints

scope: CLAUDE.md (onboarding section), IDENTITY.md, SOUL.md, config/user-profile.json (new), prompts/morning-briefing.md
do-not-touch: SETUP.md, prompts/shared/, data source connectors
approach: extend-onboarding-flow
risk: medium (touches core onboarding UX — test with a fresh clone)
max-files-changed: 8
blocked-by: none (can build independently of #2 onboarding redesign, but should integrate with it)
bail-if: AskUserQuestion tool unavailable or onboarding redesign conflicts

Priority

Medium-High — this is a differentiator. Generic AI assistants are everywhere; one that adapts to your workflow is the value prop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions