This commit is contained in:
102
docs/addictiveness-audit-2026-05-28/SURFACES.md
Normal file
102
docs/addictiveness-audit-2026-05-28/SURFACES.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# Waggle's existing addictiveness surfaces (codebase inventory)
|
||||
**Date:** 2026-05-28 · **Method:** code-grounded inventory, not aspirational.
|
||||
|
||||
This is the raw surface area we score against in the baseline audit, mapped per rubric dimension.
|
||||
|
||||
## Apps in dock + dedicated screens (25 total)
|
||||
Chat · Room · Cockpit / Dashboard / MissionControl · Files (+Tabs) · Memory · Marketplace · Connectors · Capabilities · Settings · Vault · Agents · Approvals · Backup · Events · ScheduledJobs · Timeline · UserProfile · Voice · Launcher · Telemetry · TeamGovernance · ChatWindowInstance
|
||||
|
||||
## Overlays
|
||||
ContextRail · LoginBriefing · NotificationInbox · OnboardingTooltips · OnboardingWizard · PersonaSwitcher · SpawnAgentDialog · GlobalSearch · WorkspaceSwitcher · CreateWorkspaceDialog · EraseDataDialog · KeyboardShortcutsHelp · TrialExpiredModal · UpgradeModal
|
||||
|
||||
## Mapped to rubric
|
||||
|
||||
### A · TRIGGER (dims 1-2)
|
||||
| Surface | Evidence | Notes |
|
||||
|---|---|---|
|
||||
| Hotkeys / shortcuts | `useKeyboardShortcuts.ts`, `KeyboardShortcutsHelp.tsx` | Strong internal-app navigation, no external triggers (taskbar, desktop notification, email digest, browser extension) |
|
||||
| Notifications | `NotificationInbox.tsx`, region `Notifications (F8)` | In-app only |
|
||||
| Scheduled jobs | `ScheduledJobsApp.tsx` | Can trigger work on cron; surfaced via UI but not as a daily-driver hook yet |
|
||||
| Memory recall as internal-trigger fit | LoginBriefing "I REMEMBER" + ContextRail | Strong fit for "I forgot what I decided" itch |
|
||||
| No external trigger beyond dock app | — | Gap for dim 1 |
|
||||
|
||||
### B · ACTION (dims 3-4)
|
||||
| Surface | Evidence | Notes |
|
||||
|---|---|---|
|
||||
| LoginBriefing "I REMEMBER" + brag-line | `LoginBriefing.tsx` lines 187-211, brag line "N memories · N entities · N relations" | Strong wow for **returning** users; near-empty for first-session |
|
||||
| BootScreen → desktop | `BootScreen.tsx` (2-sec animated) → Desktop | Fast first surface |
|
||||
| Dock click → app open | `Dock.tsx` 10 apps + Spawn Agent | ≤ 1 click to top-level surface |
|
||||
| Chat → type → send | Typical 3 clicks dock→chat→submit | Good |
|
||||
| Spawn Agent dedicated button | `SpawnAgentDialog.tsx` | One-shot agent path is a discrete affordance |
|
||||
|
||||
### C · VARIABLE REWARD (dims 5-7)
|
||||
|
||||
**Reward of the tribe (dim 5):**
|
||||
| Surface | Evidence | Notes |
|
||||
|---|---|---|
|
||||
| Team workspaces | TEAMS tier | Shared workspaces with peers |
|
||||
| Team presence in chat header | `ChatApp.tsx` line 793-813 | Avatars of co-workers with online status |
|
||||
| TeamGovernanceApp | overlay | Governance, sharing rules |
|
||||
| Free / individual users | — | **No social loop** — major gap for solo / Free tier addictiveness |
|
||||
|
||||
**Reward of the hunt (dim 6):**
|
||||
| Surface | Evidence | Notes |
|
||||
|---|---|---|
|
||||
| LoginBriefing importance-ranked highlights | `selectBriefingHighlights` | Surfaces 3 surprising memories per launch |
|
||||
| HybridSearch (FTS5 + vec0, fused via RRF) | `packages/core/src/mind/search.ts` | Surprise connections — but no UI "look what I found for you" surface yet |
|
||||
| KnowledgeGraph | `packages/core/src/mind/knowledge.ts` | Entity-relation surfaces in WeaverPanel + Memory app |
|
||||
| Wiki Compiler | 240 pages from 177 frames (memory entry 2026-05-05) | Synthesized synthesis pages — discovery surface |
|
||||
|
||||
**Reward of the self (dim 7):**
|
||||
| Surface | Evidence | Notes |
|
||||
|---|---|---|
|
||||
| Custom personas | `loadCustomPersonas()`, `custom-personas.ts` | User can author their own agent identity |
|
||||
| Identity layer | `IdentityResponse {name, role, department, personality, system_prompt}` | Personalisable user identity that flows into chat |
|
||||
| Brand voice (per skills marketplace) | `brand-voice:enforce-voice` skill | Personalisation that compounds |
|
||||
| Skills marketplace | `MarketplaceApp.tsx` | Install + customize skills |
|
||||
| Spawn Agent → save as workflow | `WorkflowComposer`, `workflow-templates.ts` | Reify ad-hoc agent runs into reusable workflows |
|
||||
|
||||
### D · INVESTMENT (dims 8-9)
|
||||
|
||||
**Stored personal data (dim 8):**
|
||||
| Layer | Evidence | Compounds? |
|
||||
|---|---|---|
|
||||
| FrameStore (memory frames) | `packages/core/src/mind/frames.ts` | YES — per-frame importance, dedup, compaction |
|
||||
| KnowledgeGraph | `knowledge.ts` | YES — entity + relation graph grows |
|
||||
| IdentityLayer | `identity.ts` | YES — user profile persists |
|
||||
| AwarenessLayer | `awareness.ts` | YES — active task/state |
|
||||
| Files (virtual + local + team) | `FilesApp.tsx` | YES — user-authored artefacts |
|
||||
| Wiki pages | `packages/wiki-compiler` | YES — synthesized knowledge |
|
||||
| Custom personas, custom skills | `custom-personas.ts`, `MarketplaceApp.tsx` | YES — user-shaped tooling |
|
||||
|
||||
**Switching cost (dim 9):**
|
||||
| Mechanic | Evidence | Notes |
|
||||
|---|---|---|
|
||||
| Backup app | `BackupApp.tsx` | Exists — exports something. Verify what's exportable. |
|
||||
| Memory-import | `packages/core/src/memory-import.ts` | Can re-ingest exports |
|
||||
| Hive-mind OSS shared substrate | per CLAUDE.md §7.5 | The MEMORY substrate is OSS — user can technically take their memory with them, but the harvest pipelines, personas, skills, wiki, and connector integrations stay in Waggle. **High switching cost on the surrounding layers.** |
|
||||
|
||||
### "The one tool" coverage (dim 10)
|
||||
| Workflow | Waggle has it? | Gap |
|
||||
|---|---|---|
|
||||
| General chat / Q&A | YES (ChatApp) | — |
|
||||
| Document creation (.docx, .pptx) | Partial — skills + Files; demonstrated in P1 audit | Native editor missing |
|
||||
| Notes / recall | YES (Memory + ContextRail) | — |
|
||||
| Multi-agent collab | YES (Room) | — |
|
||||
| Voice input | YES (VoiceApp) | — |
|
||||
| Skills marketplace | YES | — |
|
||||
| Connectors / integrations | YES (ConnectorsApp; 148 MCP catalog) | Runtime install is the open product gap (P1 found it) |
|
||||
| Calendar / email native | NO | Gap |
|
||||
| Spreadsheet | NO | Gap (xlsx skill exists but no native UI) |
|
||||
| Code editor | NO (intentional — Waggle is not Claude Code) | Not a gap |
|
||||
| Browse / scrape | YES (apify, firecrawl skills) | — |
|
||||
| Image / video | Skills (Canva, Gamma, Invideo) | No native generation surface |
|
||||
|
||||
## Universal observations (pre-persona)
|
||||
- Returning users have a strong reward layer (brag-line, I REMEMBER, accumulated stats).
|
||||
- New users (day 0) have weaker hook material — onboarding wizard is functional but doesn't deliver the "this remembers me" wow until session 2+.
|
||||
- Social loops only exist in TEAMS tier. Free/individual gets no tribe reward.
|
||||
- External triggers are weak — no taskbar persistence, no scheduled digest emails, no browser extension.
|
||||
- Investment surfaces are strong — multiple layers compound.
|
||||
|
||||
These observations seed the per-persona scoring once benchmarks return.
|
||||
Reference in New Issue
Block a user