# evOo — Product rules (Gesamterfahrung) ## Design mantra (apply ruthlessly) **EINFACHHEIT und Durchgängigkeit. Dennoch super flexibel. Weniger ist Mehr.** | Rule | Product | |------|---------| | **One model** | Unterhaltungen (1:1 / Gruppe), Ordner/Projekte, specialist Oos | | **One language** | Same stage, sound, and transcript grammar everywhere — no one-off chrome | | **Hide power** | Depth in specialists and settings — not every control on first screen | | **Cut clutter** | Fewer, stronger affordances; stub/TODO lists stay in docs, not UI | When a slice gets feature-heavy: prune to the simplest coherent path that still delivers Stage + sound + calm onboarding. ## Conversations, not agent rows The product is organized as **Unterhaltungen** (see `VOICE.md`). **Team** lists your Oos; opening one starts a **conversation**, not “the agent app”. | Type | Who | |------|-----| | 1:1 Unterhaltung | One Oo | | Gruppenunterhaltung | Multiple Oos (+ humans later) — **fun factor essential** (see `docs/GROUP-CONVERSATIONS.md`) | | Projekte | Group conversations in **Ordner** (`BotSection` folders) | ## Deepest personalization evOo must adapt to each user **more individually than any other app**. Persona/crew fit is **lifestyle-agnostic** — office worker, club/scene person, hardcore nerd: same mechanism, simplest path to what *they* want. | Companion tone | When | |----------------|------| | **Geek-peer / Fachsimpeln** | User wants depth — match enthusiasm, stay in lane | | **Quiet-doer** | User wants outcomes — never act like we know better | Onboarding harvest infers **help & vibe** (`user-help-vibe.ts` → `MEMORY.md`), then spawn/select specialist Oos and Unterhaltungen — **not one personality for everyone**. See `docs/PERSONA-SELECTION.md`. ## Accessibility of ambition Power-user literacy must **not** be required. Same product, radically different crews/Unterhaltungen — **domain excellence** in each case. | User | Gets | |------|------| | Mom, Thermomix | That — simply, excellently | | Hard math | Specialist Oo at **very high** level | | Software development | Specialist Oo at **very high** level | | Axis | Rule | |------|------| | **Skill floor** | Grandma-simple entry — no jargon gate, no setup maze | | **Skill ceiling** | Expert-grade **per specialty** — depth when wanted | | **Anti-pattern** | Wunderwuzzi mediocre at everything | Simple entry, deep ceiling. UI and onboarding copy stay calm and plain; specialist lanes carry the depth. ## Emergent ensemble **Das Ganze ist mehr als die Summe seiner Teile.** Power comes from **more individualists and differences** — a crew of distinct specialists with chemistry — not from one mega-agent. Capability **emerges** when diverse Oos meet in Unterhaltungen and Gruppen. | Pillar | Why | |--------|-----| | **No Wunderwuzzi** | Depth per lane beats one mediocre generalist | | **Specialty ceiling** | Each Oo expert-grade in its domain | | **Fun friction** | Banter and pushback between personalities — useful spark | | **Ensemble > solo** | Group stage + handoffs make the *crew* feel stronger than any single Oo | Chief coordinates; **the crew delivers**. Product, prompts, and stage should never imply one bot could replace the group. ## No Wunderwuzzi Every Oo has a **clear specialty**. There is no do-everything generalist personality. - Persona archetypes map to templates (CTO, Fixer, quant, engineer, …). - Unmatched bots fall back to **`specialist`**, not “companion/helper”. - **Chief** (first onboarding bot) is seeded as **Chief of Staff** — coordinates the crew, does not replace specialists. - Group encounters show **active speaker + ensemble**; collaboration is the model — **banter & chemistry**, not corporate-dull committee. When adding templates or copy: narrow scope, explicit role line, defer out-of-lane work to other Oos. ## First-run emotional north star The app **sets itself up**. It discovers what it can (profile, tools, crew) and shows the user: > *Don't stress. We're here now. Trust us — there are many of us. We've got this.* | Principle | Product | |-----------|---------| | **Calm collective crew** | Reassurance copy + discovery progress (`OnboardingDiscoveryShell`), not a long wizard | | **Honest discovery** | Progress bar + one active step in onboarding — future sources stay in docs, not UI laundry lists | | **Specialists** | Chief of Staff + crew framing; no Wunderwuzzi | Surfaces: `Welcome.tsx` (spirit), `Onboarding.tsx` (progress + minimal model/tools steps). ## Onboarding → user profile During onboarding, harvest **respectful local signals** into the existing **user-scoped `MEMORY.md`** (space memory — not a parallel brain): | Signal | Source | |--------|--------| | Name, email | `rpc.me()` | | Timezone | `Intl` / `localTimezone()` | | Locale, UI locale | `navigator.language`, saved UI pref | | Languages, platform | `navigator` | | Default model, computer host | bootstrap `Me` | Implementation: | Layer | Path | |-------|------| | Profile harvest | `apps/web/src/lib/user-profile-harvest.ts` | | Help & vibe inference | `apps/web/src/lib/user-help-vibe.ts` | | Persona/crew selection notes | `docs/PERSONA-SELECTION.md` | | Discovery plan + progress | `apps/web/src/lib/onboarding-discovery.ts` | | Reassurance UI | `apps/web/src/components/onboarding/OnboardingDiscoveryShell.tsx` | Called from `Onboarding.tsx` after first bot ensure. ## Oo relationship over time | Principle | Meaning | |-----------|---------| | **Always on** | Presence when needed — 24/7 feeling without theater | | **Compounding** | Stronger/more attuned the more the user works with their Oos (memory + threads) | | **Never creepy** | Warm competence; no surveillance vibes | | **Not yes-men** | Respectful pushback — don't just echo | Seeded in user `MEMORY.md` (`user-relationship-contract.ts`). Persona copy and prompts follow. Details: `docs/OO-RELATIONSHIP.md`. ## Memory and the user model | Store | Holds | Written by | |-------|-------|------------| | `UserProfile` + `UserFact` (Settings → About you) | The user model: who the user is, across spaces; a fact can be limited to chosen spaces | `update_user_profile`, onboarding, chat consolidation, the user | | User-scoped `MEMORY.md` (Settings → Memory) | Space notes shared by the bots of one space | The user, onboarding harvest | | Bot-scoped `MEMORY.md` (bot → Knowledge) | One bot's notes in one space | `remember` appends dated notes; `mode: "replace"` rewrites | Space notes are not migrated into facts: facts are short, consented statements about the user, space notes are free-form context for one space. A memory document holds at most 16 KB, so a bot's notes and the space notes both reach the prompt; when it is full, `remember` asks the bot to condense it. ## Capability vision — ambient & video (future roadmap) **This PR does not build surveillance.** Current Gesamterfahrung stays **Stage + sound + calm onboarding** (`VOICE.md`). The following is Ingo's long-term direction — optional layers only. | Capability | Rule | |------------|------| | **Video calls** | Optional — user-initiated; audio-only remains the simpler default | | **Ambient help** | Oo handles practical presence in the background; user need not sit in front of the app | | **"It's just an Oo"** | Presence without performative attention-seeking — compounding via use, not constant face time | | **Home metaphors (far future)** | Could replace alarm system or surveillance camera **only** with strict opt-in — never creepy, never default-on | ### Consent & anti-creep gates - No always-on camera/mic without **explicit, revocable consent UX** - Any sensing feature must pass *earned or creepy?* (`docs/OO-RELATIONSHIP.md`) - Specialist lanes for home/security — not one mega-agent watching everything - Respectful pushback when a setup would be over-broad or unsafe Details and encounter grammar: `VOICE.md` § Ambient & video presence. ### TODO (future passes) - Merge focus choice from `onboarding.chooseFocus` into help/vibe (`mergeHelpVibeHints` — mapping exists, wire on answer) - Merge connector authorizations into profile - Wire **projects-on-disk** / **habits-routines** / **pain-points** discovery sources (currently shown as planned stubs) - Suggested Unterhaltungen + specialist Oos + project folders from discovery results - Optional explicit name confirmation step in onboarding UI