Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline (Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/* packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
7.4 KiB
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.
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.chooseFocusinto 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