---
title: "Memory.Wiki v8 Plan"
url: https://memory.wiki/SKaY7VJP
updated: 2026-05-31T03:26:41.669Z
hub: https://memory.wiki/hub/raymindai
concept_count: 12
source: "mcp"
---
# Memory.Wiki v8 Plan

> **Founder goal**: 지속 가능한 craftsman SaaS. 5년에 ARR $2-5M. NPS 70+. 1k-10k paid 사용자가 정말로 *사랑하는* product. 폭발 욕심 버림. 안정 + 자유 + 자기 product 의 장인.

> **Internal thesis** (사용자에게 보이지 않음): The graph is the product. Cross-AI is the structural wedge giants cannot build. **External thesis** (사용자가 보는 것): Stop re-explaining your context to every AI.

> **Last revised**: 2026-05-23 **Supersedes**: v7-revised ([memory.wiki/nvF3Li2x](https://memory.wiki/nvF3Li2x))

---

# 1. The H1

```
Stop re-explaining your context to every AI.
Put your knowledge in one URL they can all read.
```

Sub-head:

```
Yours, your team's, or your community's —
one URL every AI fetches.
```

Tertiary (3-stage diagram label):

```
Capture anything. AI organizes. Use everywhere.
```

---

# 2. Strategic Framework

```
┌─────────────┐   ┌─────────────┐   ┌─────────────┐
│   CAPTURE   │ → │  ORGANIZE   │ → │     USE     │
│             │   │             │   │             │
│  사용자 +   │   │  AI 가 자동 │   │  Cross-AI   │
│  AI 자동    │   │  + 사용자   │   │  consumption│
│             │   │  edit       │   │             │
└─────────────┘   └─────────────┘   └─────────────┘
       ↑                                    ↓
       └─── Indispensability loop ──────────┘
```

**Indispensability metric (north star)**: 사용자 재설명 횟수 감소. 측정: Weekly Recapture Rate (목표 12주 후 100명 active 중 30명이 20+ captures/week).

---

# 3. URL Architecture — 3 레벨

```
L1: memory.wiki/<id>             ← Document (12자 nanoid)
L2: memory.wiki/b/<id>           ← Bundle (collection)
L3: memory.wiki/@<username>      ← User (identity, Mastodon/Bluesky 패턴)
```

**Dual-response per URL** (same URL, different body):

| Consumer | URL | 응답 |
| --- | --- | --- |
| 브라우저 | `memory.wiki/@raymind` | HTML (timeline + Galaxy tab + Bundles tab) |
| AI (ChatGPT/Claude/Cursor) | 같은 URL | markdown digest (token-budgeted, 8-16KB) |
| `.md` 접미사 | `memory.wiki/@raymind.md` | text/markdown 명시적 |

서버가 UA + Accept + sec-fetch-dest 헤더 기반 자동 분기. 사용자는 single URL 만 알면 됨.

**기존 호환**:

- `/hub/<slug>` → `/@<username>` 301 redirect
- `profiles.hub_slug` DB column 그대로 (internal name 변경 X)

---

# 4. Dual-layer Storage (원본 + AI metadata)

```
ORIGINAL (immutable)            AI LAYER (replaceable)
사용자가 capture 한 그대로      AI 가 만든 metadata
- markdown body                  - tags, cluster_id
- source URL, timestamp          - summary, related_ids
- attribution (누가 만들었나)    - agent_id, generated_at
영구히 변하지 않음               언제든 재생성 가능
```

**UI**: 모든 entry 에 view toggle: `📄 Original` ↔ `✨ Organized`. AI 가 만든 metadata 는 별도 element, 원본 위에 안 덮어씀.

**Lock toggle**: 사용자가 "이 entry 는 AI 가 못 건드림" 명시 가능.

---

# 5. Auto-organize Policy

## Type 1: Metadata (no approval, no new entity)

| 무엇 | 언제 |
| --- | --- |
| Tags (5-10 per doc) | capture 즉시 |
| Cluster 할당 | capture 즉시 |
| 1-2 문장 summary | capture 즉시 |
| Related docs | capture + 매일 재계산 |
| Entity extraction (이름/장소) | capture 즉시 |

## Type 2: Bundle (My + AI 두 namespace)

```
memory.wiki/@raymind
│
├── 📁 My Bundles  (사용자가 명시 생성)
└── ✨ AI Bundles   (AI 자동 생성)
```

**Permission matrix**:

| AI 동작 | My Bundles | AI Bundles |
| --- | --- | --- |
| 새 bundle 생성 | ✗ | ✓ 자동 |
| 기존 bundle 에 doc 추가 | confirm 필요 | ✓ 자동 |
| Bundle 이름/설명 변경 | ✗ | ✓ 자동 |
| Bundle 삭제 | ✗ | ✓ 자동 (cluster 사라지면) |

**Conversion**: AI Bundle → My Bundle 1-tap, 그러면 AI 가 자동 update 멈춤. 양방향 가능.

## Type 3: Synthesis docs (AI 가 새 doc 생성) — **DROPPED 2026-05-28**

원래 plan: Bundle summary doc / Weekly digest / Synthesis across docs / About draft 를 AI 가 미리 생성.

**Drop 결정 (founder, 2026-05-28)**: W8 paste-anywhere 가 이미 USE surface 를 담당. 사용자가 `/@<me>` 를 ChatGPT/Claude/Cursor 에 붙이고 "summarize this / draft an About / weekly digest" 라고 직접 시키면 끝. 미리 만들어 저장하면:

- LLM 비용 발생
- Stale 문제 (원본은 바뀌고 synthesis 는 멈춤)
- USE surface 중복 (paste-anywhere 와 같은 일)

대신 paste-anywhere 가 USE 의 single source 가 됨. Type 3 가 정말 필요하면 (예: 사용자가 weekly digest 가 자동으로 도착하길 원함) post-launch 에 재검토.
# 6. Attribution Model

매 entry/bundle/doc 에 generation history:

```json
{
  "creator_type": "user" | "ai",
  "agent": "memory-wiki-background" | "claude-sonnet-4.6" | "gpt-4o" | "custom-gpt" | "cursor-mcp",
  "triggered_by": "user-capture" | "weekly-digest" | "user-on-demand" | "auto-cluster",
  "generated_at": "2026-05-23T10:00:00Z",
  "user_edits": 0
}
```

UI:

- User-written: 사용자 아바타 + dot
- AI-generated: ✨ + agent 이름 (Claude / GPT / background)
- Edited-by-you (was AI): 펜 아이콘 + "originated from AI"

---

# 7. Collaboration Model

**3 tier**:

## Tier A — Sharing primitives (v8 launch)

| 항목 | 변경 |
| --- | --- |
| Doc visibility | public/private/restricted (기존 유지) |
| **Bundle visibility** | 신규: public/unlisted/private/restricted |
| **Bundle collaborators** | 신규: 여러 명 edit 가능 (max 5) |
| **@username public profile** | 신규: 사용자가 어떤 doc 노출할지 선택 |
| **Presence indicators** | avatars + 실시간 cursor (Yjs 위) |
| **Comments** | doc 별 thread |

## Tier B — AI 협업 (v8 launch)

- Shared bundle 의 AI auto-organize 가 collaborative (모든 member capture 통합 cluster)
- `@user/bundle` URL paste → 모든 사람의 context 합쳐 AI 가 받음
- Attribution 으로 "@raymind 가 추가" 명시

## Tier C — Team workspace (v9+, 미룸)

| 항목 | 미루는 이유 |
| --- | --- |
| Multi-tenant workspace | DB schema 큰 변화 |
| Role-based access (Admin/Editor/Viewer) | UX 복잡, B2B onboarding |
| Per-seat 청구 | Stripe flow 분기 |
| SSO / SAML | Enterprise 영역 |
| Audit log | compliance 영역 |

Tier C 는 **PMF 후 6-12 개월에**.

---

# 8. Mobile Strategy

**Native iOS + Android** (Tier 1 surface, 신규 build).

## v8 Native scope

| Capability | iOS | Android |
| --- | --- | --- |
| Share Extension (모든 앱 → memory.wiki) | ✓ | ✓ |
| 카메라 → 즉시 capture (OCR 포함) | ✓ | ✓ |
| 스크린샷 자동 처리 (한국 culture) | ✓ | ✓ |
| Spotlight / Search 통합 | ✓ | ✓ |
| Widget (홈 + 잠금 화면) | ✓ | ✓ |
| Background sync (offline first) | ✓ | ✓ |
| Push notification | ✓ | ✓ |
| Main UI: timeline + quick capture | ✓ | ✓ |

**제외**: Voice memo (한국 cultural fit 약함), Action Extension, Live Activities, 키보드 확장 → v8.1 / v9.

---

# 9. Best UX — 8 criteria

각 feature ship 전 8 기준 통과 필수:

| 기준 | 기준선 |
| --- | --- |
| Capture latency | &lt; 1 초 (tap → 완료 알림) |
| Open latency | &lt; 500ms (URL → LCP) |
| Action requirement | 모든 action 1 tap 또는 1 keystroke |
| Surprise factor | 0 (AI 가 사용자 데이터 변경 안 함) |
| Cross-surface consistency | 모바일 / 데스크탑 / Chrome ext / Cursor → 같은 mental model |
| Beauty | Linear / Granola / Things 수준 polish |
| Animation feel | calm + responsive + 60fps |
| Type & spacing | 모든 화면에서 일관 grid + 타이포 |

→ 통과 못한 feature 는 ship 안 함. **개수 &lt; 마무리.**

---

# 10. Surface Plan — 9 surfaces, 3 Tier

## Tier 1 — Heavy work

| Surface | 작업 |
| --- | --- |
| `apps/web` | 전면 재작업 (3-stage, dual-namespace, /@user, dual response, attribution, collab, branding) |
| `apps/ios-native` | 신규 build (Share Ext, 카메라, Widget, Spotlight, sync) |
| `apps/android-native` | 신규 build (동일) |

## Tier 2 — Medium

| Surface | 작업 |
| --- | --- |
| `apps/chrome-extension` | AI 별 capture 최적화 + Inject button + AI Bundle 인지 |
| `packages/mcp` | Organize ops + digest endpoints + attribution metadata |

## Tier 3 — Light (branding + API compat)

| Surface | 작업 |
| --- | --- |
| `apps/vscode-extension` | branding + new API + Copy-as-context command |
| `apps/desktop` | branding + new schema 호환 |
| `apps/cli` | 명령어 점검 + branding |
| `apps/quicklook` | branding 만 |

→ 모든 9 surface **v8 launch 동시 release** (sync principle).

---

# 11. Timeline — 20 주 (parallel-optimized)

```
W1-2     Brand Phase 1 + Schema migration + foundation        [done 2026-05-27]
W3       Attribution + AI bundle separation + Bundle visibility    [done 2026-05-27]
W4-6     Web: Auto-organize (real-time + background + synthesis)    [Type 1+2 done; Type 3 pending]
W7       Web: Dual response (HTML + markdown) + Public profile    [done 2026-05-28, fully cleaned up 7f4ba61c]
W8       Web: Use surface (paste-anywhere) + Comments    [paste-anywhere done 55c54e24; Comments scoped out by founder 70dfd82e]
W9-12    iOS native (Swift) — Share Ext + 카메라 + Widget + sync
W11-13   Android native (Kotlin) — 병렬
W13-15   Channel updates: Chrome / VSCode / Desktop / CLI / MCP / QuickLook
W14      Bundle collaborators + presence (live edit 폴리시)
W16      UI Polish + accessibility + perf audit
W17      Brand Phase 2 + landing + onboarding 그림 + 데모 영상
W18      Pricing + Stripe + docs 전체 업데이트
W19      Launch dry-run + bug bash
W20      Launch wave (9 채널 동시 release)
```

매주 30-50 시간 work. 솔로 + AI pair 풀타임 기준 가능. 5 개월 launch.

## Progress log

- **2026-05-27** — Brand Phase 1, W3 schema + namespace split (055cac2d), W4 Type 1 organize-doc pipeline (5b8098a3 / 37d241c5 / 9741a0ea / 20bdfb3e), W4 Type 2 option B demote (8e405cb7), Coming-soon 신호 5종 (8bbbea16, 77ee415a, d46212ae).
- **2026-05-27** — Sidebar Private/Shared/Synced filter root-cause fix (4d278e3a). W3 visibility picker UI (d4543023).
- **2026-05-28** — Editor view-mode: Live → MD (1ace7945). W7 /@<slug> profile URL (c9fd141e). W7 /hub → /@ 301 redirect (85588124). W8 doc comments MVP (746334f0, later pulled). Settings polish + key-color double-click fix (96a26fbe). DocComments build fix (26447143). /settings render fix (2628fb0c). E2E fix after Live → MD (e91cc0f9). W8 paste-anywhere "For AI" button (55c54e24). Default scheme accent map fix (9c2f5abb).
- **2026-05-28** — **Comments removed + ReferencedBy redesign + hub-tooltip copy fix** (70dfd82e). Migration 059 dropped doc_comments table. ReferencedBy now matches RelatedInHubPanel's card style.
- **2026-05-28** — **Avatar picker: brighter Shapes default + hide stock-photo tile** (981519ba). DiceBear identicon → shapes (existing rows silently mapped); Google's letter-default avatar URLs detected + suppressed.
- **2026-05-28** — **W7 final cleanup** (7f4ba61c). Manifest links + search form action under /@<slug>. New rewrites for /@:slug/{index.md,SCHEMA.md,llms.txt,llms-full.txt,search}. sec-fetch-dest hardening intentionally skipped (Googlebot SEO).
- **다음 후보**: Type 3 synthesis docs (Bundle summary doc, About draft, Weekly digest); W13-15 channel updates (Chrome / VSCode / Desktop / CLI / MCP awareness of /@<slug> + paste-anywhere); W14 Bundle collaborators + presence.
# 12. Pricing

| Tier | 가격 | 포함 |
| --- | --- | --- |
| Free | $0 | 3 docs/월, public 만, 1 bundle |
| Pro | $15/mo | unlimited docs, private docs, custom domain, AI auto-organize, native apps, MCP, Custom GPT |
| Team | (v9+) | per-seat, shared workspaces, role-based access |

Beta 사용자 (기존 mdfy graph): launch day 50% 영구 할인 코드.

---

# 13. ICP — 누가 사랑하나

**1순위 (launch 시 80%)**: AI-fluent indie hacker / solo dev / dev relations

- ChatGPT + Claude + Cursor 셋 다 일상적 사용
- HN / Twitter / Reddit r/cursor 등에서 도달 쉬움
- 너 자신이 그 segment (dogfooding)

**2순위 (launch 시 15%)**: tech writer / 연구자

- publishing 도구에 친화
- 인용 가능한 URL 가치 큼

**3순위 (5%)**: power knowledge worker (lawyer, consultant)

- pain 있지만 enterprise sales motion 필요 → 후순위

**제외**: casual ChatGPT user — re-explaining pain 인식 안 함

---

# 14. GTM — 분산 wave

## Pre-launch (Week 17-19)

기존 mdfy 사용자 graph mining:

1. mdfy.app DB 에서 active user export
2. Segment: anonymous publisher / signed-in / Chrome ext / VS Code ext / Desktop
3. Personalized email per segment
4. Hook: "Your AI memory URL is ready" (NOT "upgrade to Pro")
5. 50% lifetime discount code

목표: pre-launch 50-100 commit

## Launch day (Week 20)

순차 wave:

- Tuesday morning: 기존 사용자 email
- Tuesday noon: HN Show HN ("Memory.Wiki — stop re-explaining yourself to every AI")
- Wednesday: Twitter thread + dev community
- Thursday: ProductHunt
- Friday: Manifesto post

목표 KPI 12주 후 launch:

- Signup 5,000
- Free active 500
- Paid 80-150 ($1.2k-2.3k MRR)
- NPS &gt; 60
- Weekly Recapture Rate: 30% of active 20+ captures/week

## Deep partnership (Week 24+)

1 개 deep integration target: **Cursor**

- Cursor team cold email
- Memory.Wiki integration for cursor rules
- 발표 가능한 integration (PR + blog)
- Custom GPT 등 generic 채널보다 강함

---

# 15. 무엇을 안 하나 (sacred cows kill list)

| 항목 | 이유 |
| --- | --- |
| Embedded chat | ChatGPT/Claude 와 직접 경쟁, 우리 thesis 와 충돌 |
| Voice memo / 음성 input | 한국 cultural fit 약함, scope 늘림 |
| Public hub / social feed | Wikipedia/social product 운동 — PMF 전 안 됨 |
| Bundle Spec RFC / open standard | community 운영, post-launch |
| AI conversation auto-suggest UI | ChatGPT UI 분기마다 깨짐, maintenance 부담 |
| Custom GPT 외 cross-AI 통합 깊이 | launch 후 Cursor partnership 1 개로 충분 |
| Team workspace + per-seat 청구 | v9+ (Tier C) |
| 시각 graph 가 product 의 main | Galaxy 는 fun side feature, default view 아님 |
| Founder narrative 의 "솔로 6개월" | "거인이 못 만드는 cross-AI" 가 더 강함 |
| Memory layer category 경쟁 | "context portability + capture layer" 로 reframe |

---

# 16. Risk Register

## Risk 1: 거인 vendor 진입 (40%)

**Mitigation**: cross-AI thesis 가 narrative 의 정수. vendor 가 못 만드는 영역 강조. Cursor partnership 으로 differentiation 강화.

## Risk 2: 20 주 schedule slip (50%)

**Mitigation**: Week 8, 12, 16 reality check. 50% 안 되면 cut feature, 미루지 않음. Tier C 는 처음부터 v9 로 격리.

## Risk 3: Mobile native app App Store 거부 (15%)

**Mitigation**: launch 6 주 전 (Week 14) TestFlight + Play Store internal track submission. 거부되면 시간 확보.

## Risk 4: First-100 paid acquisition 안 됨 (35%)

**Mitigation**: 기존 mdfy graph mining 우선. Week 17 부터 segmented email 캠페인. "Your AI memory URL is ready" hook.

## Risk 5: AI cost spiral (auto-organize 의 LLM 비용) (25%)

**Mitigation**:

- Free tier rate limit (3 docs/월, 1 bundle)
- Pro $15 에 cost 반영
- 3-provider failover (Anthropic / OpenAI / Gemini)
- Background organize 는 batch + caching

## Risk 6: 솔로 burnout (40%)

**Mitigation**: Week 6, 10, 14, 18 reality check + 1 일 OFF 룰. 주당 50 시간 cap. AI pair 의 효율 신뢰.

## Risk 7: Best-UX 기준이 launch 늦춤 (30%)

**Mitigation**: ship 안 함 결정은 일찍. Week 16 audit 에서 fail 한 feature 는 v8.1 로 이관. 통과한 것만 launch.

---

# 17. Internal vs External Thesis 분리

**Internal (founder 전용)**:

- The graph is the product
- Cross-AI is structurally impossible for giants
- AI-native memory infrastructure
- Knowledge as URL = API for any AI

**External (사용자가 보는 것)**:

- "Stop re-explaining your context to every AI."
- "Capture anything. AI organizes. Use everywhere."
- "Yours, your team's, or your community's — one URL every AI reads."

→ Internal 단어 (graph, layer, infrastructure, memory) 는 manifesto / about / founder note 에만. 사용자 surface 에는 절대 노출 안 함.

---

# 18. Locked Decisions (23)

| \# | 결정 | 값 |
| --- | --- | --- |
| 1 | Framework | Capture → Organize → Use |
| 2 | URL doc | `memory.wiki/<id>` (그대로) |
| 3 | URL bundle | `memory.wiki/b/<id>` (그대로) |
| 4 | URL user | `memory.wiki/@<username>` (신규, Mastodon/Bluesky 패턴) |
| 5 | Bundle namespace | My + AI 분리 |
| 6 | Dual-layer | original immutable + AI metadata |
| 7 | Dual-response | same URL, content negotiation |
| 8 | Attribution | per-entry, AI agent identity 포함 |
| 9 | Mobile | iOS + Android native (Tier 1) |
| 10 | Voice memo | drop |
| 11 | Galaxy | visible tab, default 아님 |
| 12 | Embedded chat | drop |
| 13 | Best UX | 8 criteria |
| 14 | Pricing | $15/mo Pro, free 3 docs/월 |
| 15 | H1 | "Stop re-explaining your context to every AI." |
| 16 | Branding | Phase 1 (시작) + Phase 2 (마지막) |
| 17 | Timeline | 20 주 |
| 18 | 9 surfaces 동시 launch | sync release |
| 19 | Surface tiers | T1 web/iOS/Android, T2 Chrome/MCP, T3 VSCode/Desktop/CLI/QuickLook |
| 20 | Parallel work | T1 main (80%) + T2/T3 (later phases) |
| 21 | Auto-organize | metadata auto + bundle 제안 (My approval, AI 자동) + synthesis (user-trigger or weekly) |
| 22 | Docs update | 각 surface 별, Week 18 |
| 23 | Collaboration | Tier A+B (sharing + presence + comments) v8, Tier C (team workspace) v9+ |

---

# 19. Mantra

> **하나의 URL. 모든 AI.**

> **Capture 는 친구. Organize 는 AI. Use 는 너의 권한.**

> **사람이 쓴 것은 sacred. AI 가 만든 것은 attributed.**

> **거인이 못 만드는 cross-AI 가 우리 wedge. 사용자에게는 안 말함.**

> **개수 0개 ship 보다 마무리 1개 ship.**

---

# 20. 한 줄 정리

> Memory.Wiki v8 — **the cross-AI capture layer**. Capture anything from anywhere. AI organizes in the background. Paste one URL into any AI — it knows you. Solo, with friends, or with your community. 20 weeks. 9 surfaces. 23 locked decisions. Ship.

---

*문서 작성: 2026-05-23Brand: Memory.Wiki (final, 두-톤 wordmark)Launch: 2026-10 중순 (Week 20)Built by: Hyunsang at Raymind.AISupersedes: v7-revised — same craftsman path, sharper framing, +collaboration, +native mobile, +best UX bar*

## Progress log (continued)

- **2026-05-28 → 2026-05-29 (iOS W9 round 24-29)** — single git commit `c1719384` + subsequent uncommitted work. Capture surface overhaul + iOS 26 UX sweep:

  - **Capture flow**: body tap focus race-fix (Coordinator tracks SwiftUI focus across renders so a stale-false render after UIKit `becomeFirstResponder` doesn't kill it). `FillingTextView` UITextView subclass reports `noIntrinsicMetric` so SwiftUI stretches it (empty editor was a one-line tap strip). `@State bodyFocused` mirrors `@FocusState` for the body field (UIViewRepresentable can't bind to FocusState, so Save/Cancel never appeared on body focus). Pill toolbar edge fades. `ProcessingBanner` sticky chip across photo / URL / file flows so every long step is visible. OCR preview chip with Insert / Discard. URL sheet rewritten with honest copy + clipboard auto-fill + inline parse hint. Dictation permission denial promoted to alert with Open Settings deeplink. Banner kind system with distinct icon/tint per surface; errors look like errors (microRed border + red-tinted fill). Settings micro-coloured glyphs + accent dots on hub stat tiles.

  - **WebP-everywhere**: iOS uploads 1280pt @ WebP 0.5 first try with ladder down to 640pt; soft target 500 KB, hard ceiling 3.5 MB (Vercel function payload cap headroom). Server `/api/upload` + `lib/import-images` now re-encode every raster to WebP including animated GIF (`sharp({animated:true})`); SVG stays vector.

  - **URL import**: new `APIClient.importURL` streams the `/api/import/url` SSE pipeline into a live sticky banner. Server fetcher sends a real Chrome User-Agent + standard browser Accept / Sec-Fetch headers so anti-bot gates (NYT, Cloudflare-fronted blogs) stop 403'ing on first request. Friendlier upstream-error messages (403 / 401 / 429 / 451) point the user at the Share extension as a fallback.

  - **iOS 26 UI sweep**: floating capsule tab bar (`.ultraThinMaterial` + 12pt insets + shadow). Settings tab glyph swapped for the user's avatar (22pt circle, ink ring when active). All sheets routed through new `.iOS26Sheet(detents)` modifier — drag indicator + glass background + 28pt corner. Dark gradient strip behind floating tab bar so content fades into Brand.background instead of clashing with the chrome.

  - **Tab reload root-fix**: RootView `switch` was rebuilding the active view on every tab tap, destroying its `@StateObject` and its 30s cache. Replaced with a ZStack that keeps all five tab views mounted + opacity-gates the active one + `allowsHitTesting(false)` on the hidden tabs. Tab switches now reuse cached lists; `RefreshingPip` shows in the header when a background revalidate is running over already-painted data.

  - **Skeleton + shimmer**: new `Skeleton.swift` with `SkeletonRow`, `SkeletonList(count:)`, `SkeletonStatStrip`, `ShimmerModifier`, `RefreshingPip`. Timeline / Bundles / Start use these instead of a centred spinner so first-paint reads as "loading the list that's about to appear" rather than a frozen screen.

  - **Dictation interim transcript**: `DictationController` gained an optional `onInterim` callback. SFSpeechRecognizer emits the engine's running best-guess on every refinement; `DictationBanner` shows it as a 3-line italic preview under the LISTENING row, cleared when a chunk is finalised and committed to the body draft.

  - **Display Name editable**: added to `UserSession` (loaded from `profiles.display_name` during hydrate). Settings → ACCOUNT now has a tappable Display Name row that opens a glass sheet with a text field. Save writes directly via Supabase (RLS allows self-update), then `AuthManager.refresh()` repaints. Start hero greeting tone-down: 3 calm variants per time slot, rotated by day-of-year; no quirky filler, displayName only (no email/slug fallback).

  - **Splash tagline**: "Knowledge hub for the age of AI" added under the wordmark on the boot splash with 0.28s stagger delay.

  - **Doc detail prefetch**: new `DocCache` (NSCache-backed, bounded to 80 entries, cleared on `.mwUserChanged`). Timeline rows call `DocCache.shared.prefetch(doc.id)` on appear; `DocumentDetailView.load` checks the cache first and paints instantly, kicking a background revalidate so any server-side edit since the prefetch lands without making the user wait.

  - **Widget**: `.contentMarginsDisabled()` on the WidgetConfiguration + tighter inner 10-12pt padding so the canvas fills nearly edge-to-edge instead of being ringed by a fat dead band.

- **Next candidates**: Verify URL import on Vercel-deployed Chrome-UA fetcher against more sites. Add doc detail revalidate badge (similar to RefreshingPip). Push current uncommitted iOS round 25-29 work.

- **2026-05-29 (iOS W9 round 30)** — commit `0181ee76`. Hub stats was failing silently because the iOS `HubResponse` decoder expected `profile` / `stats` (legacy v6 names) but the route returns `hub` / `counts` — every Settings → Your Hub load died with "data couldn't be read because it is missing." Struct rewritten to mirror the server shape with computed back-compat shims so existing Settings + Start call sites stayed untouched. ProfileView now surfaces the real fetch error + a Retry button so the next decoder mismatch isn't silent. Tab bar liquid-glass tuning: `BottomFadeStrip` switched to `.thickMaterial` masked by a gradient with only a faint dark tint on top — the previous ~98 % overlay had made the strip effectively solid, defeating the see-content-blurred-behind-chrome point of iOS 26. Added a 50pt bottom safe-area inset on the keep-mounted tab container so child ScrollViews / Lists can lift their last row above the floating tab bar. Widget: padding back to 14/16pt (10/12 was too tight after `.contentMarginsDisabled()`) and Capture button cornerRadius 9 → 14 so it follows the ~22pt iOS widget canvas curve concentrically.

- **2026-05-29 (iOS W9 round 31-33)** — commit `91c0b28b`. App Store readiness sweep + demo account + voice fixes + scope polish. App-Store side: 1024px marketing icon (mwlogoset v2, alpha-flattened on zinc-950), PrivacyInfo.xcprivacy on main app + Widget + ShareExtension (NSPrivacyTracking=false, five data categories declared, four Required Reason APIs), ITSAppUsesNonExemptEncryption=false, portrait-only orientation, iPad dropped (TARGETED_DEVICE_FAMILY 1), DEVELOPMENT_TEAM wired through xcconfig, README app group mismatch fixed. Demo: `scripts/seed-demo-account.mjs` provisions demo@memory.wiki with hub_slug `memorywiki-demo`, 5 doc folders + 2 bundle folders, 50 rich-content docs (h1/h2/h3, lists, tables, multi-language code, KaTeX, mermaid, images, footnotes, quotes), 10 bundles with 3-8 member docs each, timestamps spread 90 days, visibility mix 40/30/30. `scripts/analyze-demo-account.mjs` 4-pass post-seed produced 444 chunks + 20 bundle embeddings + 34 concept_index entries. Email-only sign-in: /api/auth/demo-signin allowlist extended with demo@memory.wiki; iOS EmailAuthSheet hides password field for allowlisted emails + new `AuthManager.signInDemo` POSTs to that endpoint and `setSession`s the returned tokens. Voice: stop()-side flush of the latest interim tail so the user's last sentence stops vanishing; benign error codes (203/209/216/301/1110) suppressed + onError sink dropped before task cancel; Settings → Voice → Dictation language picker over every SFSpeechRecognizer.supportedLocales() with @AppStorage wiring back to startDictation. Heat fix: AmbientBlob (WKWebView spinning an SVG <animate> loop) gated on selectedTab == .capture so the keep-mounted Capture tab stops burning GPU when the user is on another tab. Misc polish — Start skeleton top-anchored to match the loaded layout, Hub stats decoder aligned to server's { hub, counts } shape with computed shims + Retry button, BottomFadeStrip rebuilt with ultraThinMaterial + black gradient (was Brand.background-gray), 50pt safeAreaInset per tab + Start +40pt bottom padding so the floating tab bar doesn't cover the last row, tab re-tap pops to root with selection haptic / tap-at-root fires warning haptic + 3-cycle horizontal shake, Korean H1 weight via .weight(.semibold) layered on Cal Sans (CJK fallback at semibold), greeting copy reorganised to 4 calm-with-personality variants per time slot rotated by day-of-year, Capture banners lift to 80pt bottom padding when keyboard is down, MDs header label "Timeline" → "Markdowns".

- **2026-05-29 (iOS W9 round 34-45, marathon session)** — commits `33d4ce48` → `77a8475e`. Big arc covering in-app chat (hub + bundle + doc, Claude Haiku 4.5, raw text streaming, max_tokens 64k), tappable `[doc:id]` citation chips that resolve real doc titles via DocCache, full block-level markdown in chat + GFM tables + task lists in MarkdownBody, NavigationStack typed-path root-cause fix for bundle members, iOS 26 dark glass refinement (BottomFadeStrip + black gradient + ultraThinMaterial), widget large-footer quick actions (Ask / Search / Paste) with deep-link routes, `memorywiki://capture-paste` that drops the live clipboard into the body draft, Korean H1 weight via Cal Sans + .weight(.semibold) fallback, dictation Stop-flush + multi-language picker, EmailAuthSheet demo passwordless allowlist, demo seed deterministic ids + wipe script + analyze pass (444 chunks / 20 bundle embeddings / 34 concept_index entries), heat fix (AmbientBlob gated on selectedTab == .capture), tab keep-mounted, skeleton + shimmer, RefreshingPip stale-while-revalidate indicator, Splash tagline, Display Name edit, App Store readiness sweep (PrivacyInfo on three targets, 1024 icon from mwlogoset v2 alpha-flattened, ITS encryption + portrait-only + iPhone-only + DEVELOPMENT_TEAM wired), and the publish kickoff: `MARKETING_VERSION 0.1.0` / `CURRENT_PROJECT_VERSION 2`, `ExportOptions.plist` for App Store distribution, `memorywiki://demo-signin` deeplink for screenshot automation, **ARCHIVE + EXPORT SUCCEEDED** (IPA at `apps/ios-native/build/ipa/MemoryWiki.ipa`), **ten 1320×2868 screenshots captured** via `xcrun simctl io` after auto-signin (auth / email sheet / start / markdowns / bundles / capture / settings / doc detail / bundle detail / chat hub). Also drafted two memory.wiki canonical docs: [iOS overview & roadmap (Tf7Y8XZb)](https://memory.wiki/Tf7Y8XZb) + [Android implementation guide (vfj8dNg_)](https://memory.wiki/vfj8dNg_). Next steps are all founder-side: ASC app record + Privacy Policy URL + listing copy + Transporter upload + submit-for-review.

- **2026-05-30 → 2026-05-31 (Android W11 marathon)** — many commits, latest `018e78ca`. Android-native build pushed from rough first cut to iOS-parity feature set + polish pass. Major arcs:

  - **Visual + brand parity**: launcher icon foreground rewritten as a 108dp VectorDrawable scaled by 66/128 = 0.515625 and translated by 21 to the inner safe zone so circular launcher masks no longer clip the satellite dots (verified on a physical Nothing Phone). Splash + auth + tab-bar centerpiece all wired to `BrandBlob` — same SMIL-animated SVG the web + iOS use, hosted in a transparent WebView since no native Android SVG renderer plays SMIL. Tab bar polished: opaque pill background, 10dp inner padding, 20dp lift above the gesture bar, duplicate fontSize stripped on labels. Full-screen `CircularProgressIndicator` on Document detail and Bundle detail swapped for `BrandBlob` at 96dp; inline 11dp search status stays as a Material spinner since BrandBlob can't render legibly that small. iOS-style push transitions wired on every detail screen (markdowns/doc, bundles/{id}, bundles/doc, about, help, chat) — 280ms tween slide + 180ms fade for enter, reverse for pop; top-level tab swaps stay on the NavHost default since they're peers, not parent/child.

  - **Lists**: MDs and Bundles both have a `STARRED` section above the main list (only on Filter.All + no query, mirrors iOS BundlesView and TimelineView). `PinnedStore` hydrates from the server, optimistic local toggle, server reconciliation with rollback on failure. Star / Unstar in the long-press menu fires `HapticFeedbackType.TextHandleMove` (was silent). Bundles empty state grew a CTA ("Open memory.wiki") matching the Markdowns pattern instead of just describing what bundles are. 300ms-debounced semantic search wired on Markdowns with a separate "BY MEANING" section under literal title hits.

  - **Document workflow**: edit / visibility toggle / delete on the doc detail kebab; AddToBundle sheet that lets users assign the current doc to one of their existing bundles; TOC sheet over headings with smooth scroll-to.

  - **Capture**: 6 modes (Write / URL / Photo / OCR / Voice / Files), publish surfaces the new doc id via `RouterEvent.PushDocDetail`; Publish button got a TextHandleMove on tap + LongPress on success so the user feels the publish land before the screen swaps to the new doc. VoiceMode already had `EXTRA_PARTIAL_RESULTS=true` + onPartialResults wired to a live interim card — the parity audit flagged it as missing, verified the audit was wrong before changing anything (code before assumption).

  - **Share intent**: `ShareReceiverActivity` routes incoming SEND / SEND_MULTIPLE intents into Capture (not a silent POST) so the user sees the pre-filled draft and can title / edit before publishing. Handles text/plain + image/* + multi-image.

  - **System-level Android surfaces**:
    - **App Shortcuts** (`shortcuts.xml` + manifest meta-data) — long-press the launcher icon to jump straight to Capture / Ask / Search / Paste. 4 vector drawables + 8 strings + `<meta-data>` wired into MainActivity. `targetPackage` omitted so debug + release variants both resolve at runtime.
    - **Google Assistant App Actions** — top-level `<capability>` tags on `actions.intent.CREATE_NOTE` → `memorywiki://capture` and `actions.intent.GET_THING` → `memorywiki://search`. "Hey Google, take a note in memory.wiki" lands in the Capture screen. iOS Siri Shortcuts parity without writing a new intent surface.
    - **Quick Settings tile** (`CaptureTileService`) — pull-down notification shade tile labelled "Capture" that fires `memorywiki://capture` via PendingIntent on Android 14+ and the deprecated Intent overload on 13. Registered with `BIND_QUICK_SETTINGS_TILE` so SystemUI can bind. Active tile, no state to sync.
    - **Home + lock-screen widget** — Glance-backed responsive widget with three breakpoints (small / medium / large), opaque pill background. `widgetCategory="home_screen|keyguard"` so it works on the lock screen on Android 12+. Plus a second 1×1 capture-only mini widget (inverted bone-on-ink) as a separate provider in the picker so users pick the shape that fits their home screen.
    - **App Links + deep links** — `memorywiki://` scheme + auto-verified https intent filter for `memory.wiki/*` once `/.well-known/assetlinks.json` is in place. Tapping any memory.wiki/&lt;id&gt; URL in Chrome opens the doc reader inside the app.

  - **Settings**: hub URL card with Copy for AI / Copy URL / Open hub pills, hub stats (memories + bundles tiles), account (email / username / display name editor sheet), key-color accent picker, language → opens system per-app locale picker (API 33+), LEARN → About / Help & Shortcuts / Replay welcome tour, FEEDBACK → mailto with pre-filled version + device + OS + locale body (`feedbackBodyTemplate()` mirrors iOS `FeedbackComposer.bodyTemplate()`), terms + privacy, sign out. About + Help screens are in-app (no web bounce). Onboarding 3-card pager on first signed-in launch, replay via Settings.

  - **Tap target a11y sweep**: search bar clear X, list-row Share Upload icon, and Chat close X all wrapped in a 36dp clickable circle while keeping the small 12-13dp glyph visual weight. Hits the Material a11y minimum without losing the dense feel.

  - **Build hygiene**: collapsed individual Lucide icon imports to wildcard `import com.composables.icons.lucide.*` so adding a new icon doesn't add an import line. Foreground refresh wiring (`LifecycleEventObserver.ON_RESUME` → `RouterEvent.ForegroundRefresh`) so lists re-pull on return to foreground without the user having to pull-to-refresh.

- **Deferred (Phase 2 candidates)**: AppSearch indexer (Pixel Launcher integration is not automatic — real Spotlight-equivalent UX requires launcher partnership); WorkManager periodic worker (widget has no dynamic content, list cache already warms on ON_RESUME, periodic job would be dead work).

- **Next**: founder-side Play Store listing + Privacy Policy URL + screenshots + internal track submission. APK builds clean and installs on physical Nothing Phone + Pixel_8_Pro emulator.

- **2026-05-31 (Android Play Store prep)** — commits `127336e3` → `97711a43`. Pipeline + assets ready, **blocked on Google ID verification** (Play Console dropdown does not list South Korea because payments profile country was set to US; user contacted Google support to enable Korean Individual flow).

  - **Release signing**: `app/build.gradle.kts` reads upload keystore + passwords from gitignored `release-keystore.properties`. Falls back to debug signing if missing. Upload keystore (RSA 2048, valid through 2053) generated locally at `app/upload-keystore.jks`. Cert SHA-1 + SHA-256 captured for Google OAuth wiring.
  - **First signed AAB**: 32 MB at `app/build/outputs/bundle/release/app-release.aab`. R8 minify + lint pass after adding `-dontwarn pl.droidsonroids.gif.**` (Markwon's optional GIF decoder).
  - **8 phone screenshots** captured from Pixel_8_Pro emulator (1344×2992 @ 480dpi) signed in as demo@memory.wiki: Start with STARRED hydrated, Markdowns + STARRED, Doc detail (markdown rendered), Bundles + STARRED + ALL, Bundle detail (Deploy URL card), Capture (6-mode pill), Settings (hub card + accent picker), Help (6 expandable sections). Sitting in `apps/android-native/screenshots/v010/`.
  - **Brand voice cleanup**: HelpScreen + OnboardingScreen had em-dash + right-arrow in user-visible body strings; replaced with commas / sentence breaks before screenshots were finalised. iOS-style headline + sub captions written for all 8 (EN + KR) — see [submission pack](https://memory.wiki/rLdM5lDB) section 15.
  - **Submission pack doc**: <https://memory.wiki/rLdM5lDB> consolidates every Play Console form field with paste-ready copy (account creation answer, store listing EN + KR, Data Safety matrix, content rating answers, demo credentials for App Access, asset checklist with Figma template, Korean translations for KR locale).
  - **In-repo mirror**: `apps/android-native/RELEASE.md` carries the same checklist in the codebase so it ships with future contributors.

- **Blocker**: Google Play Console signup landed on US-only ID verification dropdown because the linked payments profile (`Hyunsang Cho — United States`, profile `5592-0770-7291`) defaulted to US. The Hyunsang Cho — South Korea profile (`7720-5294-9652`) exists in payments center but the existing Play Console dev account on `hi@raymind.ai` is already linked to a different profile. Support ticket open. Path forward once Google responds: either (a) switch the linked payments profile to the Korea one for Individual verification (phone + utility bill, no government ID upload), or (b) Organisation route with RayMind.AI Korea profile (`0819-9966-8142`) + 사업자등록증 if available.

- **Next while waiting**: founder-side asset production (512×512 app icon, 1024×500 feature graphic, 8 captioned screenshots in Figma), Privacy Policy + Terms verification at `memory.wiki/privacy` and `memory.wiki/terms`. Claude-side: open. Candidates include (1) iOS App Store final upload (archive already exported per round 34-45), (2) W13-15 channel updates (Chrome / VSCode / Desktop / CLI / MCP /@&lt;slug&gt; awareness), (3) Bundle collaborators + presence (W14). Awaiting founder direction.

---

## Summary
Memory.Wiki v8 is a productized knowledge graph platform designed to eliminate context re-explanation by providing a single shareable URL that different AI agents can consume in optimized formats (markdown for AI, HTML for humans). The plan includes a three-stage workflow (capture/organize/use), native mobile apps, cross-app integrations, dual-layer storage preserving original content while adding AI-generated metadata, and a freemium pricing model targeting AI-fluent developers, launching in 20 weeks across 9 surfaces simultaneously.

## Themes
- cross-AI portability
- immutable user data with AI metadata overlay
- solo founder craftsman SaaS

## Key takeaways
- Memory.Wiki stores original user captures immutably while layering AI-generated metadata (tags, clusters, summaries) separately, with UI toggles between Original and Organized views.
- Every document and bundle supports dual-response serving: HTML for browsers, markdown digest for AI agents, using the same URL with content negotiation.
- Nine surfaces (web, iOS, Android, Chrome, VSCode, Desktop, CLI, MCP, QuickLook) launch simultaneously in Week 20 after 20 weeks of parallel-optimized development.
- Attribution metadata tracks whether each entry was user-created or AI-generated, including the specific AI agent and trigger event.
- Free tier limits users to 3 docs/month and 1 bundle; Pro tier ($15/month) unlocks unlimited docs, private docs, AI auto-organize, and native apps.
- The URL architecture uses three levels: memory.wiki/<id> for docs, memory.wiki/b/<id> for bundles, and memory.wiki/@<username> for user profiles with public/private visibility controls.

## Insights
- The product deliberately avoids embedding AI chat to prevent direct competition with giants and maintain focus on the core thesis of context portability across AI systems.
- Type 3 synthesis docs were explicitly dropped post-planning because paste-anywhere already provides the USE surface, avoiding LLM cost spirals and staleness problems.
- The internal thesis (graph structure, cross-AI wedge) is intentionally hidden from users, who see only the external framing of reducing re-explanation burden.

## Open questions / gaps
- How will Memory.Wiki prevent or handle the scenario where multiple AI agents independently organize the same capture, creating conflicting cluster assignments or metadata?
- What specific LLM cost modeling informed the decision that $15/month Pro pricing covers unlimited auto-organize operations without creating a cost spiral?

## Concepts in this document
- **memory.wiki** _(entity)_
  The core product platform managing knowledge capture and AI-assisted workflows.
- **Knowledge Management** _(tag)_
  Overarching domain of personal and organizational information systems
- **Chrome Extension** _(entity)_
  Browser capture tool for one-click knowledge saving
- **URL as API** _(concept)_
  Core architectural principle where every Memory.Wiki URL serves as a fetchable API endpoint for AI consumption
- **Claude** _(entity)_
  Anthropic's AI assistant, key target for cross-AI compatibility
- **ChatGPT** _(entity)_
  OpenAI's AI assistant, primary competitor and integration target
- **Memory.Wiki v8** _(entity)_
  Product being rebranded; document serves as design direction and lock for Phase 1 visual system overhaul.
- **Capture-Organize-Use Framework** _(concept)_
  Strategic framework for knowledge workflow with AI-powered organization
- **Cursor** _(entity)_
  Development AI tool that reads memory.wiki URLs as markdown for code context.
- **AI-Optimized Context Packaging** _(concept)_
  Revolutionary approach to formatting information specifically for LLM consumption rather than human reading.
- **Intent-adaptive bundles** _(concept)_
  Technical feature concept allowing dynamic context packaging for different use cases (coding, fundraising, research) via URL parameters.
- **URL architecture** _(concept)_
  Shared with web surface; iOS app consumes existing API endpoints with no iOS-specific routes and uses memorywiki:// scheme for deep linking.

## Concept relations (within this doc's concepts)
- **Intent-adaptive bundles** is implementation of **AI-Optimized Context Packaging**
- **memory.wiki** targets platform **Claude**
- **memory.wiki** targets platform **ChatGPT**
- **memory.wiki** targets platform **Cursor**
- **URL as API** integrates with **ChatGPT**
- **URL as API** integrates with **Claude**
- **Chrome Extension** captures to **memory.wiki**
- **memory.wiki** core strategy **AI-Optimized Context Packaging**
- **AI-Optimized Context Packaging** key implementation **Intent-adaptive bundles**
- **memory.wiki** implements **URL as API**
- **memory.wiki** must implement **AI-Optimized Context Packaging**
- **Intent-adaptive bundles** enables specialized **AI-Optimized Context Packaging**
- **AI-Optimized Context Packaging** enabled by **Intent-adaptive bundles**
- **memory.wiki** implements **AI-Optimized Context Packaging**
- **Cursor** saves decisions to **memory.wiki**
- **Claude** loads context from **memory.wiki**
- **memory.wiki** implements **Capture-Organize-Use Framework**
- **memory.wiki** implements core strategy **AI-Optimized Context Packaging**
- **AI-Optimized Context Packaging** enables through **Intent-adaptive bundles**
- **AI-Optimized Context Packaging** enables via **Intent-adaptive bundles**

_Hub canonical:_ https://memory.wiki/hub/raymindai
_Concept digest:_ https://memory.wiki/raw/hub/raymindai?digest=1&compact=1
