# Hyunsang Cho's knowledge hub — full text Canonical hub URL: https://memory.wiki/hub/raymindai Index-only manifest: https://memory.wiki/hub/raymindai/llms.txt Concept digest: https://memory.wiki/raw/hub/raymindai?digest=1&compact=1 # Knowledge graph _Pre-computed structure across this hub: 40 concepts, 30 relations, 0 bundles with AI analysis. Use this as navigation; the doc bodies below contain the prose._ ## Concepts - **memory.wiki** _(entity • weight 725 • 60 docs)_ The primary product platform being developed and documented. - **Multi-channel delivery** _(tag • weight 316 • 1 doc)_ Support for push, email, SMS, and in-app communication channels. - **Real-Time Notification Service** _(concept • weight 300 • 1 doc)_ The core system being designed to handle multi-channel notifications at scale for 50M+ users with strict latency and availability requirements. - **Matrix Multiplication** _(concept • weight 280 • 1 doc)_ Core operation in neural networks for weight and input processing. - **Singular Value Decomposition** _(concept • weight 272 • 1 doc)_ Matrix factorization method used for compression and recommender systems. - **Result** _(concept • weight 260 • 1 doc)_ The primary Rust type used for handling recoverable errors. - **Principal Component Analysis** _(concept • weight 236 • 1 doc)_ Dimensionality reduction technique using eigenvectors of the covariance matrix. - **Question mark operator** _(concept • weight 225 • 1 doc)_ Syntactic sugar for propagating errors up the call stack, enabling clean error handling chains. - **anyhow** _(entity • weight 216 • 1 doc)_ A crate recommended for ergonomic error handling in applications. - **thiserror** _(entity • weight 216 • 1 doc)_ A crate recommended for defining custom error types in libraries. - **Dot Product** _(concept • weight 202 • 1 doc)_ Mathematical operation measuring similarity between two vectors. - **Neural Networks** _(concept • weight 193 • 1 doc)_ Machine learning architecture relying on matrix multiplication and gradients. - **Priority Router** _(concept • weight 188 • 1 doc)_ Component that directs notifications to specific queues based on urgency. - **Raymind.AI** _(entity • weight 186 • 33 docs)_ 조현상이 설립한 독립 프로덕트 스튜디오로, AI 제품 기획 및 개발을 수행함. - **Rate Limiting** _(concept • weight 176 • 1 doc)_ Strategy to control notification frequency per user and channel using Redis. - **Redis** _(entity • weight 174 • 1 doc)_ Used for user preference management and implementing rate limiting logic. - **Backpropagation** _(concept • weight 173 • 1 doc)_ Training algorithm for neural networks that relies on chain rule through Jacobian matrices. - **Dimensionality Reduction** _(tag • weight 172 • 1 doc)_ Application domain encompassing PCA and SVD techniques for reducing feature space complexity. - **Eigenvalues and Eigenvectors** _(concept • weight 172 • 1 doc)_ Vectors that define the direction of matrix stretching and their scaling factors. - **PostgreSQL** _(entity • weight 171 • 1 doc)_ Primary database for storing notifications, preferences, and templates. - **PKCE** _(concept • weight 170 • 1 doc)_ Cryptographic protocol extension that prevents authorization code interception attacks by binding tokens to a code verifier. - **OAuth 2.0** _(concept • weight 170 • 1 doc)_ Authorization framework that PKCE extends to secure public clients and improve overall OAuth flow security. - **Chrome extension** _(entity • weight 164 • 40 docs)_ Surface within memory.wiki ecosystem. - **User Preference Management** _(concept • weight 150 • 1 doc)_ System for storing and respecting per-user settings including channel enablement, quiet hours, and frequency caps. - **mdfy Memory** _(entity • weight 150 • 1 doc)_ The product name that now frames mdfy's retrieval and storage system, replacing the RAG technique-centric terminology. - **Error context chain** _(concept • weight 147 • 1 doc)_ Practice of adding contextual information at each error boundary to create human-readable error stories. - **Knowledge Management** _(tag • weight 147 • 43 docs)_ Overarching domain of personal and organizational information systems - **panic!** _(concept • weight 144 • 1 doc)_ The mechanism used for unrecoverable errors in Rust. - **mdfy** _(entity • weight 142 • 35 docs)_ A memory infrastructure layer that provides a URL-based knowledge hub for AI tools. - **Failure Handling** _(concept • weight 140 • 1 doc)_ Resilience patterns including exponential backoff, circuit breakers, and fallback channels. - **Gradient** _(concept • weight 140 • 1 doc)_ Vector of partial derivatives for scalar functions. - **Component library v2.0** _(entity • weight 134 • 1 doc)_ A design resource published to Figma containing 48 components. - **Custom error types** _(concept • weight 133 • 1 doc)_ Enum-based error definitions that provide semantic clarity and allow pattern matching; essential for library public APIs. - **Claude** _(entity • weight 133 • 52 docs)_ Specified AI tool for prototyping and validation before moving to high-fidelity design. - **Code Verifier** _(concept • weight 132 • 1 doc)_ Random cryptographic string generated by the client and stored locally to prove ownership during token exchange. - **Code Challenge** _(concept • weight 132 • 1 doc)_ SHA-256 hash of the code verifier sent to the auth server to bind the authorization request. - **Matrix** _(concept • weight 122 • 1 doc)_ Rectangular array structure that encodes transformations and weights in neural networks. - **Vector** _(concept • weight 122 • 1 doc)_ Fundamental ordered list of numbers forming the basis for all linear algebra operations in ML. - **TimescaleDB** _(entity • weight 120 • 1 doc)_ Database used for storing delivery logs and latency metrics. - **Jacobian** _(concept • weight 116 • 1 doc)_ Matrix of partial derivatives used in backpropagation via the chain rule. ## Concept relations - **Real-Time Notification Service** implements **Multi-channel delivery** - **Matrix Multiplication** core operation in **Neural Networks** - **Singular Value Decomposition** enables **Dimensionality Reduction** - **Backpropagation** trains **Neural Networks** - **Code Verifier** hashed into **Code Challenge** - **User Preference Management** cached in **Redis** - **Real-Time Notification Service** enforces **Rate Limiting** - **Principal Component Analysis** implements **Dimensionality Reduction** - **Real-Time Notification Service** uses **Priority Router** - **PKCE** extends security of **OAuth 2.0** - **Eigenvalues and Eigenvectors** foundation for **Principal Component Analysis** - **Code Verifier** hashed to create **Code Challenge** - **User Preference Management** persisted in **PostgreSQL** - **Real-Time Notification Service** routes through **Priority Router** - **PKCE** extends and secures **OAuth 2.0** - **Gradient** computed via **Backpropagation** - **Real-Time Notification Service** persists to **PostgreSQL** - **Rate Limiting** stores state in **Redis** - **Eigenvalues and Eigenvectors** enables **Principal Component Analysis** - **Eigenvalues and Eigenvectors** mathematical basis for **Principal Component Analysis** - **Rate Limiting** backed by **Redis** - **Priority Router** routes to **Multi-channel delivery** - **Jacobian** implements chain rule in **Backpropagation** - **anyhow** provides tools for **Error context chain** - **Result** enables propagation via **Question mark operator** - **Real-Time Notification Service** enables **Multi-channel delivery** - **Multi-channel delivery** constrained by **Rate Limiting** - **Dot Product** operates on **Vector** - **Principal Component Analysis** technique for **Dimensionality Reduction** - **Gradient** computed by **Backpropagation** --- id: QODhQxwz title: memory.wiki: A Personal Knowledge OS url: https://memory.wiki/QODhQxwz updated: 2026-06-30T07:25:23.202533+00:00 --- # memory.wiki: A Personal Knowledge OS > memory.wiki is a platform designed to transform fragmented AI-generated insights into a persistent, AI-readable knowledge graph, positioning itself as a "Personal Knowledge OS" rather than a traditional memory database. By utilizing URL-based markdown, it enables users to maintain ownership of their intellectual output across disparate AI tools and platforms. ## Key claims - [EXTRACTED] memory.wiki serves as an ownership layer for AI-produced knowledge, distinguishing itself from "AI developer infra" (like Mem0 or Zep) and closed-ecosystem features (like ChatGPT Memory) [doc-1]. - [EXTRACTED] The core problem is not "AI memory" but "delivery"—the fact that valuable insights generated by AI are lost when browser tabs are closed or trapped within specific, siloed containers [doc-2]. - [EXTRACTED] memory.wiki functions as an API-accessible URL; any LLM can fetch, read, and interpret the markdown content, bundles, or hubs without requiring custom SDKs or installations [doc-2]. - [INFERRED] By shifting from document-centric storage to an entity-relationship model, memory.wiki enables a "Self-Model" that tracks a user's core motivations, strengths, and evolving narrative over time [doc-3]. - [AMBIGUOUS] While memory.wiki is positioned as a "Personal Knowledge OS," its utility relies on the user's active curation of knowledge, which may face competition from established productivity tools like Notion or Obsidian if those platforms improve their AI-native accessibility [doc-1, doc-4]. ## Cross-references - **AI Memory vs. Knowledge OS**: [doc-1] and [doc-4] both contrast memory.wiki with "AI developer infra" (Mem0, Zep, Memori Labs). While the latter focuses on database layers for agents, memory.wiki focuses on the human-centric organization of thoughts and relationships. - **The "Delivery" Problem**: [doc-1] and [doc-2] agree that the current state of AI usage is fragmented; [doc-1] proposes specific surfaces (Chrome, iOS, VS Code) to solve this, while [doc-2] identifies the root cause as the lack of an AI-readable, platform-agnostic URL format. ## Open questions / gaps - **Interoperability**: How does memory.wiki handle potential conflicts when multiple AI agents attempt to update the same knowledge graph simultaneously? - **Privacy/Security**: As a URL-based system, what mechanisms ensure that sensitive personal knowledge graphs remain accessible only to the user's authorized AI agents? - **Scalability**: How will the system maintain performance and relevance as the "Personal Knowledge Graph" grows from a few projects to years of accumulated data? ## Provenance - [doc-1]: Defines the positioning of memory.wiki across three primary user surfaces: web, mobile, and developer environments. - [doc-2]: Explains the philosophical motivation behind the project, identifying "delivery" rather than "memory" as the primary failure point in current AI workflows. - [doc-3]: Outlines the structural requirements for a "Personal Knowledge Graph," emphasizing entity-based relationships and self-modeling. - [doc-4]: Compares memory.wiki to Memori Labs, clarifying the distinction between infrastructure-focused tools and knowledge-focused OS. CONFIDENCE TAGS: - [EXTRACTED] - [INFERRED] - [AMBIGUOUS] --- id: EtJSPPfX title: v8 Release Todos url: https://memory.wiki/EtJSPPfX updated: 2026-06-27T08:15:54.834+00:00 --- # v8 Release Todos # memory.wiki — release audit + asset production brief > One-shot reference for the late-May / early-June 2026 release cycle. Lists what shipped on every channel, what still needs human action, and the exact image + copy briefs to commission new marketing assets from a designer (or to produce yourself). **Status as of 2026-06-05.** Document owner: Hyunsang. ~~Update~~ in place as each item ships; archive when the entire checklist clears. --- ## TL;DR — what landed in the last two weeks Nine channels touched (web, desktop DMG, chrome ext, vscode, cli, mcp, iOS, Android, Mac App Store). Two channels are fully live; the rest are blocked on either store submission, manual upload, or fresh screenshots. | Channel | Local version | Live version | Action remaining | | --- | --- | --- | --- | | memory.wiki (web) | 1.1.0 | live on Vercel | landing page screenshots to refresh | | Desktop (Mac, DMG) | 2.7.2 | GitHub Release | DMG download link on memory.wiki, hero GIF | | Desktop (Mac App Store) | 2.7.2 source | NOT submitted yet | first MAS submission (task #165), screenshots, App Store Connect setup | | Chrome extension | 2.7.0 | Web Store still on 2.6.0 | manual upload + 5 screenshots + small promo tile | | VS Code extension | 1.7.0 | Marketplace 1.7.0 | optional: refresh marketplace gallery for v3.0 TipTap parity | | CLI (memory-wiki-cli) | 1.4.3 | npm 1.4.3 | none | | MCP (memory-wiki-mcp) | 1.5.4 | npm 1.5.4 | none | | iOS (App Store) | 0.1.0 source | likely never shipped | screenshots, App Store Connect submission | | Android (Play Store) | 0.1.0 source, signing scaffolded | not shipped | AAB build, Play Console submission | Headline features of the cycle, in order of "users will notice": 1. **Per-user AI usage tracking** — every callAI / streamText writes a row to `ai_usage` with action, provider, model, tokens, cost. Admin Usage tab at `/admin → Usage` shows totals, daily trend, top users, per-feature breakdown, per-provider breakdown, plus the full action catalog. Pro pricing finally has billing data. 2. **Per-site Intent Capture suggestions** in the Chrome extension. Twenty-four sites covered; site chips carry a small AI sparkle icon and are dismissible. 3. **QuickLook actually registers with macOS now (v2.7.2).** Root cause turned out to be electron-builder's deep-sign overwriting the .appex's sandbox entitlement. Fixed with an afterSign hook that re-signs the .appex with the right entitlements then refreshes the parent sign chain. 4. **Threads body capture fixed.** Long posts no longer ship as `[Image #N]` — falls back to `og:description` on permalinks when the React DOM only yields a fragment. 5. **X quote-tweet body leak fixed.** Clicking Add on a quote-tweet captures the focal tweet, not the quoted one. 6. **Sidebar drag-out UX overhaul** in the web editor. Drop anywhere on the tree background to move to root. Post-drop bounce killed; replaced with a brief background-fill flash + auto-scroll-into-view. 7. **Sidebar context menu fit-to-viewport** — right-clicking the bottom-most row no longer clips the menu. Smaller polish: admin Usage tab silent auto-refresh, AI provider config admin-tunable, chrome-ext chip rail chevrons wrap at the ends, chip dedupe. --- ## Per-channel release notes ### memory.wiki (web app) **Live.** No version bump. Recent commits: - `7d7c3fb0` AI usage tracking — `ai_usage` table + logUsage helper across 22 call sites + admin Usage tab - `876b2cd1` admin Usage tab action catalog + sidebar drag-out UX + context menu fit-to-viewport - `494c6050` sidebar post-drop flash + scroll-into-view - `ea5cbf06` kill the post-drop bounce - `ca89fc7e` drop accent left bar on the flash (background fill only) - `7b0b931e` admin page periodic flicker fix - `f56eaecd` Start tab Starred + Recent show 5 by default with See More - `d730ffd7` realtime audit pass — fix sidebar miss + leaks + a11y - `695293ce` kill the false "updated elsewhere" toast + show external updates as a fresh-pulse - `95b9848b` Auto-Format runs on lite model + input-sized output cap - `7cc88318` sidebar Refresh button does a full server resync - `3b3d905b` `b972db44` AI provider cascade unification Migration `062_ai_usage.sql` applied. ### Desktop (Mac, DMG — v2.7.2) **DMG ready, GitHub Release published.** Notarized + stapled. Signed with Developer ID Application (Team W7NL89YGSD). Download: `https://github.com/raymindai/memory-wiki/releases/tag/desktop-v2.7.2` v2.7.1 was broken (Active badge said on, Space-in-Finder did nothing). v2.7.2 fixes the real cause: - electron-builder's deep-sign was overwriting the QL .appex's `com.apple.security.app-sandbox` entitlement with the host's hardened-runtime entitlements (no sandbox). macOS `pkd` then silently rejected the extension with "plug-ins must be sandboxed". - Fix: new `scripts/afterSign.js` hook re-signs the .appex with the QL entitlements file (sandbox + network.client), then refreshes the QL host bundle's signature, then refreshes the outer host's signature (shallow so it doesn't re-trigger the deep-sign). Verifies app-sandbox is present after re-sign; aborts the build if not. - `installQuickLook()` in main.js now strips quarantine xattr + unregisters stale paths from previous installs (Xcode derived-data dev builds, old install locations) before lsregister'ing the current bundle. The Repair CTA on the Home banner is still there for emergencies. ### Desktop (Mac App Store — task #165 pending) **Not submitted.** Same code base as DMG, different build target. `apps/desktop/scripts/build-mas.sh` is wired and produces a signed .pkg, but App Store Connect submission has never been done. Differences from DMG: - `appId` flips to `wiki.memory.desktop` (already configured) - `.appex` is embedded inside the host's `Contents/PlugIns/` (not Resources/), with bundle id rewritten to `wiki.memory.desktop.qlextension` per Apple's "extension must be a child of host" rule - Signed with Apple Distribution + provisioning profile (file already at `apps/desktop/build/embedded.provisionprofile`) - Wrapped as .pkg via productbuild What's blocked on submission: 1. **App Store Connect record** — never created. Need a new app entry: bundle id `wiki.memory.desktop`, primary category Productivity, secondary Developer Tools. 2. **Screenshots** — App Store requires at least one screenshot per supported size (1280×800 and 1440×900 are the common Mac sizes). See "Image production brief / Mac App Store" below. 3. **Privacy nutrition label** — App Store Connect form. Data collected: account info (email), user content (markdown docs uploaded to memory.wiki cloud), diagnostics (none). Data NOT collected: location, contacts, browsing history, ads. 4. **Export compliance** — uses HTTPS + standard TLS. Encryption Yes / Exempt (1.2.3). 5. **Demo account** — `demo@memory.wiki` with a couple of test docs already exists. Add credentials to the App Review notes. ### Chrome extension (v2.7.0) **Zip ready, GitHub Release published, Web Store upload pending.** Zip: `apps/chrome-extension/memory-wiki-clipper-2.7.0.zip` (515 KB, 36 files) GitHub Release: `https://github.com/raymindai/memory-wiki/releases/tag/chrome-ext-v2.7.0` **New (user-visible)**: Per-site Intent Capture suggestions (24+ sites). Chip rail chevrons wrap around. **Fixed**: X quote-tweet body leak, Threads body extraction (og:description fallback), Add button covering icons (dynamic svg-based positioning with !important inline), chip dedupe. ### VS Code extension (v1.7.0) **Already published on Marketplace (June 2).** No new commits since v1.7.0. Skipping. Optional: refresh the Marketplace gallery screenshots — current ones are from v1.4.x, before the v3.0 TipTap web-parity migration. ### CLI / MCP **Both up to date on npm.** No code changes this cycle. ### iOS (v0.1.0 — not yet shipped) Native SwiftUI app at `apps/ios-native/`. v8 W9 deliverable. **What's built** - Main app: timeline of your memory.wiki docs, browse + open - Share Extension (`wiki.memory.MemoryWiki.Share`) — capture from Safari, X, Threads, Notes, anywhere with iOS Share Sheet - Widget (`wiki.memory.MemoryWiki.Widget`) — Home / Lock screen, recent docs - Spotlight indexing of saved docs - Offline-first sync (local SQLite mirror, sync on launch + on background-fetch) - WebView hybrid renderer (v3.0 Phase E) — same markdown-it / KaTeX / Mermaid pipeline as the web **Bundle ids**: `wiki.memory.MemoryWiki` (host), `.Share` (extension), `.Widget` (widget) **Project structure**: generated from `project.yml` via XcodeGen — repo never has to merge a hand-edited `.pbxproj`. Existing screenshots in `apps/ios-native/screenshots/` at v011, v012, v013, v014. **What's needed for first App Store submission** 1. **App Store Connect record** — new app: bundle id `wiki.memory.MemoryWiki`, primary category Productivity, secondary Reference. Pricing free. 2. **Screenshots** — required sizes: 6.9" (iPhone 17 Pro Max), 6.5" (iPhone 14 Plus), and at least one iPad size if marking iPad compatible. See "Image production brief / iOS" below. 3. **App icon** — 1024×1024 master already in the Assets catalog from project.yml. 4. **App review notes** — demo account `demo@memory.wiki / [password]`, sample doc URL like `memory.wiki/abc123`, explanation of Share Extension flow ("After install, open Safari → tap Share → select memory.wiki to save the page as markdown"). 5. **Privacy nutrition label** — same as Mac App Store entry above. 6. **TestFlight beta** (recommended) — 1 internal test cycle before public submission. Easy to do once App Store Connect record exists. ### Android (v0.1.0 — not yet shipped) Native Kotlin/Compose app at `apps/android-native/`. v8 W9/W10 deliverable. **What's built** - Main app: timeline + browse + open - Share intent receiver — capture from any app via Android Share Sheet - Widget (Home screen, configurable size) - WebView hybrid renderer (v3.0 Phase F) — same pipeline as iOS - Offline-first via Room + sync on launch - Material 3 + design-token-driven theme (v8 Pure design language) **Application id**: `wiki.memory.MemoryWiki` **Release scaffolding is done** — `apps/android-native/RELEASE.md` documents the upload-keystore.jks layout, gradle signing config, AAB build target, and Play Console submission flow. Both files (release-keystore.properties + upload-keystore.jks) are gitignored; founder back up only. **What's needed for first Play Store submission** 1. **Play Console app entry** — package `wiki.memory.MemoryWiki`, category Productivity. Pricing free. 2. **Signed AAB build** — `./gradlew :app:bundleRelease` (signing config already wired) → produces `apps/android-native/app/build/outputs/bundle/release/app-release.aab` 3. **Screenshots** — at least 2 phone screenshots (recommended 8) at 1080×1920 or higher. See "Image production brief / Android" below. 4. **Feature graphic** — 1024×500 PNG, the Play Store hero image 5. **Privacy policy URL** — Play Store requires a public URL. Use `https://memory.wiki/privacy`. 6. **Data Safety form** — analog to Apple's nutrition label. Collected: email (for account), user-uploaded markdown content. Not collected: location, contacts, advertising IDs. 7. **Internal testing track** (recommended) — ship to internal testers first, then closed beta, then production. --- ## Image production brief Every visual asset the release needs. Each subsection lists, per channel, every image to produce with exact dimensions, content, copy overlay, source-page-to-capture, design tokens, and where the asset will be uploaded. **Global design tokens (memory.wiki Pure design language)** | Token | Value | Use | | --- | --- | --- | | ink (primary text) | `#0a0a0c` light / `#fafafa` dark | headlines, body | | muted (secondary text) | `#52525b` light / `#a1a1aa` dark | captions, labels | | faint (tertiary) | `#71717a` light / `#52525b` dark | tooltips, footer | | surface | `#fafafa` light / `#09090b` dark | page background | | border | `#e4e4e7` light / `#27272a` dark | dividers | | accent | `#fb923c` (warm orange) | brand tint, sparingly | | micro-lime | `#c0ff00` | 6 to 12px badges/dots ONLY (never bg, never large) | **Typography** - Headline: Cal Sans (bundled), tracking `-0.01em` - Body: system-ui / -apple-system - Mono: JetBrains Mono (bundled) **Brand voice for image copy** Plain. Specific. Verbs over adjectives. No "transform your workflow", no "supercharge". Avoid em-dash and middle-dot as separators inside image copy; use spacing or a forward slash. Mention "memory.wiki" lowercase. Reference features by their actual UI name. Numbers ("24+ sites", "2.7.2", "3 seconds") are good. --- ### Chrome Web Store (priority 1) Five images. Specs unchanged from earlier draft below. #### chrome / 01-hero.png | Field | Value | | --- | --- | | Dimensions | 1280 × 800 | | Background | Pure dark (`#09090b`), 24px margin | | Capture | Popup open over Hacker News or arXiv. Site-suggestion chips visible at the front of the chip rail with the AI sparkle icon | | Overlay | Top-left: "memory.wiki Clipper" (Cal Sans 32px ink). Sub: "Capture, with intent." (18px muted). Top-right small mono pill "v2.7.0" | | Caption | "Per-site Intent suggestions / 24+ sites covered" | #### chrome / 02-site-suggestions.png | Dimensions | 1280 × 800 | | Background | Light (`#fafafa`) | | Capture | 3 mock browser frames stacked: YouTube, arXiv, GitHub. Each shows its popup with matching site chips. Sparkle icon visible | | Headline | "It knows where you are." | | Sub | "On YouTube: 'Summarize from transcript'. On arXiv: 'Abstract + contributions'. On GitHub: 'README in 5 bullets'." | #### chrome / 03-social-capture.png | Dimensions | 1280 × 800 | | Background | Dark (`#09090b`) | | Capture | Split: left = X / Threads post with Add button NOT covering pencil/more, right = resulting memory.wiki URL preview with clean markdown | | Headline | "Save a post, get a URL." | | Sub | "Author + body + media. No screenshot. Any AI can read it." | | Use a real Korean Threads post (the one that motivated the bug fix) so the screenshot is its own QA evidence | #### chrome / 04-ai-transform.png | Dimensions | 1280 × 800 | | Background | Light (`#fafafa`) | | Capture | Popup with Intent textarea filled ("Action items as checklist") + result preview below | | Headline | "Type what you want. Get it." | | Sub | "Polish, summarize, extract code, action items as checklist — your prompt, your call." | #### chrome / 05-promo-tile.png (small promo, 440×280) Morph blob left + "memory.wiki Clipper" wordmark right, "Capture, with intent." sub, mono "v2.7.0" corner pill. Dark. #### chrome / 06-marquee-1400x560.png (optional, for featured-tile placement) Wide horizontal. Blob + 3 bullet features: per-site / cross-AI / X-Threads-pages. --- ### memory.wiki landing (priority 2) #### site / hero-2026-06.png | Dimensions | 2400 × 1200 @2x, displayed at 1200 × 600 | | Layout | Headline left, card collage right (doc URL chip, chrome popup with site chips, desktop Recent list) | | Headline | "From thought to shared URL, faster than your AI typed it." | | Sub | "Capture anywhere — web pages, X, Threads, AI chats, files — to a memory.wiki URL that Claude, ChatGPT, Cursor, and Gemini can all read." | #### site / feature-admin-usage.png | Dimensions | 1600 × 1000 | | Capture | Real `/admin → Usage` screenshot: totals header, daily cost trend chart, ≥1 row of Top users, ≥3 rows of per-feature breakdown | | Headline | "Pro pricing, on real data." | | Use real (anonymized) admin view — Pro pricing legitimacy shot | #### site / feature-cross-ai.png | Dimensions | 1600 × 1000 | | Layout | Center: memory.wiki/abc123 URL chip. 4 arrows radiating to Claude / ChatGPT / Cursor / Gemini marks | | Headline | "One URL. Every AI reads it the same way." | #### site / feature-quicklook.gif | Dimensions | 1200 × 750, 8s loop, ≤ 4 MB | | Capture | Finder window, .md file, Space → preview opens with our QL renderer (heading + code + mermaid). Close, repeat once | | Caption | "QuickLook for .md files. Press Space. That's the install." | --- ### Mac Desktop DMG hero / docs (priority 3) #### desktop / 01-hero-2.7.2.png | Dimensions | 1920 × 1200 | | Capture | Full app window on macOS Sonoma dark mode. Sidebar with Synced / Local / Cloud expanded, open .md doc showing TipTap WYSIWYG (heading + list + code + math + mermaid), ambient morph blob low-opacity background | | Caption | "memory.wiki Desktop 2.7.2 — local files + cloud sync, in one editor." | #### desktop / 02-quicklook-repair.png | Dimensions | 1600 × 900 | | Capture | Home tab's QuickLook banner. Side-by-side: "ACTIVE" state (after repair) and "Repair" state (icon dimmed). Arrow between captioned "One click registers with macOS" | #### desktop / 03-sidebar-drag.png | Dimensions | 1600 × 900 | | Capture | Mid-drag screenshot: tab being dragged out of folder, tree showing the subtle background tint, destination row about to flash | | Caption | "Drag anywhere out of a folder. It scrolls into view and flashes — so you see where it went." | --- ### Mac App Store (NEW — priority 3.5, blocking MAS submission) App Store requires its OWN screenshots (not the DMG marketing shots). Required sizes: #### mas / 01-1280x800.png (primary) | Dimensions | 1280 × 800 | | Capture | Split view: 사이드바(좁게) + 에디터 + preview pane. 가운데 doc은 H1 + 코드(highlight) + KaTeX 수식 + Mermaid 다이어그램 + 표가 한 화면에 다 들어가게. Reader 품질 + WYSIWYG 동시 노출 | | Caption (entered in App Store Connect) | "The best Markdown reader and editor on Mac." | #### mas / 02-1280x800.png | Capture | Editor view — WYSIWYG content with mermaid diagram + KaTeX math + syntax-highlighted code block, all rendered | | Caption | "Same renderer as memory.wiki. What you see is what visitors see." | #### mas / 03-1280x800.png | Capture | Home tab with the QuickLook banner showing ACTIVE state | | Caption | "QuickLook for .md files. Press Space on any markdown file in Finder." | #### mas / 04-1280x800.png | Capture | Cloud tab with bundles + hub view, showing the AI sidebar open for one selected doc | | Caption | "Sync with the cloud. Chat with your docs. Cross-AI by default." | #### mas / 05-1440x900.png (large display) | Dimensions | 1440 × 900 | | Capture | Same as mas/01 but at 1440×900 — App Store also accepts this as a primary size | **Marketing text fields (App Store Connect)** - **App name**: `memory.wiki` - **Subtitle** (30 char max): `Markdown to a shareable URL` - **Promotional text** (170 char, can be edited without re-review): `Per-user AI usage tracking, QuickLook for .md files, full TipTap WYSIWYG. Same cloud as memory.wiki on web.` - **Description**: see Copy library below - **Keywords** (100 char): `markdown,memory,wiki,notes,publish,wysiwyg,quicklook,obsidian,bear,ulysses` - **Support URL**: `https://memory.wiki/support` - **Marketing URL** (optional): `https://memory.wiki` --- ### iOS App Store (NEW — priority 4) Required screenshot sizes (Apple requires AT LEAST the 6.9" iPhone size; 6.5" recommended for older devices): #### ios / 6.9-01.png (iPhone 17 Pro Max — primary) | Dimensions | 1320 × 2868 (portrait) | | Capture | Timeline view: recent docs as cards with title + first line + tiny visibility chip (Public / Private / Shared) | | Caption | "Every memory.wiki doc, in your pocket." | #### ios / 6.9-02.png | Capture | Share Extension flow: Safari article + Share Sheet open with "memory.wiki" highlighted | | Caption | "Save anything from Safari, X, Threads — to a URL Claude / ChatGPT can read." | #### ios / 6.9-03.png | Capture | Open doc with rendered TipTap content (heading + list + code block + KaTeX math) | | Caption | "Renders Markdown the same way the web does." | #### ios / 6.9-04.png | Capture | Widget on a Home screen — recent docs as a tappable list | | Caption | "Widget on Home or Lock screen. Tap to open." | #### ios / 6.9-05.png | Capture | Spotlight search for a doc title — result appears with memory.wiki icon | | Caption | "Spotlight finds your docs by title or body." | **Repeat same set at 6.5" (1284 × 2778)** if marking compatible with older devices. Existing `apps/ios-native/screenshots/v014/` may already have prior screenshots — start from those. **App Preview video** (optional, 15-30s) — record a Share Extension capture + open in app + scroll timeline. Mute audio. **Marketing text** - **App name**: `memory.wiki` - **Subtitle**: `Capture to a shareable URL` - **Promotional text**: `Capture anywhere with the Share Extension. Widget on Home + Lock screen. Spotlight indexing. Offline-first.` - **Keywords**: `markdown,notes,share,bookmark,obsidian,bear,scrapbook,wiki,memory,publish` - **Description**: see Copy library --- ### Android Play Store (NEW — priority 4) #### android / 01-phone-1080x1920.png | Capture | Timeline of recent docs (same as iOS 6.9-01) | | Caption | "Every memory.wiki doc, in your pocket." | #### android / 02-phone-1080x1920.png | Capture | Share intent flow: Android Share Sheet showing memory.wiki as a target | | Caption | "Share to memory.wiki from any app." | #### android / 03-phone-1080x1920.png | Capture | Open doc with rendered Markdown | | Caption | "Same renderer as memory.wiki on web." | #### android / 04-phone-1080x1920.png | Capture | Home screen widget showing recent docs | | Caption | "Widget for one-tap access." | #### android / 05-tablet-1920x1200.png (optional but recommended) | Capture | Tablet view: 2-pane (timeline left, doc right) | | Caption | "Big-screen layout on tablets and foldables." | #### android / feature-graphic-1024x500.png (REQUIRED) | Dimensions | 1024 × 500 | | Layout | Wide horizontal hero. Phone mockup on the right showing the app + headline left | | Headline | "memory.wiki for Android" | | Sub | "Capture, sync, share." | Existing prior screenshots: `apps/android-native/screenshots/v014/` — start there. **Marketing text** - **App name**: `memory.wiki` - **Short description** (80 char): `Capture to a shareable URL. Share Sheet integration. Widget. Offline-first.` - **Full description**: see Copy library - **Category**: Productivity --- ### VS Code Marketplace (priority 5) #### vscode / banner-1376x768.png | Capture | VS Code with memory.wiki sidebar open, open .md, WYSIWYG preview right with mermaid | | Caption | "memory.wiki for VS Code / Sidebar / WYSIWYG preview / one-click publish" | #### vscode / 02-sidebar.png | Capture | Sidebar close-up: Starred top, Cloud docs grouped by state (Public, Shared, Private, View only), Local-only bottom | | Caption | "Every cloud doc, grouped by who can see it." | #### vscode / 03-preview.png | Capture | Editor split: markdown source left, full TipTap preview right (code + KaTeX + mermaid) | | Caption | "Same renderer as memory.wiki. What you see is what visitors see." | --- ### Social launch set (priority 6) #### social / twitter-1200x675.png | Headline | "Capture from anywhere on the web. Tell it what you want. Get a URL Claude / ChatGPT / Cursor can all read." | | Footer | "memory.wiki Clipper 2.7.0 — out now for Chrome." | #### social / linkedin-1200x627.png Same headline + screenshot. Caption (post body, not on image): > Spent the week shipping the boring-but-load-bearing parts: per-user AI usage tracking across every surface, QuickLook on macOS that actually registers with the system, and a chrome popup that knows whether you're on YouTube vs. arXiv. Small features individually, but together they're the difference between "I tried this once" and "I use this every day." #### social / threads-1080x1350.png | Layout | Stacked: screenshot top, headline middle, 3-feature list bottom | | Headline | "It guesses what you want to do, before you type it." | --- ## Copy library ### Chrome Web Store **Name**: `memory.wiki Clipper` **Short description** (132 char max) > Save anything on the web to a memory.wiki URL any AI can read. Per-site Intent Capture. AI transforms on the fly. **Full description** > memory.wiki Clipper turns any web page, AI chat, social post, image, or selection into a clean memory.wiki URL — the same URL Claude, ChatGPT, Cursor, and Gemini all read identically. > > What's new in 2.7.0 > > Per-site Intent Capture. The popup looks at the current tab and surfaces the 3 most likely intents for that kind of page. On YouTube: summarize from transcript. On arXiv: abstract + contributions. On Stack Overflow: accepted answer + code. Click a chip, capture, done. > > X / Threads / page capture, fixed properly. Quote-tweets, long Threads posts (the kind that used to come through as just an image), URL-only tweets with link cards — all now capture cleanly. The Add button positions itself dynamically so it never covers the pencil or more-menu. > > Chip rail wraps at the ends. No more dead clicks. > > Core > > Capture anywhere: full pages, selections, images, AI chats (Claude / ChatGPT / Gemini / Perplexity), X / Threads / Reddit / Hacker News / Medium / Substack posts. AI transform on the fly: "Action items as checklist", "Cursor-ready reference", "TL;DR in 2 sentences", or type your own intent. Every capture becomes a memory.wiki URL anyone (or any AI) can open. No login required for anonymous captures. Sign in to attach captures to your account. > > No tracking. No third-party data sharing. Source on GitHub at raymindai/memory-wiki. ### Mac App Store description > memory.wiki Desktop is the native macOS companion to memory.wiki. Sidebar to every doc in your cloud, side by side with local .md files on disk. WYSIWYG editor matches the web exactly (GFM, KaTeX math, Mermaid diagrams, syntax-highlighted code). Two-way sync. > > Highlights > > - QuickLook for .md files. Press Space on any markdown file in Finder, get a rendered preview instantly. > - Sidebar groups docs by visibility (Public, Shared, Private, View-only) and source (Synced, Local, Cloud-only). > - Every doc you publish gets a memory.wiki URL that Claude, ChatGPT, Cursor, and Gemini all read the same way. > - Drag-and-drop import. Move files between folders. Right-click for full per-doc actions. > - Offline-first. Edit local files anytime; sync resumes when you're back online. > > No tracking. No third-party data sharing. ### iOS App Store description > memory.wiki for iOS. Capture from anywhere with the Share Extension. Recent docs on Home + Lock screen via the Widget. Spotlight finds your docs by title or body. Offline-first. > > Highlights > > - Share Extension: select "memory.wiki" from any iOS Share Sheet — Safari, X, Threads, Notes, Mail — to save the source as a clean markdown doc on memory.wiki. > - Widget: recent docs on Home or Lock screen. Tap to open. > - Spotlight indexing: find your docs alongside system search results. > - Renders Markdown the same way memory.wiki does on web (GFM + KaTeX + Mermaid). > - Offline-first: docs cached locally, sync on launch and in the background. > > Same account as memory.wiki on web. No tracking. No third-party data sharing. ### Android Play Store description (full) > memory.wiki for Android. Capture from any app via the Share Sheet. Home screen widget with recent docs. Offline-first. > > Highlights > > - Share intent receiver: send any text / URL / image from any app to memory.wiki via Android's Share Sheet. > - Widget: recent docs on your Home screen, configurable size. > - Same renderer as memory.wiki on web (GFM + KaTeX + Mermaid + syntax highlighting). > - Offline-first: docs cached via Room; sync on launch. > - Material 3 themed; light and dark modes follow the system. > > Same account as memory.wiki on web. No tracking. No third-party data sharing. ### VS Code Marketplace description (if refreshing) > memory.wiki for VS Code. Sidebar to your memory.wiki cloud right inside the IDE. Publish a Markdown file, get a permanent URL Claude, ChatGPT, Cursor, and Gemini all read the same way. WYSIWYG preview matches the web renderer exactly (GFM, KaTeX, Mermaid, code highlighting). Sidebar lists every cloud doc by visibility state. Two-way sync. ### memory.wiki landing — feature copy **Per-user AI usage tracking** > Every AI call across memory.wiki — chat, polish, format, transform, hub synthesis — writes a row to ai_usage with the action, provider, model, tokens, and cost. The admin Usage tab shows totals, daily trend, per-user spend, and a per-feature breakdown. Pricing is built on real data, not estimates. **Per-site Intent Capture (Chrome extension)** > Open the popup on YouTube and the first chip you see is "Summarize from transcript". On arXiv: "Abstract + contributions". On GitHub: "README in 5 bullets". Twenty-four sites covered out of the box. Click a chip, capture, done. **Cross-AI delivery model** > Every memory.wiki URL serves a clean markdown payload — no auth wall, no proprietary container, no rendering tricks. Claude, ChatGPT, Cursor, Gemini, Perplexity all fetch the same bytes. The cross-AI moat is the delivery model, not the retrieval. --- ## Manual launch checklist (in order) ### Tier 1 — already shipped or one-click away 1. ✅ Web auto-deployed 2. ✅ Desktop DMG v2.7.2 — GitHub Release published 3. ✅ Chrome ext v2.7.0 zip — GitHub Release published 4. ⬜ **Chrome Web Store upload** (you, \~10 min + 1-3 day review) - Go to `https://chrome.google.com/webstore/devconsole` - Package tab → Upload new package → `apps/chrome-extension/memory-wiki-clipper-2.7.0.zip` - Store listing tab → replace screenshots (see Chrome brief above) + paste copy - Submit for review 5. ⬜ **memory.wiki landing refresh** — update Mac download link to v2.7.2, swap in new feature shots ### Tier 2 — new stores (multi-week effort) 6. ⬜ **Mac App Store first submission** (task #165) - Create App Store Connect record - Build .pkg via `cd apps/desktop && ./scripts/build-mas.sh` - Take 4-5 screenshots per "Mac App Store" brief above - Fill privacy nutrition label, export compliance, demo account - Submit 7. ⬜ **iOS App Store first submission** - Create App Store Connect record for `wiki.memory.MemoryWiki` - Archive in Xcode → upload via Transporter - Take 5+ screenshots at 6.9" per iOS brief above - Fill privacy nutrition label, demo account - TestFlight 1 internal cycle, then Submit 8. ⬜ **Android Play Store first submission** - Create Play Console app entry - Build AAB via `./gradlew :app:bundleRelease` - Take 4+ phone + 1 tablet screenshot + feature graphic per Android brief above - Fill Data Safety form + privacy policy URL - Internal testing → closed beta → production ### Tier 3 — polish 9. ⬜ VS Code Marketplace gallery refresh (optional) 10. ⬜ Social launch posts (after Chrome Web Store goes live) 11. ⬜ Verify QuickLook on a fresh v2.7.2 install yourself before announcing --- ## What I did automatically before writing this doc For paper trail: - Built + notarized + stapled Desktop v2.7.2 DMG (`memory.wiki-2.7.2-arm64.dmg`) - Created `afterSign.js` hook that re-signs the QL .appex with the right entitlements file then refreshes the parent sign chain - Bumped Chrome extension manifest 2.6.0 → 2.7.0, packaged clean zip (515 KB, 36 files) - Tagged `desktop-v2.7.2`, `desktop-v2.7.1`, `chrome-ext-v2.7.0` on origin - Created GitHub Releases for the desktop and chrome ext - Pushed everything to main What remains is human-only: store submissions, new screenshots, copy review. --- *Generated 2026-06-05. Update in place as items ship; archive when checklist clears.* --- ## Update 2026-06-07 Continuing release work today, after the initial audit. ### Web — additional polish landed All auto-deployed via Vercel: - `6e5d4d63` `f72d13a6` `5da6aa69` `c1f586fa` `1fff3b4d` — auth popup overhaul: Apple sign-in added across editor + DocumentViewer, 4-pill column layout (no divider, email is the 4th pill), 18px icon slots, Apple visual-center nudge - `a7394d34` — brand sweep: 154 files, `Memory.Wiki` / `Memory Wiki` → `memory.wiki` lowercase (code identifiers like `MemoryWikiLogo` untouched) - `72612186` — sidebar: drag catchment area collapses to 0 in idle state (the 120px reserve was making MDs / Bundles look weirdly tall vs. neighbour sections) - `7c6ab0dc` — welcome work reverted per founder request; auth popup kept ### Web — download links unified `d020e49a` next.config.ts redirects: - `/downloads/memory-wiki-desktop.dmg` → desktop-v2.7.2 DMG (GH Releases) - `/download/mac` → same (short URL for sharing) - `/downloads/memory-wiki-chrome.zip` → chrome-ext-v2.7.0 zip (GH Releases) Updated `InstallPure.tsx` + `PluginsPure.tsx` to use the new stable chrome path (was pointing to a stale v2.2.2 static asset). 308 redirects so users hit GitHub's CDN directly — no 110MB DMG streaming through Vercel, and each release just edits one line per channel. ### Apple Sign in setup — note Apple OAuth for web was failing with "invalid_request — Invalid client id or web redirect url" because Supabase was sending the iOS app's Bundle ID (`wiki.memory.MemoryWiki`) as the OAuth client_id, but Apple requires a separate **Services ID** for web flows. Resolved with founder by: 1. Apple Developer Portal — Services ID `wiki.memory.MemoryWiki.signinservice` already existed but wasn't wired to Supabase. Verified Primary App ID = `wiki.memory.MemoryWiki`, domains include `gxvhvcuoprbqnxkrieyj.supabase.co` + `memory.wiki`, return URL = `https://gxvhvcuoprbqnxkrieyj.supabase.co/auth/v1/callback` 2. Supabase Apple provider Client IDs list updated to `wiki.memory.MemoryWiki.signinservice,wiki.memory.MemoryWiki` — Services ID FIRST so it's used for web OAuth flow, Bundle ID second so iOS native ID-token verification still passes iOS native Apple sign-in continues to work because Bundle ID is still in the allowed list. Same Apple ID account → same Supabase user across iOS + web. ### GitHub OAuth app — needs founder update The GitHub OAuth consent screen still says "Authorize **mdfy.cc**" with the old yellow pixel face logo. This is purely a GitHub Developer Settings record, not a code thing. Founder TODO at https://github.com/settings/developers → OAuth Apps → find "mdfy.cc" entry: - **Application name**: `mdfy.cc` → `memory.wiki` - **Homepage URL**: → `https://memory.wiki` - **Application logo**: upload memory.wiki morph blob (1024×1024) - **Authorization callback URL**: keep `https://gxvhvcuoprbqnxkrieyj.supabase.co/auth/v1/callback` Same audit needed for Google OAuth consent screen at https://console.cloud.google.com/apis/credentials/consent — app name / homepage / logo all need `memory.wiki` branding. ### MAS .pkg build — in progress Running `./scripts/build-mas.sh` against v2.7.2 source. Output will land at `apps/desktop/dist/memory.wiki-2.7.2.pkg`. First-time observation: build is currently using the Developer ID Application identity (F3DF…) instead of Apple Distribution (538E…). May need a `CSC_NAME` env var override before this .pkg passes App Store Connect validation. Will verify once build completes. ### Latest channel state | Channel | Local | Live | Action | | --- | --- | --- | --- | | memory.wiki (web) | 1.1.0 | live + download redirects wired | landing screenshots still | | Desktop DMG | 2.7.2 | GH Release | done; landing link now redirects | | Desktop MAS | 2.7.2 source | NOT submitted | build in progress, then App Store Connect setup | | Chrome ext | 2.7.0 | Web Store still 2.6.0 | Web Store upload (you) | | VS Code | 1.7.0 | Marketplace 1.7.0 | none (no new commits) | | CLI / MCP | 1.4.3 / 1.5.4 | npm matches | none | | iOS | 0.1.0 src | not shipped | first submission | | Android | 0.1.0 src | not shipped | first submission | --- ## Update 2026-06-07 (continued) — Desktop v2.7.3 shipped ### What's new in v2.7.3 Three bugfixes / polish items, one ship: 1. **Manual theme toggle** in the desktop header. Sun / monitor / moon icon cycles `system → light → dark → system`, persisted in localStorage as `mw-theme`. Default stays `system` so a fresh install still tracks macOS Dark Mode. Light mode CSS tokens were already wired — this just exposes the choice in the UI. 2. **Publish button color fix.** The header Publish button was reading "우중충한 녹색" (dull green) because the border was hardcoded to `rgba(181, 255, 26, 0.25)` — leftover from the old micro-lime brand period. Replaced with token-based `var(--border)` so the chip follows the current palette in either theme. 3. **Cloud doc loading no longer hangs forever.** Two compounded failure modes: - `apiPull` had no timeout — a stalled network request left the fetch pending indefinitely. Added 15s `AbortController` timeout with a clear "Network timeout (15s). Check your connection." error. - Renderer fired `previewCloudDoc` IPC without `.then()` / `.catch()`, so main-process errors (`{error: ...}`) never cleared the spinner. Both call sites (sidebar cloud-doc click + Home list click) now surface the error inline with the failure reason. Also: outline panel (right-side TOC) was going stale on tab switch — required closing + reopening to refresh. Fixed with `key={activeTabId}` on the inner heading container to force a React remount when the active doc changes. Web side; ships on the next Vercel deploy too. ### Build + release - DMG: `apps/desktop/dist/memory.wiki-2.7.3-arm64.dmg` (103 MB, notarized + stapled + validated) - MAS .pkg: `apps/desktop/dist/memory.wiki-2.7.3.pkg` (102 MB, signed with `3rd Party Mac Developer Installer: Hyunsang Cho (W7NL89YGSD)`) - GH Release: - Web `next.config.ts` redirects bumped to v2.7.3 (both `/downloads/memory-wiki-desktop.dmg` and `/download/mac` now point at the v2.7.3 DMG) ### MAS build script fix (avoid losing the DMG) Earlier MAS attempt deleted the just-notarized v2.7.3 DMG. `scripts/build-mas.sh` opened with a blanket `rm -rf dist`, which wiped every artifact (including the DMG produced minutes before). Fixed with a narrower scope so MAS builds preserve sibling outputs: ```bash rm -rf dist/mas-arm64 rm -f dist/memory.wiki-*.pkg ``` Committed in `505cc616`. DMG rebuilt cleanly after the patch. ### What still needs human action - **MAS Transporter delivery** — Transporter.app already opened with the v2.7.3 .pkg loaded; founder clicks DELIVER to upload to App Store Connect. - **iOS 1.1 (1) .ipa upload** via Transporter (Transporter previously opened in the prior turn). - **Chrome Web Store** — manual upload of v2.7.0 zip + 5 screenshots still pending. - **Mac App Store record + privacy nutrition** — still pending for first MAS submission (task #165). - **Android Play Console first submission** — still pending. ### Latest channel state | Channel | Local | Live | Action | | --- | --- | --- | --- | | memory.wiki (web) | 1.1.0 | live + v2.7.3 redirects wired | landing screenshots | | Desktop DMG | 2.7.3 | GH Release | done | | Desktop MAS | 2.7.3 .pkg | uploading via Transporter | App Store Connect record + screenshots | | Chrome ext | 2.7.0 | Web Store still 2.6.0 | Web Store upload (founder) | | VS Code | 1.7.0 | Marketplace 1.7.0 | none | | CLI / MCP | 1.4.3 / 1.5.4 | npm matches | none | | iOS | 1.1 (1) | TestFlight pending | Transporter DELIVER | | Android | 0.1.0 src | not shipped | first submission | --- ## Mac App Store 스크린샷 카피 (3-part, iOS 톤 그대로) 8개 옵션 — 첫 3장이 install sheet에 노출되므로 1-3-4 또는 1→3→4→2→6→5→7→8 narrative arc 추천. ### 1. Hero / overview — "Best Markdown reader and editor" - **Pill** — `Reader and Editor` - **Headline** — `The best Markdown` / `reader and editor.` - **Sub** — `Beautifully rendered. Live WYSIWYG editing.` / `KaTeX, Mermaid, code, all built in.` ### 2. Sidebar (Local + Cloud + Synced) - **Pill** — `One Sidebar` - **Headline** — `Cloud and local,` / `in one tree.` - **Sub** — `Synced, local-only, cloud-only — grouped clearly.` / `Drag between folders. Right-click for everything.` ### 3. WYSIWYG editor (TipTap) - **Pill** — `WYSIWYG Editor` - **Headline** — `Edit like a doc,` / `save like a URL.` - **Sub** — `Headings, lists, code, math, diagrams — all live.` / `Same renderer as memory.wiki on the web.` ### 4. QuickLook in Finder - **Pill** — `QuickLook` - **Headline** — `Press Space.` / `See Markdown.` - **Sub** — `Any .md file in Finder previews instantly.` / `KaTeX math, Mermaid diagrams, code highlighting.` ### 5. Built-in chat (Mac-context version) - **Pill** — `Built in Chat` - **Headline** — `Chat with` / `your own notes.` - **Sub** — `Built-in chat over your hub, bundles, and MDs.` / `Answers cite the source.` ### 6. Bundles - **Pill** — `Bundles` - **Headline** — `Group docs into` / `a thinking surface.` - **Sub** — `Bundle related notes, tag a tension to resolve,` / `share the bundle as one AI-ready URL.` ### 7. Drag-and-drop import - **Pill** — `Drag To Import` - **Headline** — `Drag files in,` / `get URLs out.` - **Sub** — `PDF, Word, PowerPoint, HTML, code, Markdown.` / `Drop them on memory.wiki, get clean Markdown back.` ### 8. Cross-AI (closing slide) - **Pill** — `Any AI Reads It` - **Headline** — `Paste the URL.` / `Any AI reads it.` - **Sub** — `Claude, ChatGPT, Cursor, Gemini, Codex —` / `they all fetch the same Markdown payload.` **Recommended order**: 1 (best reader/editor) → 3 (WYSIWYG) → 4 (Mac-only QuickLook). 10장 full deck이면 1→3→4→2→6→5→7→8 (reader/editor → 편집 깊이 → finder 차별점 → 관리 → 사고 → 대화 → 가져오기 → 공유). ## Mac App Store 스크린샷 제작 가이드 iOS 작업 톤 그대로 + Mac 특수 사항 반영. ### 1. Apple 요구사항 (Mac) | Spec | Value | | --- | --- | | 허용 해상도 | **2880 × 1800** (Retina 권장 / 가장 sharp), 또는 1440×900 / 2560×1600 / 1280×800 중 택1 | | 갯수 | locale 당 최대 10장 | | 파일 | PNG (권장) 또는 JPEG, RGB, transparency 없음 | | 첫 3장 | install sheet에 직접 노출 (가장 중요) | | 비율 | 16:10 고정 | **한 사이즈로 통일** — 2880×1800 추천 (다른 사이즈는 자동 다운스케일 처리). ### 2. 3-Part Overlay 구조 (iOS와 동일) ```text ┌─────────────────────────────────────────────┐ │ │ │ [ mono pill ] │ ← 16-20% from top │ │ │ Headline display │ ← 2 lines, large │ 2 lines, period end. │ │ │ │ Mono sub, two lines. │ ← 2 lines, smaller │ Telegraph style. │ │ │ │ ┌─────────────────────────────────┐ │ │ │ │ │ ← App window screenshot │ │ app window capture │ │ inside a Mac frame │ │ (centered, ~70-75% │ │ OR clean window │ │ of canvas width) │ │ with shadow │ │ │ │ │ └─────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────┘ ``` ### 3. Design tokens (정확한 값) | Token | Value | Use | | --- | --- | --- | | Canvas bg | radial gradient `#0a0a0c` 중심 → `#000000` edge | 배경 (iOS dark 그대로) | | Ambient blob | morph blob SVG, opacity 0.06 \~ 0.12, blur 80px | 배경 가운데 살짝 | | Pill bg | `#1c1c1c` 또는 `var(--border)` | mono pill | | Pill border | 1px `rgba(255,255,255,0.08)` | 분리감 | | Pill text | JetBrains Mono, 700, **24px**, ink `#fafafa`, letterSpacing 1.5 | "Built in Chat" 같은 거 | | Headline | Cal Sans, **140-160px** (2880×1800 기준), weight 700, ink `#fafafa`, line-height 1.0 | 2-줄 | | Sub | JetBrains Mono, **42px**, weight 400-500, `#a1a1aa` (muted), line-height 1.45, text-align center | 2-줄 | | Mac window shadow | `0 60px 120px rgba(0,0,0,0.6)` | 앱 윈도우 입체감 | | Mac window radius | 12px | macOS 윈도우 곡률 | 폰트 파일은 이미 repo에: `apps/chrome-extension/fonts/CalSans-Regular.ttf`, `JetBrainsMono-Regular.woff2`. Figma에 import해서 사용. ### 4. Per-screenshot 캡쳐 시나리오 각 스크린샷마다 **앱을 어떤 상태로 만들어야 하는지** + **무엇을 캡쳐하는지** + **카피**. **#1 Hero — Best Markdown reader and editor** (1순위, install sheet 첫 자리) - 앱 상태 — Split view (사이드바 좌측 + 가운데 에디터 + 우측 preview pane). 가운데 doc에는 마크다운의 모든 기능이 한 화면에 보이게: H1 + 본문 + 코드 블록 (syntax highlight) + KaTeX 수식 한 줄 + Mermaid 다이어그램 (작게) + 표. 이 한 장이 "이거 보이는 거 다 됨" 증명 — reader로서의 렌더링 품질 + editor로서의 WYSIWYG 둘 다 동시 노출이 핵심 - 캡쳐 영역 — 앱 윈도우 전체 (1600×1000 정도). 사이드바는 좁게, 에디터 + preview가 hero - macOS 메뉴바 — 포함 (더 native하게) - 팁 — demo 계정에 "Markdown Showcase" doc 하나 미리 만들어두기 (heading + math + mermaid + code + table 한 페이지에 다 들어간 것). 이 doc는 #1 외에 reader/editor 포지셔닝 영상에도 재사용 가능 **#2 WYSIWYG editor** - 앱 상태 — 새 doc 만들고 모든 기능 한 화면에 보이게: H1 + 본문 + 인용 + 코드 블록 (highlight) + Mermaid 다이어그램 (작게) + KaTeX 수식 한 줄. 사이드바 접기 - 캡쳐 영역 — 에디터 영역만 크게 - 팁 — demo 계정으로 "Markdown Syntax Guide" doc 같은 거 있으면 그거 띄우면 1초 **#3 QuickLook** (Mac 유일 차별점) - 앱 상태 — 앱이 아니라 **Finder + QuickLook 미리보기** 캡쳐. Finder 열고 .md 파일 하나 선택 → Space → QL 패널 떴을 때 - 캡쳐 영역 — Finder 윈도우 + QL 패널 둘 다 - 팁 — QL 패널 안의 doc은 표 / 수식 / 다이어그램 다 들어간 것. selling point가 곧 차별점 **#4 Sidebar (Local + Cloud + Synced)** - 앱 상태 — 사이드바 가장 펼친 상태. Cloud 섹션에 docs 여러 개, Local 섹션에도 몇 개, Synced 섹션에 mix. 폴더 1-2개 expanded - 캡쳐 영역 — 사이드바 + 살짝의 에디터 (사이드바가 hero가 되도록) **#5 Built-in Chat** - 앱 상태 — 어떤 doc 또는 hub view, 우측 AI Chat 패널 열림. 짧은 대화 한두 턴 (질문 → AI 답변 + citation chip) - 캡쳐 영역 — 에디터 + AI 패널 **#6 Bundles** - 앱 상태 — Bundle 하나 열린 상태. 멤버 docs 3-5개, concept graph 시각화 보이면 더 좋음 - 캡쳐 영역 — Bundle view 전체 **#7 Cross-AI** (closing) - 앱 상태 — 본인 hub URL을 가운데에. 또는 doc URL을 Claude/ChatGPT에 paste한 모습 (creative composite — 다른 화면 mockup) - 캡쳐 영역 — 실제 memory.wiki URL이 보이는 화면 ### 5. 제작 워크플로 (Figma 권장) 1. 새 Figma 파일, 캔버스 2880×1800 frame 7개 만들기 (스크린샷별) 2. 공통 layer를 component로: - Background gradient - Ambient blob (low opacity SVG) - Pill template (auto-layout, 24px 텍스트, padding 12/20) - Headline text (Cal Sans 140px) - Sub text (JetBrains Mono 42px, line-height 1.45, text-align center) 3. 앱 캡쳐: - macOS에서 데스크탑 앱 열고 시나리오대로 setup - Cmd+Shift+5 → "Window 캡쳐" 선택 → 윈도우 클릭 → 사진 (.png \~/Desktop) - Figma로 drag → 해당 frame에 배치, 75% 너비 + 가운데 정렬 + shadow 적용 4. Export: 각 frame 우클릭 → Export as PNG, 1x (이미 2880px) **대안 (Figma 안 쓰면)**: macOS 기본 Preview.app + Pixelmator 또는 Acorn도 충분. iOS 스크린샷도 같은 사이즈 + 같은 폰트로 일관성 유지. ### 6. 캡쳐 전 체크리스트 - [ ] macOS dark mode (앱이 어두운 톤이라 더 통일감) - [ ] 사이드바 + 우측 패널 너비를 매 캡쳐마다 일관되게 - [ ] 본인 demo doc들 미리 정리해놓기 (제목 자연스럽게, 본인 실명 노출 X, "Ron's hub" 같은 가명) - [ ] 알림 / dock badges OFF - [ ] 시계는 9:41 (Apple 관습) 또는 신경 안 써도 됨 (Mac은 iOS만큼 엄격하지 않음) - [ ] AI panel 텍스트는 데모스러운 자연스러운 문장 (lorem ipsum X) ### 7. FAQ **Q: Mac window를 device bezel로 감싸야 함**?A: 안 해도 됨. App Store는 그냥 PNG 보여줌. 윈도우 자체의 traffic lights + title bar가 자연스러운 frame. 더 marketing-스럽게 보이려면 mockuphone.com 등에서 MacBook bezel composite 가능. **Q: 캡션 텍스트가 클러터되면**?A: Pill / Headline / Sub 사이 spacing을 30-40px씩. Headline과 윈도우 사이는 80-120px. **Q: 첫 3장만 만들어도 됨**?A: 됨. 첫 3장이 가장 노출되고, 나머지 7장은 점진적으로 추가 가능 (리뷰 통과 후에도 수정 OK). --- ## Chrome Web Store v2.7.1 — Store listing copy Web Store 거절 사유 fix: manifest description 167자 → 122자 (132자 한도). 같이 brand "no em-dash" 룰 적용. v2.7.0 zip은 reject됐고 v2.7.1로 re-pack. ### Manifest / Short description (132자 max) ``` Save pages, AI chats, social posts, images to a memory.wiki URL any AI reads. Per-site capture suggestions, AI transforms. ``` 122자. extension management 화면 + Web Store 검색 결과 카드에 노출. `apps/chrome-extension/manifest.json`의 `description` 필드와 동기화. ### Detailed description (16,000자 max) — Intent Capture 헤드라인 + companion 프레임 ``` memory.wiki Clipper is the Chrome companion to memory.wiki on the web. Tell the extension what you want — it captures the page and writes it as a clean memory.wiki URL any AI tool can read. The headline: Per-site Intent Capture Open the popup on YouTube and the first chip is "Summarize from transcript." On Wikipedia: "Overview + key dates." On Reddit: "Top comments distilled." On Stack Overflow: "Accepted answer + code." On GitHub: "README in 5 bullets." On Medium: "Main argument + evidence." 24+ sites have hand-tuned intent suggestions out of the box. Click a chip, capture, done — no typing. For sites without a curated chip, type whatever you want ("action items as a checklist", "Cursor-ready reference", "rewrite for a teammate", "TL;DR in 2 sentences") and the extension runs that intent against the page before saving. Your prompt, your call. What it captures - Any web page (Readability extracts the article body, drops nav and ads). - The current selection (highlight, click capture — only the selected text saves). - AI chats end to end (ChatGPT, Claude, Gemini, Perplexity — user and assistant turns preserved with proper formatting). - Per-message capture from inside AI chats (hover any message, click the inline "Save" button). - Social posts (X, Threads, Reddit, Hacker News, Medium, Substack) with the post body, author, and embedded media intact. - GitHub .md files (rendered as a memory.wiki URL with KaTeX, Mermaid, syntax-highlighted code). What lands on memory.wiki Every capture publishes as a clean Markdown document and gets a permanent memory.wiki URL like memory.wiki/abc123. That URL serves the same Markdown payload to every AI tool — Claude, ChatGPT, Cursor, Gemini, Perplexity, Codex — so pasting the URL into any model gives that model your captured context. After every capture, the sentence "Use memory.wiki/abc123 as my context." is copied to your clipboard. Paste-into-next-AI is one keystroke. What's new in 2.7 - Per-site Intent Capture (24+ curated sites). - Chip rail wraps at the ends, no more dead clicks. - X quote-tweet body leak fixed (captures the focal tweet, not the quoted one). - Threads long-post body extraction fixed (falls back to og:description on permalinks). - Add button no longer covers the pencil or more-menu icons on social sites. Keyboard shortcuts - Cmd+Shift+E (Ctrl+Shift+E on Windows) — capture the current page. - Cmd+Shift+X — capture only the highlighted selection. What this extension is NOT It is a capture surface, not the full memory.wiki product. Editing existing documents, organising into bundles and hubs, the AI chat panel, account management, and sharing permissions all live on memory.wiki on the web. Use the extension to feed material in, then jump to memory.wiki to organise and share. Account No login required for one-off captures. Sign in (free during beta, sign up at memory.wiki) to attach captures to your account, search across them, and keep them in sync with the Mac, iOS, Android, VS Code, and CLI surfaces. Privacy No tracking. No third-party data sharing. No ads. Source on GitHub at github.com/raymindai/memory-wiki. The extension only contacts memory.wiki for publishing and the AI providers your captures route through (Claude or GPT for intent transforms) — see memory.wiki/privacy for the full policy. ``` ### 카피 결정 사항 - **Intent Capture를 헤드라인으로** — 첫 두 단락이 모두 Per-site Intent Capture에 할애. 24+ 사이트 예시 (YouTube / arXiv / Stack Overflow / GitHub) 구체적으로 명시. 검색 매칭에 강함. - **Companion 프레임** — 첫 문장이 "Chrome companion to memory.wiki on the web." iOS / Android / Mac 채널들과 메시지 일관성. - **"What this extension is NOT" 섹션** — Play / App Store 리뷰어 + 사용자 기대치 관리. extension은 capture-only surface임을 명시. 편집 / 조직 / AI chat은 웹에 있다고 분명히. - **Truthfulness** — 6개 capture surface 모두 실제 동작 확인된 것만 (general web / selection / AI chats / per-message / social posts / GitHub md). - **Cross-AI 강조** — Claude, ChatGPT, Cursor, Gemini, Perplexity, Codex 6개 클라이언트 명시. "one URL every AI reads" 무한 반복 안 하고 한 단락에 집중. ### 저장 위치 - 위 카피 모두 `apps/chrome-extension/STORE_LISTING.md`에 canonical로 저장. 다음 버전 description 수정 시 그 파일 먼저 → 그 다음 Web Store 대시보드 반영. ### Outcome - v2.7.1 zip (513KB) 새로 packing — `apps/chrome-extension/memory-wiki-clipper-2.7.1.zip`. - 이전 v2.7.0 zip은 description 길이 reject로 무효화. - Manifest commit: `d90dd97a`. --- ## Chrome Web Store v2.7.1 — 스크린샷 5장 계획 Web Store는 스크린샷 5장 한도, 1280×800 PNG. Caption은 carousel 아래 별도 렌더링 안 되니까 **오버레이 텍스트를 PNG에 baked-in** (Mac App Store와 같은 3-part 구조: Pill / Headline / Sub). ### 순서 결정 — install sheet 노출 = 앞 3장이 가장 중요 추천 순서 (위에서부터 1→5): | \# | 주제 | 왜 이 순서 | | --- | --- | --- | | 1 | Per-site Intent (Hero) | v2.7의 유일무이 차별점, 첫 번째 노출이 가장 강한 hook | | 2 | Cross-AI URL | 우리 핵심 moat — "왜 다른 클리퍼 말고 우리?" 답 | | 3 | AI Chat capture | 가장 traffic 큰 use case (Claude/ChatGPT 사용자 전부 target) | | 4 | Social post capture | 두 번째로 큰 use case + Threads/X 버그픽스 강조 | | 5 | Custom intent transform | 유연성 showcase, narrative close | --- ### 1. Hero — Per-site Intent (1순위, install sheet 첫 자리) - **파일**: `chrome/01-intent-hero.png` - **Pill**: `Per-site Intent` - **Headline**: `It knows where` / `you are.` - **Sub**: `YouTube: Summarize transcript. Reddit: Top` / `comments distilled. Stack Overflow: Accepted answer.` - **앱 상태**: - Chrome 창에 youtube.com 열림 (의미있는 동영상 — Andrej Karpathy lecture 같은 거) - 우상단 확장 popup 띄움 (popup-v25.html) - chip rail 가장 앞에 YouTube intents 3개 보이게: "Summarize from transcript" / "Key moments + timestamps" / "Action items only" - 첫 chip에 살짝 hover 효과 (좋게) - AI sparkle icon 챠음 chip 옆에 보이게 (this is the v2.7 marker) - **캡쳐 영역**: Chrome 윈도우 전체 (탭바 + URL 바 + popup). 1600×1000 정도 capture 후 1280×800 frame에 배치 ### 2. Cross-AI URL (2순위, install sheet) - **파일**: `chrome/02-cross-ai.png` - **Pill**: `Any AI Reads It` - **Headline**: `One URL.` / `Every AI reads it.` - **Sub**: `Claude, ChatGPT, Cursor, Gemini, Perplexity` / `all fetch the same Markdown payload.` - **앱 상태** (composite mockup): - 가운데: `memory.wiki/abc123` URL chip (큼직하게, 모노 폰트) - 4개 방향으로 화살표 → Claude / ChatGPT / Cursor / Gemini 로고 - 각 AI 클라이언트의 작은 mockup window (URL 붙여넣어진 모습) - 또는 더 simple하게: 1개 클라이언트(예: Claude)에 URL paste 한 화면 + "Cursor / ChatGPT / Gemini also read this." 같은 footer - **캡쳐 영역**: 1280×800 캔버스에 직접 mockup (실제 캡쳐 X, composite design) ### 3. AI Chat capture (3순위, install sheet 마지막) - **파일**: `chrome/03-ai-chat.png` - **Pill**: `AI Chats Saved` - **Headline**: `Save a chat.` / `Open it anywhere.` - **Sub**: `ChatGPT, Claude, Gemini, Perplexity captured` / `end to end. URL works in any other AI.` - **앱 상태**: - Claude 또는 ChatGPT 창 열림, 길지 않은 conversation (2-3턴) 보이게 - 각 message에 hover 시 나오는 작은 "Save" 버튼이 한 message에 명시되게 (강조 화살표 또는 highlight) - 우상단에 popup 또는 floating dock에 "Save all" 버튼 보이면 더 좋음 - 캡쳐 직후 결과 toast ("Captured. URL copied to clipboard.") 살짝 노출 - **캡쳐 영역**: AI 채팅 화면 + extension overlay. 메시지 길이 적당히 줄이기 ### 4. Social post capture - **파일**: `chrome/04-social.png` - **Pill**: `Social Posts` - **Headline**: `Posts, not` / `screenshots.` - **Sub**: `X, Threads, Reddit captured as Markdown` / `with author and body intact.` - **앱 상태**: - 왼쪽: X 또는 Threads 게시물 1개 (의미 있는 thread, Korean OK) - 게시물 옆에 우리 inline "Add" 버튼 (v2.7에서 위치 fix된 거 — pencil/more 아이콘 가리지 않는 상태) - 오른쪽: 캡쳐된 결과 memory.wiki URL preview (author/body/timestamps 깔끔하게 markdown으로 들어간 모습) - Split layout으로 before(원본) → after(markdown) 비교 - **캡쳐 영역**: 분할 화면, 좌측 X/Threads, 우측 memory.wiki 뷰어 ### 5. Custom intent transform (5순위, narrative close) - **파일**: `chrome/05-custom-intent.png` - **Pill**: `Type Any Intent` - **Headline**: `Tell it what` / `you want.` - **Sub**: `"Action items as a checklist." "TL;DR` / `in 2 sentences." Your prompt, your call.` - **앱 상태**: - Popup 열림 (popup-v25.html) - Intent textarea에 사용자 정의 prompt 입력된 상태: `Action items as a checklist` - Capture 버튼 highlighted - 결과 영역에 transform된 markdown preview (체크박스 리스트 형태) - **캡쳐 영역**: Popup 클로즈업 (전체 브라우저보다 popup 자체에 집중) --- ### 디자인 토큰 — Mac App Store 가이드 (위 섹션)와 동일 | Token | Value | 비고 | | --- | --- | --- | | Canvas | 1280 × 800 | Web Store 한도 | | Bg | radial gradient `#0a0a0c` → `#000000` | dark only (light variant 안 만듦) | | Ambient blob | morph blob SVG, opacity 0.08, blur 80px | 가운데 살짝 | | Pill bg | `#1c1c1c` | mono pill | | Pill text | JetBrains Mono 700, **16px**, ink, letterSpacing 1.2 | 1280 캔버스 기준 더 작게 | | Headline | Cal Sans 700, **72-84px**, ink, line-height 1.0 | 2줄 | | Sub | JetBrains Mono 400-500, **22px**, muted `#a1a1aa`, line-height 1.5 | 2줄 | | 스크린샷 frame | rounded corners 12px, shadow `0 30px 60px rgba(0,0,0,0.5)` | macOS chrome 자연 frame 활용 | --- ### Promo tile (별도 — Web Store 옵션) 스크린샷 5장과 별도로: - `chrome/00-promo-440x280.png` (small promo tile, 440×280) — featured / search tile에 노출. 디자인: morph blob 좌측 + "memory.wiki Clipper" wordmark 우측, sub "Capture, with intent.", mono "v2.7" corner pill. Dark. - `chrome/00-marquee-1400x560.png` (optional marquee) — Chrome Web Store가 우리 ext를 featured에 올릴 때 사용. 만들 시간 없으면 skip. --- ### 제작 워크플로 — Figma 권장 (Mac App Store와 동일) 1. **새 Figma 파일**, 1280×800 frame 5개 + 440×280 frame 1개 2. **공통 component**: - Background gradient + blob - Pill template (auto-layout, 16px text, padding 8/14) - Headline (Cal Sans 72px) - Sub (JetBrains Mono 22px, line-height 1.5) 3. **앱 캡쳐**: - Chrome 사용자 프로필로 demo 계정 sign-in - 시나리오대로 페이지 열고 extension 띄움 - Cmd+Shift+5 → "Window 캡쳐" 또는 area 캡쳐 - Figma drag, scale to 75-80% width, shadow 적용 4. **Export**: 각 frame Export as PNG, 1x 폰트 파일: `apps/chrome-extension/fonts/CalSans-Regular.ttf` + `JetBrainsMono-Regular.woff2` (이미 repo에). --- ### 캡쳐 전 체크리스트 - [ ] Chrome 창에 다른 확장 아이콘 다 숨김 (clutter 줄이기) - [ ] Bookmarks bar 끔 - [ ] 시계 9:41 (Apple 관습) 또는 자연 그대로 - [ ] 사인인 상태 (demo 계정 또는 본인 가명) - [ ] popup 열린 상태에서 hover 효과는 살리되 dropdown 열리지 X - [ ] AI 채팅 캡쳐의 경우, 메시지 본문은 demo-friendly (lorem 안 됨, 실제 의미) --- ### Outcome - 위 5장 + 1개 promo tile 만들면 Web Store 제출 완성 - 우선순위 1-2-3 (Hero / Cross-AI / AI Chat)이 install sheet 결정 - 나머지 (4-5)는 carousel 후반에 노출, 클릭한 사용자 conversion 도움 --- *Generated 2026-06-10. Update in place as each PNG ships.* --- ## 스크린샷 데모 콘텐츠 추천 각 장에 뭘 띄울지 구체적 추천. demo-friendly (lorem 안 됨) + 의미있음 + 본인 / 개인 정보 노출 X. --- ### Screenshot #1 (Hero) — YouTube로 무엇을 열까 YouTube 페이지 위에 popup 띄워서 "Summarize from transcript" chip 강조하는 장면. **추천 영상** (recognizable 우선순위): | 영상 | 왜 | | --- | --- | | **Andrej Karpathy — "Let's build GPT: from scratch, in code, spelled out"** | AI 커뮤니티에 universally 알려진 영상. 우리 target audience와 거의 100% overlap. Thumbnail에 본인 얼굴 + GPT 다이어그램 — visual ok. | | Lex Fridman x Sam Altman | 더 mainstream 인지도, 1.5시간 길이라 "summarize" 의도 강조에 적합 | | MKBHD latest iPhone review | 비-AI 사용자에게 가장 친숙. tech review = 자연스러운 summarize 대상 | | Patrick Collison 인터뷰 (Stripe Sessions) | founder audience에 어필 | **1순위: Karpathy "Let's build GPT"** — AI 사람들 다 알고, "긴 강의 요약" = perfect use case 시연. --- ### Screenshot #3 (AI Chat capture) — ChatGPT/Claude에 뭘 물어볼까 대화 2-3턴 보이게 캡쳐. 답변은 구조화된 markdown (코드 / 표 / 리스트)이 나오는 prompt가 우리 renderer 강점 + companion 메시지 둘 다 강조. **프롬프트 후보 3개**: **A. AI/ML 타겟 (recommended)** ``` Explain transformer attention to someone who knows linear algebra but has never seen Q/K/V. Use small numbers in a worked example, not jargon. ``` - 출력: 수식 (KaTeX 렌더링 강조), 작은 행렬, step-by-step - 우리 target audience (AI builders) 정확히 hit - "이런 답변 다른 AI에도 들고 가고 싶다" 자연스러운 use case **B. Builder/founder 타겟** ``` Compare Stripe, Lemon Squeezy, and Paddle for an indie SaaS doing $5k MRR. Tax handling, fees, checkout UX, payouts. Table. ``` - 출력: 비교 표 (table 렌더링 강조) - founder / indie hacker 공감 - 결정 도구로 다른 AI들에 paste 자연스러움 **C. 범용 (가장 안전)** ``` Plan a 5-day Lisbon itinerary for two, balancing food, history, and beach. Skip museums day 1. Day-by-day with timing. ``` - 출력: day-by-day 리스트 (typography 강조) - non-tech도 매력적, "이 itinerary URL 친구한테 paste" 자연스러움 - 안전한 demo (controversial 요소 X) **추천: A** — 타겟과 직결되고 KaTeX 렌더링 자랑할 수 있는 답변. Backup으로 B. --- ### Screenshot #4 (Social capture) — X / Threads 어떤 post **X 후보**: - Karpathy의 "I keep forgetting the difference between..." 류 짧고 인사이트 있는 thread - Paul Graham의 essay quote tweet - 본인의 빌드인공공 thread (가장 친근하지만 self-promotion 느낌 우려) **추천: 본인 thread 1개** — 빌딩 인 퍼블릭 voice 그대로 보여줌. 단 thread 본문이 universally interesting해야 (e.g., "We just shipped X. Here's what worked / didn't" 류). 대안: **Karpathy / Andrej / Aravind Srinivas** 같은 AI founder의 인사이트 thread. 익숙 + 우리 audience와 일치. **Threads 후보**: - Korean Threads thread (다국어 지원 증명 + home market) - 본인의 Korean post — Threads에 활성 사용자면 가장 자연스러움 **추천**: X는 본인 또는 Karpathy thread, Threads는 본인의 한국어 post (multi-language 강조). --- ### Screenshot #5 (Custom intent transform) — 어떤 사용자 정의 intent popup에 사용자가 직접 타이핑한 intent. 결과가 instantly 알아볼 수 있어야 효과적. **Intent 후보 (typeable 짧기)**: | Intent | 결과 형태 | 어필 | | --- | --- | --- | | `Action items as a checklist` | `- [ ]` markdown checkbox | productivity 사용자 | | `Bullet list of decisions made` | bullets | meeting notes | | `Cursor-ready reference, examples only` | code blocks | dev | | `TL;DR in 2 sentences` | 2줄 문단 | speed-reader | | `Translate to Korean, keep terms` | 번역 | 한국 audience | | `Rewrite for a teammate, friendly tone` | 재작성 | 협업 | **추천**: `Action items as a checklist` — 가장 visual (checkbox), 가장 universal use case, 결과가 markdown 렌더링 강점 보여줌. 캡쳐 시 보이는 결과 미리보기: ```markdown - [ ] Set up the staging database - [ ] Wire up Stripe webhook handler - [ ] Add user_id index on documents - [ ] Push v2.7.1 to Chrome Web Store ``` (실제 미팅 노트 / 글 / 페이지를 input으로 잡고 위 intent 돌렸을 때 나오는 합리적인 출력) --- ### Site별 캡쳐 시나리오 — 어디서 띄울까 스크린샷에 안 들어가더라도 데모 영상 / 마케팅에 재사용 가능한 시나리오: | 사이트 | 띄울 페이지 | 보여줄 intent | 결과 강점 | | --- | --- | --- | --- | | **YouTube** | Karpathy "Let's build GPT" | "Summarize from transcript" | 1.5시간 영상 → 핵심 3페이지 markdown | | **Reddit** | r/MachineLearning 핫 thread | "Top comments distilled" | 200댓글 → consensus + dissent 한 페이지 | | **Stack Overflow** | high-vote React Server Components 질문 | "Accepted answer + code" | 정답 + 동작 원리 | | **GitHub** | 유명 OSS repo README (vercel/next.js) | "README in 5 bullets" | 긴 README → 5줄 요약 | | **Wikipedia** | 인물 또는 사건 (Alan Turing, Apollo 11) | "Overview + key dates" | timeline 추출 | | **arXiv** | 최근 AI 논문 (e.g., Diffusion paper) | "Abstract + contributions" | 논문 → 3 contributions | | **Hacker News** | front page 토론 thread | "Top arguments distilled" | 100댓글 → 양쪽 강점 | | **Medium** | 인기 essay (Paul Graham 류) | "Main argument + evidence" | essay → thesis + 증거 | | **X / Twitter** | thread (Karpathy, Aravind 등) | "This thread distilled" | thread → 1단락 핵심 | | **Threads** | 한국어 thread | "Post + replies summary" | 한국어 다국어 증명 | | **LinkedIn** | 본인 또는 알려진 founder profile | "Profile highlights" | profile → 핵심 trajectory | | **NYT / BBC** | 최근 기사 | "Article in 3 bullets" | 긴 기사 → 3줄 | | **Notion** | 공개 docs (Anthropic의 prompting guide 등) | "Key decisions + owners" | docs → 결정 요약 | --- ### 추가 Intent 추천 — 코드에 더할지 검토 현재 `popup-v25.js` SITE_SUGGESTIONS에 24+ 사이트 있음. 추가하면 좋은 사이트 + intent: | 사이트 | 추천 intents (3개) | | --- | --- | | **claude.ai / chat.openai.com** | "This chat distilled", "Code blocks only", "Decisions + reasoning" | | **anthropic.com/news** (블로그) | "Main announcement + implications", "What's actually new" | | **paperswithcode.com** | "Method summary + code link", "Benchmark numbers" | | **producthunt.com** | "Product summary + key features", "Maker quotes" | | **news.google.com** | "Today's headlines in 5 lines" | | **reuters.com / bloomberg.com** | "Lead + financial impact", "Quotes from sources" | | **github.com/.../issues/** | "Issue + accepted solution", "What's the actual bug" | | **github.com/.../pull/** | "PR purpose + diff summary" | | **vercel.com/docs / nextjs.org/docs** | "Setup steps only", "Gotchas to remember" | | **stripe.com/docs** | "API endpoint summary + example code" | | **figma.com** | "Frame names + design decisions" — Figma comments URL | | **discord.com/channels/** | "Top messages distilled" — 공개 서버 | **가장 high-leverage 추가 3개**: 1. **claude.ai / chat.openai.com** — AI 사용자의 자기 chat 보관 use case 2. **github.com PR/Issue URLs** — dev 가장 trafficked 사이트 3. **producthunt.com** — founder / builder 매일 방문 이거 추가하면 → popup이 "이 사이트도 알고 있네" 인식 → install conversion 강화. --- ### 종합 권장 스크린샷 콘텐츠 픽: - **#1**: YouTube — Karpathy "Let's build GPT" - **#3**: ChatGPT/Claude — "Explain transformer attention with worked example" prompt - **#4**: X (Karpathy thread) + Threads (본인 한국어 post) - **#5**: Custom intent "Action items as a checklist" 코드에 추가하면 좋은 새 site intent: claude.ai / chat.openai.com, github PR/Issue, producthunt.com. --- ## Chrome Web Store v2.7.4 — Keyword-spam rejection (2026-06-10) Google rejected v2.7.4 description with **Keyword Spam** violation. Specific flagged content: > `Social posts (X, Threads, Reddit, Hacker News, Medium, Substack) with the post body...` Google's enforcement: "Having excessive and / or irrelevant keywords in the item's description." ### Pattern that triggered **Parenthetical / comma-separated brand lists.** Single brand mentions in context are fine (e.g. "Open the popup on YouTube and the first chip is..."). Multi-brand lineups like `(X, Threads, Reddit, ...)` or `Claude, ChatGPT, Cursor, Gemini, Perplexity, Codex` read as SEO keyword stuffing. ### Lines that needed rewriting (proactive — Google only flagged one but several matched the pattern) | ❌ Was | ✅ Now | | --- | --- | | `Social posts (X, Threads, Reddit, Hacker News, Medium, Substack) with...` | `Posts from social platforms, with...` | | `AI chats end to end (ChatGPT, Claude, Gemini, Perplexity — user and assistant turns...)` | `AI chat conversations end to end (user and assistant turns...)` | | `every AI tool — Claude, ChatGPT, Cursor, Gemini, Perplexity, Codex — so pasting...` | `every AI tool — paste it into any model to give that model your captured context.` | | `GitHub .md files (rendered as a memory.wiki URL with KaTeX, Mermaid, syntax-highlighted code)` | `Markdown files on code repositories (rendered as a memory.wiki URL with math, diagrams, syntax-highlighted code)` | | `X quote-tweet body leak fixed (captures the focal tweet, not the quoted one).` / `Threads long-post body extraction fixed (falls back to og:description on permalinks).` | `Social post capture: quote-tweet body leak fixed; long-post body extraction improved.` | | Per-site Intent paragraph naming six sites (YouTube + Wikipedia + Reddit + Stack Overflow + GitHub + Medium) | Kept YouTube once, generic descriptors for the rest (Q&A site, code repository, discussion thread) | | Account sentence ending `keep them in sync with the Mac, iOS, Android, VS Code, and CLI surfaces.` | `keep them in sync with other surfaces.` | ### What's still safe - `YouTube` mentioned once in the per-site intent showcase (it leads the example list across one sentence — not a comma lineup) - `Cmd+Shift+E` keyboard shortcut codes - `memory.wiki` brand name (our own) - `github.com/raymindai/memory-wiki` (source link) ### Resubmit path 1. Web Store dashboard → memory.wiki Clipper → **Store listing** tab 2. Replace entire Detailed description with rewritten version (canonical at `apps/chrome-extension/STORE_LISTING.md` and below) 3. **Save draft** → **Submit for review** 4. Zip unchanged — v2.7.4 metadata-only resubmission (no manifest/code change needed) ### Permanent rule for future Web Store copy **No parenthetical brand-name lists.** If listing brand compatibility is necessary, split across sentences or use generic phrasing ("any AI tool", "social platforms", "code repositories"). Single brand mentions tied to a concrete behaviour are OK. ### Rewritten description (canonical) ``` memory.wiki Clipper is the Chrome companion to memory.wiki on the web. Tell the extension what you want — it captures the page and writes it as a clean memory.wiki URL any AI tool can read. The headline: Per-site Intent Capture Open the popup on YouTube and the first chip is "Summarize from transcript." On a Q&A site: "Accepted answer + code." On a code repository: "README in 5 bullets." On a discussion thread: "Top comments distilled." 24+ sites have hand-tuned intent suggestions out of the box. Click a chip, capture, done — no typing. For sites without a curated chip, type whatever you want ("action items as a checklist", "Cursor-ready reference", "rewrite for a teammate", "TL;DR in 2 sentences") and the extension runs that intent against the page before saving. Your prompt, your call. What it captures - Any web page (Readability extracts the article body, drops nav and ads). - The current selection (highlight, click capture — only the selected text saves). - AI chat conversations end to end (user and assistant turns preserved with proper formatting). - Per-message capture from inside AI chats (hover any message, click the inline "Save" button). - Posts from social platforms, with the post body, author, and embedded media intact. - Markdown files on code repositories (rendered as a memory.wiki URL with math, diagrams, syntax-highlighted code). What lands on memory.wiki Every capture publishes as a clean Markdown document and gets a permanent memory.wiki URL like memory.wiki/abc123. That URL serves the same Markdown payload to every AI tool — paste it into any model to give that model your captured context. After every capture, the sentence "Use memory.wiki/abc123 as my context." is copied to your clipboard. Paste-into-next-AI is one keystroke. What's new in 2.7 - Per-site Intent Capture (24+ curated sites). - Chip rail wraps at the ends, no more dead clicks. - Social post capture: quote-tweet body leak fixed; long-post body extraction improved. - Add button no longer covers icons on social sites. Keyboard shortcuts - Cmd+Shift+E (Ctrl+Shift+E on Windows) — capture the current page. - Cmd+Shift+X — capture only the highlighted selection. What this extension is NOT It is a capture surface, not the full memory.wiki product. Editing existing documents, organising into bundles and hubs, the AI chat panel, account management, and sharing permissions all live on memory.wiki on the web. Use the extension to feed material in, then jump to memory.wiki to organise and share. Account No login required for one-off captures. Sign in (free during beta, sign up at memory.wiki) to attach captures to your account, search across them, and keep them in sync with other surfaces. Privacy No tracking. No third-party data sharing. No ads. Source on GitHub at github.com/raymindai/memory-wiki. The extension only contacts memory.wiki for publishing and the AI providers your captures route through — see memory.wiki/privacy for the full policy. ``` --- id: 17-jRn8F title: Selection from recruit.kakaobank.com url: https://memory.wiki/17-jRn8F updated: 2026-06-18T04:44:35.224+00:00 --- # Selection from [recruit.kakaobank.com](http://recruit.kakaobank.com) Source: https://recruit.kakaobank.com/jobs/255672 ## AI 프로덕트 디자이너 Design~ 2026.06.19 (23:59) [지원서 작성](https://kakaobank.recruiter.co.kr/v1/applicant/write-resume/login?jobnoticeSn=255672&systemKindCode=MRS2) [지원서 수정](https://kakaobank.recruiter.co.kr/v1/applicant/modify-resume/login?jobnoticeSn=255672&systemKindCode=MRS2) > **Recruiter Says,** > > AI와 금융을 바라보는 남다른 시선을 기다립니다. > > 카카오뱅크 AI디자인팀은 AI라는 도구를 통해 금융의 장벽을 낮추고, 누구나 쉽고 직관적으로 사용할 수 있는 서비스를 만들어가고 있습니다. 우리는 금융과 AI의 교차점에서 새로운 사용자 경험을 설계하는 일에 몰입하며, 주도적으로 도전을 이어갈 디자이너를 찾습니다. 기술을 통해 금융의 가능성을 탐색하고, 복잡한 문제를 사용자의 눈높이에서 해석해 내는 깊이 있는 통찰력이 있다면, 그것이 가장 중요한 자격입니다. > > 다양한 기술을 깊이 있게 이해하며 최적의 서비스를 설계하고, 나아가 일하는 방식의 변화까지 주도적으로 이끌어 주실 분들의 많은 지원을 기다립니다. ### Interview | 카카오뱅크 디자이너는 어떤 고민을 하며 어떻게 일하고 있을까요? 직무에 대한 설명은 물론 카카오뱅크 디자이너의 생각과 고민, 앱 화면 너머의 숨겨진 이야기를 담아 엮었습니다. 화면 너머의 디자인 이야기, 지금 바로 카카오뱅크 Plus에서 확인해보세요. [**(Click)**](https://brunch.co.kr/brunchbook/kakaobankdesign) ### 담당할 업무 - 카카오뱅크 앱, AI 프로덕트 디자인 - 카카오뱅크 앱 홈을 중심으로 각 서비스가 자연스럽게 연결되는 사용자 흐름 및 사용성 설계 - AI 금융과 결합된 핵심 금융 서비스에서 이해 가능하고 신뢰할 수 있는 프로덕트 경험 설계 - 공통 인증 및 지급·결제 전반에서 보안과 사용성의 균형을 고려한 일관된 UX 설계 ### 필수 경험과 역량 - 복잡한 금융 서비스를 체계적으로 구조화하고, 사용자 관점에서 단순하고 명료하게 풀어낼 수 있는 분 - 다양한 직군과 논리적으로 소통하며 원활한 협업을 이끌어 낼 수 있는 분 - `Figma`, `FigJam` 등 디자인 및 협업 툴 활용이 능숙한 분 - 아이디어를 빠르게 시각화하고 검증할 수 있는 프로토타이핑 역량을 갖춘 분 - 관련 경력이 3년 이상인 분 ### 우대사항 - AI 기술을 접목한 서비스 구축 및 출시 경험이 있는 분 - AI 기술을 활용해 업무 효율을 높이거나 일하는 방식의 변화를 주도해 본 분 - 정량적·정성적 데이터를 기반으로 문제를 발견하고 서비스를 고도화해 본 경험이 있는 분 - 인하우스 디자이너로서 다양한 조직과 긴밀하게 소통하며 협업해 본 분 - 정교한 인터랙션 디자인을 통해 완성도 높은 사용자 경험을 구현할 수 있는 분 --- id: A03aGNsp title: 현대자동차 지원서 — 조현상 (Hyunsang Cho) url: https://memory.wiki/A03aGNsp updated: 2026-06-17T20:13:34.155+00:00 --- # 현대자동차 지원서 — 조현상 (Hyunsang Cho) 지원 직무: 신사업/신기술 사업기획 hi@raymind.ai · raymind.ai · hyunsangcho.com ## 자기소개서 1 — 지원 동기 및 성장 목표 AI와 자율주행, 휴머노이드가 한데 묶이며 산업의 경계가 무너지는 지금이, 현대자동차그룹이 모빌리티를 넘어 다음 사업을 정의할 가장 중요한 시점이라고 생각합니다. 이 변화에서 가장 필요한 사람은 기술을 분석에서 멈추지 않고 실제 사업과 제휴로 연결하는 사람, 그리고 그 기술을 직접 다뤄 봤기에 무엇이 시장에 안착할지 가늠할 수 있는 사람이라고 믿습니다. 저는 그 두 가지를 모두 해 온 사람입니다. 카카오에서는 첫 유럽 법인을 처음부터 세우고 운영했습니다. 법인 설립과 시장 진입 전략부터 IMG를 비롯한 기업들과의 라이선싱 제휴까지, 한국에서 검증된 IP를 새로운 시장의 사업으로 만드는 일을 끝까지 책임졌습니다. 데브시스터즈에서는 회사에 없던 VR 사업을 새로 만들고, Meta의 미국과 일본 조직과 직접 협상해 플랫폼 파트너십을 맺은 뒤 출시까지 이끌었습니다. 사우디 Humain에서는 국가 AI 플랫폼의 전략과 제품을 처음부터 설계하며 정부와 부처, 연구, 엔지니어링 조직의 방향을 하나로 맞췄고, AI 기술을 웨어러블과 실제 산업으로 확장하는 신사업 전략을 경영진 의사결정용으로 직접 제안했습니다. 이 과정에서 저는 기술을 사업으로 옮기는 동시에, 사용자가 새로운 기술을 처음 만나 신뢰하게 만드는 일도 함께 다뤘습니다. 손과 시선이 자유롭지 않은 환경에서 AI가 언제 개입하고 언제 물러나야 하는지를 고민한 경험은 차량 안에서 사람과 AI가 만나는 문제와 그대로 이어진다고 생각합니다. 지금은 [Raymind.AI](http://Raymind.AI)라는 독립 스튜디오에서 AI를 매일 도구로 쓰며 제품을 직접 만들고 있습니다. 덕분에 AI 기술의 가능성과 한계를 보고서가 아니라 현장 감각으로 판단합니다. 현대자동차그룹에서 저는 차세대 기술을 실제 사업과 제휴로 연결하는 일에 기여하고 싶습니다. 기술의 흐름을 빠르게 읽어 경영진이 결정할 수 있는 사업 기회로 번역하고, 정부와 투자기관과 기업을 잇는 협력 모델로 현실화하는 것. 글로벌과 한국, 기술과 사업을 오가며 쌓은 경험을 그 일에 쓰고 싶습니다. ## 자기소개서 2 — 핵심 역량과 강점, 약점 이 직무의 핵심 역량은 기술 트렌드를 사업 기회로 전환하고, 그것을 실제 제휴와 실행으로 이어 가는 능력이라고 생각합니다. 아무리 유망한 기술도 누군가 사업으로 설계하고 외부와의 협력으로 실현하지 못하면 보고서로 끝나기 때문입니다. 특히 AI와 자율주행처럼 빠르게 움직이는 분야에서는 분석의 정교함만큼이나 실행으로 옮기는 추진력이 중요합니다. 저의 강점은 이 일을 여러 번 처음부터 실제로 해냈다는 점입니다. 카카오의 첫 유럽 법인을 세워 신사업을 일으켰고, 데브시스터즈에서는 없던 VR 사업을 만들어 Meta와 직접 협상해 파트너십을 체결했습니다. 사우디 Humain에서는 국가 AI 플랫폼 전략을 설계하며 정부와 부처를 상대했고, 신기술을 사업화하는 전략을 경영층 승인용으로 제안했습니다. 영국, 한국, 사우디를 오가며 글로벌 환경에서 기술과 사업을 분석하고 협상해 왔으며, 비즈니스 영어로 일하는 데 어려움이 없습니다. 무엇보다 지금도 AI를 매일 실무로 다루기 때문에 기술 동향을 외부 자료가 아니라 직접 써 본 감각으로 읽어 냅니다. 약점은 정통 컨설팅이나 M&A 트랙을 거치지 않아, 정형화된 분석 프레임워크나 재무 모델링은 그 분야 전문가만큼 숙련되어 있지 않다는 점입니다. 다만 저는 분석에 머무르기보다 직접 사업을 만들고 협상 테이블에 앉아 결과를 만들어 온 쪽이고, 부족한 정량 분석 역량은 빠르게 학습하고 전문가와 협업해 메워 왔습니다. 현대자동차그룹에서 분석의 엄밀함과 실행의 추진력을 함께 갖춘 사업기획자로 성장하고 싶습니다. ## 경력 **Raymind.AI** — Founder — 2026.04 \~ 현재 — 서울/런던 AI 제품을 직접 기획하고 만들어 출시하는 독립 프로덕트 스튜디오를 운영하고 있습니다. AI를 매일 실무 도구로 사용하며, 기술의 가능성과 한계를 현장 감각으로 판단합니다. - memory.wiki, pastlife.app, jolong.ai, screenstyler.ai 등 다수 제품 출시 및 운영 - 기획, 디자인, 개발, 출시까지 전 과정을 AI 기반 워크플로우로 단독 수행 **Humain** — AI Product & Experience Lead — 2025.04 \~ 2026.04 — 리야드, 사우디아라비아 사우디 국가 AI 프로젝트의 전략과 제품을 처음부터 설계했습니다. - 국가 AI 플랫폼의 제품 비전과 사업 전략 수립 - AI 스택을 웨어러블과 실제 산업으로 확장하는 신사업 전략을 경영층 승인용으로 설계하고 제안 - 정부와 부처 이해관계자를 상대로 전략 정렬과 의사결정 지원 - AI 리서치, 엔지니어링, 정부 이해관계자를 연결하는 협업 구조 수립 **데브시스터즈** — Group Director — 2021.09 \~ 2024.08 — 서울, 한국 회사에 없던 VR 사업을 새로 만들어 출시했습니다. - XR 경험이 없던 회사에서 신규 VR 사업과 팀을 구축 - 미국과 일본 Meta와의 전략적 플랫폼 파트너십을 협상하고 체결 - Meta Quest Store 출시까지 전 과정 관리 - Meta 일본 공식 TVC, Quest 3 런치 쇼케이스, 일본 리테일 데모 게임 선정 **카카오IX 영국법인** — Regional Director — 2018.10 \~ 2021.04 — 런던, 영국 카카오의 첫 유럽 법인을 맨바닥에서 세우고 운영하며 IP 신사업을 책임졌습니다. - 법인 설립, 팀 구성, 시장 진입 전략까지 신사업을 처음부터 구축 - IMG 등과 전략적 제휴를 맺어 IP 라이선싱 사업 확대 - 영국, 프랑스 등 유럽 주요 시장에서 라이선싱과 리테일 계약 체결 - Brand Licensing Europe 등 산업 행사에서 회사 대표 **사우디아람코** — UX Lead — 2017.04 \~ 2018.10 — 다란, 사우디아라비아 사우디 비전 2030과 아람코 IPO에 맞춰 전사 디지털 혁신을 이끌었습니다. - 세계 최대 IPO를 앞두고 전사 디지털 시스템 표준 수립 - 사우디 국가 정책 변화에 맞춘 디지털 서비스 설계 - 복잡한 대기업 환경에서 여러 사업부를 가로질러 협업 **AKQA** — Senior UX Architect — 2015.06 \~ 2017.02 — 런던, 영국 Nike, Volvo, Barclays, Virgin Atlantic 등 글로벌 브랜드의 디지털 제품과 서비스를 이끌었습니다. **레이저피쉬 (Razorfish)** — Senior UX Architect — 2013.09 \~ 2015.06 — 런던, 영국 금융과 소비재 글로벌 브랜드의 여러 시장에 걸친 디지털 프로젝트를 이끌었습니다. **제일기획 영국법인 (Cheil UK)** — Senior Interaction Designer — 2012.12 \~ 2013.08 — 런던, 영국 삼성 신제품 출시용 인터랙티브 키오스크와 유럽 웹사이트 UX 작업 **네이티브 디자인 (Native Design)** — Senior Interaction Designer — 2012.04 \~ 2012.11 — 런던, 영국 삼성과 HP의 미래 제품을 위한 선행 디자인 프로젝트 수행 **언스트앤영 세렌 (EY-Seren)** — Design Consultant — 2010.02 \~ 2012.03 — 런던, 영국 노키아, 바클레이 등의 서비스와 앱 컨설팅 **프리랜스 디자인 컨설턴트** — 2006.05 \~ 2010.02 — 영국/한국 **바이널 (Vinyl)** — Interaction Visual Designer — 2005.10 \~ 2006.05 — 서울, 한국 **디스트릭트 (D'strict)** — Interaction Visual Designer — 2004.04 \~ 2005.09 — 서울, 한국 **NHN Corp.** — Junior Designer — 2002.10 \~ 2004.04 — 서울, 한국 ## 프로젝트 ### 1. Humain One (국가 AI 플랫폼 전략) - 프로젝트기관: Humain - 기간: 2025.04 \~ 2026.04 - 수행역할: 제품과 전략 총괄 (AI Product & Experience Lead) - 상세: 사우디아라비아의 국가 AI 플랫폼 Humain One의 전략과 제품을 처음부터 설계했습니다. 정체성과 오케스트레이션, CRM을 아우르는 플랫폼의 제품 방향과 사업 전략을 정의했고, 정부와 부처 이해관계자, AI 리서치, 엔지니어링을 한 방향으로 정렬했습니다. 신기술을 실제 사업으로 연결하는 관점에서 제품 비전과 로드맵 전반을 책임졌습니다. ### 2. Humain 웨어러블 AI 신사업 전략 - 프로젝트기관: Humain - 기간: 2025.09 \~ 2026.04 - 수행역할: 신사업 전략 기획 및 제안 - 상세: Humain의 AI 스택을 스크린 너머 실제 물리 공간으로 확장하는 웨어러블 우선 AI 신사업 전략을 기획하고 경영층 승인용으로 제안했습니다. 스마트 글래스를 기반으로 비전, 음성, 추론을 결합한 경험 구조와, 관광부터 에너지까지 여러 산업에 재사용 가능한 사업 모델을 정의했습니다. 동작하는 데모와 단계별 실행 로드맵, 파트너십과 투자 승인 항목까지 포함한 사업 제안을 작성했습니다. ### 3. CookieRun: The Darkest Night (VR 신사업) - 프로젝트기관: 데브시스터즈 / Studio FreshDoh! - 기간: 2021.09 \~ 2024.08 - 수행역할: Project Director (신사업 구축 및 제품 총괄) - 상세: 회사에 없던 VR 사업을 새로 만들어 Meta Quest Store에 출시했습니다. 팀 빌딩부터 시작해 게임 방향성과 프로토타입을 완성했고, 미국과 일본 Meta와 직접 협상해 전략적 플랫폼 파트너십을 체결한 뒤 출시까지 전 과정을 이끌었습니다. Meta 일본 공식 TVC, Quest 3 런치 쇼케이스, 일본 리테일 데모 게임으로 선정되며 사업 성과를 입증했습니다. ### 4. 카카오 유럽 법인 및 IP 라이선싱 신사업 - 프로젝트기관: 카카오IX 영국법인 - 기간: 2018.10 \~ 2021.04 - 수행역할: 유럽 신사업 총괄 (Regional Director) - 상세: 카카오의 첫 유럽 법인을 맨바닥에서 세우고 운영하며 카카오톡과 카카오프렌즈 IP의 유럽 신사업을 책임졌습니다. 법인 설립과 팀 구성, 시장 진입 전략을 처음부터 구축했고, IMG를 비롯한 기업들과 전략적 제휴를 맺어 라이선싱과 리테일 사업을 확대했습니다. 영국, 프랑스 등 유럽 주요 시장에서 직접 계약을 체결하며 한국 IP의 유럽 데뷔를 이끌었습니다. ### 5. memory.wiki (AI 신제품) - 프로젝트기관: Raymind.AI - 기간: 2026.04 \~ 현재 - 수행역할: 단독 기획 및 개발 (Founder) - 상세: AI 시대를 위한 메모리 레이어 memory.wiki를 단독으로 기획, 개발해 출시했습니다. AI 작업이 사라지는 문제를 풀기 위해 수집(Collect), 정리(Organize), 활용(Use) 세 단계로 제품을 설계했습니다. 여러 표면에서 콘텐츠를 수집하고, AI가 개념과 지식 그래프를 추출해 정리하며, LLM이 다시 읽을 때 압축된 형태로 전달해 토큰을 절약합니다. 웹, Mac, VS Code, CLI, Chrome, MCP 서버에서 하나의 영구 URL로 동작합니다. ## 논문 요약 — New Media Art and Its Current Position 본 논문은 뉴미디어아트가 동시대 미술 안에서 차지하는 위치를 비판적으로 검토합니다. 빅토리아 앤 알버트 박물관에서 열린 Decode: Digital Design Sensations 전시를 출발점으로 삼아, 뉴미디어아트가 미술인지 디자인인지 엔터테인먼트인지 명확하지 않은 현실에서 논의를 시작합니다. 논문은 크게 두 부분으로 구성됩니다. 1. 뉴미디어아트의 정의를 미디어아트 역사가와 큐레이터, 작가들의 관점을 통해 다시 검토합니다. Andreas Broeckmann, Marc Garrett, Steve Dietz, Sarah Cook 의 견해를 종합하여, 뉴미디어아트는 사용되는 기술 매체 자체가 아니라 그것이 만들어내는 세 가지 행동, 즉 상호작용성(interactivity), 연결성(connectivity), 연산성(computability)으로 정의되어야 한다는 결론에 이릅니다. 2. 뉴미디어아트가 주류 미술계 안에서 처한 현실을 분석합니다. Oliver Grau, Domenico Quaranta, Beryl Graham 의 논의를 통해, 뉴미디어아트가 미술관 컬렉션과 동시대 미술 담론 안으로 충분히 편입되지 못한 채 정체성의 위기와 큐레이션의 한계에 직면해 있음을 살펴봅니다. 결론적으로, 뉴미디어아트 작가들이 기술 자체를 과도하게 전면에 내세우면서 작품이 기술에 가려지는 문제를 지적합니다. 뉴미디어아트가 동시대 미술과 분리된 별개의 영역으로 남는 대신, 함께 진화하며 사회와 기술의 변화에 응답하는 예술 형식으로 자리잡아야 한다고 주장합니다. --- id: NMQAHBbM title: Come Grow with Us url: https://memory.wiki/NMQAHBbM updated: 2026-06-17T19:32:59.838+00:00 --- # Come Grow with Us ## 신사업/신기술 사업기획 **D-13** 2026-06-15 09:00 ~ 2026-06-30 17:00 ### 조직소개 우리 조직은 현대자동차그룹의 지속 가능한 미래 성장동력을 확보하기 위해 신사업·신기술 기회를 선제적으로 발굴하고, 전략 수립 및 실행을 주도하는 조직입니다. 팀은 AI·로봇·자율주행 등 차세대 기술 영역에서 당 그룹의 중장기 경쟁력 강화를 위한 전략을 수립합니다. ### 직무상세 현대자동차그룹의 지속 가능한 미래 성장동력 확보를 위해 Physical AI, Agentic AI, 휴머노이드 로봇, 자율주행 등 차세대 기술 분야 전략을 주도합니다. 경영층의 전략 의사결정을 지원하고, 그룹 내 주무 부서 간 유기적인 전략 실행과 중장기 비전 달성을 추진합니다. #### ■ 신사업/신기술 분야 발굴 - AI/자율주행/휴머노이드 등 융복합 산업 내 신사업 및 신기술 동향을 센싱, 분석 - 데스크 리서치, 전문가인터뷰, 컨퍼런스 참여 등을 통한 상세 내용 및 핵심 기술 분석 - 현대자동차그룹 관점에서의 시사점 도출 #### ■ 신사업/신기술/신시장 전략 수립 - AI/휴머노이드/자율주행 등 차세대 기술 기반 신사업 발굴과 핵심 기술 내재화를 위한 전사 전략 및 대응 방안 수립 - 그룹 내 경영층의 의사 결정 지원 - 전략 프로젝트 실행 단계에서 협업 부서의 추진 사항을 조율 및 지원 #### ■ 전략적 제휴 통한 사업/협력모델 수립 및 추진 - Physical AI, Agentic AI, AI for Science, 휴머노이드 핵심 모듈 등 그룹 차원의 전략적 협력 안건 발굴 - 신규 시장에서의 신사업 추진을 목적으로 정부·투자기관·기업 등과 전략적 제휴를 구축하고, 지속 가능한 협력 모델 설계 - 글로벌 제휴 대상 기업과의 협상을 통한 파트너십 추진과 리스크 관리 - 사업 모델 구체화 및 단계별 사업화 추진 ### 지원자격 - 학사 이상의 학위를 보유하신 분 - 신규 사업/서비스 전략 수립 및 실행 경험을 보유하신 분 - 글로벌 환경에서 기술·사업 분석 및 협상/제휴, 경영층 보고 경험을 보유하신 분 - 산업·기술 트렌드에 대한 높은 이해를 바탕으로 설득력 있는 자료 구성 및 발표 역량을 보유하신 분 - 비즈니스 영어 커뮤니케이션 및 영어 문서 작성 역량을 보유하신 분 ### 우대사항 - 경영학, 경제학, 비즈니스 분석, 전략경영, 국제경영, 금융, 데이터 과학 또는 이와 유사한 분야에서 학사 학위 이상을 보유하신 분 - 3년 이상 신기술(AI/로봇/자율주행) 기반 전략 수립 및 프로젝트 경험을 보유하신 분 - 3년 이상 컨설팅·글로벌 환경에서 제휴, 투자, M&A 등 전략·협상 경험을 보유하신 분 --- id: gnEMFJgI title: mdfy — a16z speedrun pitch deck (content) url: https://memory.wiki/gnEMFJgI updated: 2026-06-15T12:44:54.273+00:00 --- # mdfy — a16z speedrun pitch deck (content) > 8 slides. Speedrun-fit (consumer/creator + AI, 1-person founder narrative). Each slide = HEADLINE / BODY / VISUAL DIRECTION / SPEAKER NOTE. Hand to Claude as an artifact spec. > > Design system: warm zinc + orange (mdfy palette). Mono captions. No emoji. Lots of whitespace. \~16:9. --- ## Slide 1 — Title **HEADLINE (huge, top-left or center)** > **mdfy**\*\***The memory layer for the AI era.** **SUB (small, bottom)** > Raymind.AI · Hyunsang Cho · hi@raymind.ai · mdfy.app **VISUAL** - Negative space dominant. Just the wordmark "mdfy" in display weight + tagline below. - Background: dark (matches mdfy.app dark theme). - Bottom strip: founder + URL + email in mono caption. **SPEAKER NOTE** > "mdfy is the memory layer for the AI era. The way Stripe was payments infrastructure for the internet — mdfy is memory infrastructure for everyone who lives across multiple AIs." --- ## Slide 2 — The Problem **HEADLINE** > **AI users live across five tools. Their memory lives nowhere.** **BODY (3 short beats)** - Every conversation starts from zero. - Every tool re-uploads the same context. - Every team re-explains its work. **VISUAL** - 5 logo lockup at top: **Claude · ChatGPT · Gemini · Cursor · MCP hosts** - Below each, a small loop arrow pointing back to itself (every chat = isolated memory island) - Center bottom: greyed-out word "MEMORY" with a strikethrough **SPEAKER NOTE** > "Look at how an actual AI power user works in 2026. They're in Claude for writing, ChatGPT for research, Cursor for code, Gemini for vision, MCP hosts for tools. Five contexts. Five memories. Zero shared. Every time you switch, you're paying the re-explain tax." --- ## Slide 3 — The Solution **HEADLINE** > **One URL. Every AI reads it. Your knowledge, deployable like code.** **BODY** - Write in mdfy → get a URL like `mdfy.app/yourhub` or `mdfy.app/yourbundle` - Paste that URL into any AI chat → the AI fetches the markdown payload - Three layers: **Doc** (single) → **Bundle** (curated set) → **Hub** (your whole knowledge) - A concept graph ships *inside* each URL so the AI gets pre-built navigation, not raw text **VISUAL** - Big horizontal arrow: `[markdown editor]` → `mdfy.app/xyz` → `[Claude / ChatGPT / Gemini / Cursor]` - The URL in the middle is the hero — show as a real-looking address - Doc → Bundle → Hub as nested circles or stacked layers on the right **SPEAKER NOTE** > "The product is one move. You write markdown. mdfy gives you a URL. You paste that URL into any AI — it fetches, it understands, it has your context. No upload. No re-explaining. We bake a concept graph into the response so the receiving AI gets navigation, not just text. Three composition layers: a doc, a curated bundle, or your whole hub." --- ## Slide 4 — Why Now **HEADLINE** > **AI memory is 2026's biggest unsolved problem. Every vendor is solving it for themselves.** **BODY** - ChatGPT Memory, Claude Projects, Gemini's saved context — all locked per-platform - MCP standardized tool access; nothing standardized *knowledge* access - Andrej Karpathy named the shape in his "LLM Wiki" tweets — nobody's shipping it yet - The cross-AI surface is open **VISUAL** - 4 columns top: `ChatGPT Memory 🔒` · `Claude Projects 🔒` · `Gemini Saved 🔒` · `Cursor Rules 🔒` (use lock icon, not emoji — mono caption: LOCKED IN) - Bottom: one big horizontal bar labeled `mdfy URLs` — spanning all four, marked `CROSS-AI` **SPEAKER NOTE** > "OpenAI, Anthropic, Google — they're all building memory. But they're building it for themselves. ChatGPT Memory doesn't help your Claude session. Claude Projects don't show up in Cursor. The cross-AI layer is wide open because no single AI company can fill it without canceling their own moat. That's the gap." --- ## Slide 5 — Moat **HEADLINE** > **Cross-AI delivery is the moat. Any single AI company is structurally incentivized *not* to build this.** **BODY** - OpenAI won't ship "fetchable by Anthropic" memory. Same for Anthropic, Google, etc. - We sit in the gap they can't cross. - Distribution: every shared URL carries a viral badge → compounds. - Network effects: each new hub/bundle makes mdfy's collective concept graph richer. - The graph ships in the URL payload, not behind an auth wall → any AI inherits it. **VISUAL** - Two-column visual: LEFT = boxed silos (OpenAI / Anthropic / Google) — each marked "won't fetch the others"; RIGHT = mdfy logo as a bridge connecting all - Bottom strip: 3 small icons: 🔗 viral badge | 📈 compounding distribution | 🧠 network-effect concept graph (or use Wand2/Network/Sparkles from Lucide — no emoji) **SPEAKER NOTE** > "The single sentence I want you to remember: any single AI company is structurally incentivized not to build this themselves. OpenAI shipping cross-AI memory would mean shipping a feature that helps Claude. That's not a competitive moat — that's a competitive own-goal. So the cross-AI layer can only be built by an independent. That's us." --- ## Slide 6 — Founder **HEADLINE** > **Designer-founder. 15 years shipping consumer software at scale. Just left a sovereign-AI lead role to do this.** **BODY** - **Humain** (2025–2026, Riyadh) — Product & Experience Lead, Saudi Arabia's national AI program - **Devsisters** Group Director (2021–2024, Seoul) — CookieRun VR · Meta partnership · Quest Store - **Kakao IX UK** Regional Director (2018–2021, London) — opened Kakao's first European office - **Saudi Aramco** UX Lead (2017–2018) — UX standards pre-IPO 2019, industrial VR - **AKQA** Senior UX Architect (2015–2017) — Nike (NRC, NTC), Volvo, Barclays, Virgin Atlantic - **Education** — Goldsmiths MFA + Central Saint Martins 1st Class Honours **VISUAL** - Horizontal career timeline 2002 → 2025 with logo lockups at key roles (Humain · Devsisters · Kakao · Aramco · AKQA) - Bottom right: large founder photo (real) or wordmark - Top right: bold quote — **"One Person. AI Co-founder. Infinite Output."** with `Raymind.AI` byline **SPEAKER NOTE** > "I'm not a first-time founder pivoting from a side project. I just walked out of leading product and experience at Humain — Saudi Arabia's national AI program, set the product org up from scratch. Before that I shipped CookieRun VR with Meta at Devsisters, opened Kakao's first European office, built UX standards for Aramco before the world's biggest IPO. Designer-founder. Goldsmiths MFA, Central Saint Martins. mdfy is what I'm choosing to do *next* — not what I'm doing because nothing else worked." --- ## Slide 7 — Traction & Velocity **HEADLINE** > **Five products live in 2025. mdfy's full stack shipped in 12 weeks.** **BODY (two columns)** **Raymind.AI products live (2025)** - mdfy.app · pastlife.app · jolong.ai · screenstyler.ai · ddalggak.ai **mdfy.app surfaces shipped in 12 weeks** - Web app (mdfy.app) - MCP server (npm: mdfy-mcp) - VS Code extension (Marketplace) - Desktop app (signed/notarized DMG) - Chrome extension (Web Store) - CLI (npm) **Numbers** *(fill from actual)* - Live since: \[date\] - Hubs published: \[count\] - MCP downloads / month: \[count\] - Chrome installs: \[count\] - Build-in-public following: \[count\] **VISUAL** - Two-column layout — five Raymind product logos on left, six mdfy surface icons on right - Bottom: three big numbers in display weight (hubs / MCP / Chrome) with mono captions underneath **SPEAKER NOTE** > "This isn't a vision deck. mdfy is live. So are four other Raymind products. The thesis 'one person plus AI ships at platform speed' isn't a claim — it's a five-product portfolio. mdfy's full ecosystem — web, MCP, VS Code, desktop, Chrome, CLI — shipped in twelve weeks. Public launch is end-August. That's six weeks from today." --- ## Slide 8 — Ask **HEADLINE** > **speedrun seat. Distribution muscle. Two great hires post-launch.** **BODY** - Joining speedrun: access to a16z partner network + the program's distribution / creator-economy network at the exact moment we're staking the consumer surface - Capital sized to: keep mdfy free during beta (no monetization friction), public-launch marketing, post-launch hires (1 generalist engineer + 1 designer) - Decision window: post-launch growth phase begins September 2026 — speedrun timing aligned **Demo access** > Log in at **mdfy.app** with **demo@mdfy.app** to walk through a real seeded account (hub, bundles, concept index, MCP). **Contact** > Hyunsang Cho · hi@raymind.ai · raymind.ai · hyunsangcho.com **VISUAL** - Top: large headline - Middle: 3-row breakdown of what speedrun specifically unlocks (network / capital / timing) - Bottom right: prominent boxed callout — `Try it now: mdfy.app · demo@mdfy.app` - Footer line: contact info in mono **SPEAKER NOTE** > "Two things make speedrun specifically the right round, not generic seed. One: your network. We're staking the consumer surface of AI memory and speedrun's creator-economy distribution is built for exactly that ignition. Two: timing. Public launch is end-August, growth phase starts September — your program window aligns. Capital sizes to keep mdfy free through beta, fund launch, and bring on two great hires post-launch. Try the product right now: mdfy.app, log in as demo@mdfy.app." --- ## Optional appendix slides - **Appendix A — Product screenshots**: Hub view, Bundle canvas with concept graph, raw .md payload showing graph-baked-in, Galaxy constellation - **Appendix B — Karpathy "LLM Wiki" tweet** as a screenshot + line "Named the shape. We're shipping it." - **Appendix C — Cap table / use of funds** (one-page) --- ## Design system notes for Claude - **Palette**: dark mode dominant — backgrounds `#0a0a0a` (zinc-950) / `#1a1a1a` (zinc-900), text `#fafafa` / `#a1a1aa`, accent **orange** `#fb923c` for one element per slide max. - **Type**: display sans for headlines (e.g., Inter Tight / Geist 700), mono caption for labels (e.g., JetBrains Mono / Geist Mono 500), body 16px. - **No emoji** in slides. Use Lucide icons only (Wand2 / Network / Sparkles / Link / etc.). - **One accent per slide** — orange used sparingly so it actually directs the eye. - **Lots of negative space**. Speedrun decks are scanned in 60 seconds; sparse beats dense. - **Wordmark**: lowercase `mdfy` with slight letter-spacing, monoweight `.app` suffix when shown. ## Facts - mdfy is a URL-based memory layer that any AI can read by pasting a link into chat - AI users currently work across five isolated tools (Claude, ChatGPT, Gemini, Cursor, MCP hosts) with no shared memory between them - Cross-AI memory delivery is structurally impossible for any single AI company to build without undermining their own competitive moat - Founder Hyunsang Cho shipped mdfy's full stack (web, MCP, VS Code, desktop, Chrome, CLI) in 12 weeks and has five live Raymind products - mdfy bakes a concept graph into each URL payload so receiving AIs get navigation and context, not just raw text --- id: RwrJZ3wc title: 조현상, Raymind.ai / memory.wiki url: https://memory.wiki/RwrJZ3wc updated: 2026-06-15T08:40:24.069+00:00 --- # 조현상, Raymind.ai / [memory.wiki](http://memory.wiki) > 15년차 제품 리더가 1인으로 만든 memory.wiki, 6월 중순 개발자 커뮤니티 중심 런칭. 다음 챕터는 시장입니다. --- ## About me 15년 넘게 제품과 디자인을 영국, 한국, 사우디 3개국에서 리딩해 왔습니다 - 직전: **Humain** (사우디 국가 AI 프로젝트, 2025\~2026) AI Product & Experience Lead. Humain OS의 제품/경험 조직을 0에서 셋업. - **Devsisters** (2021\~2024) Group Director. 쿠키런 IP VR 타이틀을 Meta 파트너십으로 Quest Store 출시. - **Kakao IX UK** (2018\~2021) Regional Director. 카카오의 첫 유럽 오피스를 0에서 셋업, KakaoTalk과 Kakao Friends IP 유럽 사업 총괄. - **Saudi Aramco** (2017\~2018) UX Lead. 세계 최대 IPO 직전 Aramco 디지털 시스템 UX 표준 정립. - 그 전: London에서 AKQA, Razorfish 등을 거쳐 Nike, Volvo, Barclays, Virgin Atlantic의 글로벌 디지털 프로덕트 리딩. - 학력: MFA Goldsmiths (Computational Studio Arts), BA Hons Central Saint Martins (Graphic + Interaction Design, 1st Class). 지금은 **Raymind.AI** 라는 독립 제품 스튜디오를 1인으로 운영하면서 memory.wiki를 비롯한 여러 AI 제품(pastlife.app, jolong.ai, screenstyler.ai, ddalggak.ai)을 직접 만들고 출시하고 있습니다. CV 전체는 [raymind.ai/cv](https://www.raymind.ai/cv) 에 있습니다. --- ## What I'm building, memory.wiki **Personal knowledge hub for the AI era.** 그리고 그 중심에는 **memory portability**가 있습니다. 메모리는 모델을 따라가는 게 아니라 사람을 따라가야 합니다. 사람들은 매일 Claude, ChatGPT, Gemini, Cursor 사이를 작업에 맞게 옮겨 다닙니다. 매번 자기 컨텍스트(노트, 이전 대화, 자료)를 다시 붙여 넣습니다. memory.wiki는 그 컨텍스트를 사용자 본인 소유로 한곳에 두고, URL 하나로 어느 AI에든 넘기게 합니다. 세 단계로 작동합니다: 1. **Capture.** 어디서든 빨리. Web, iOS, Mac Desktop, Chrome, VS Code, CLI, MCP, 어느 표면에서든 한 번의 동작으로 들어옵니다. 2. **Organize.** 본인 소유로 쌓입니다. 도큐먼트, 번들(주제별 묶음), 허브(전체 namespace) 세 단위로 스코프를 조정할 수 있어, 개인 노트부터 팀 단위 지식까지 같은 메커니즘으로 다룹니다. 3. **Use.** URL 하나를 Claude, ChatGPT, Gemini, Cursor에 붙여 넣으면 그 AI가 사용자의 컨텍스트를 자기 것처럼 읽습니다. **Use는 MCP로 한 단계 더 나갈 수 있습니다.** 단순히 URL을 붙여 넣는 것을 넘어, AI 에이전트가 memory.wiki에 직접 읽고 쓸 수 있습니다. 활용 시나리오 예시: - **자동 도큐먼트 업데이트**: 코드베이스에 주요 변경이 생기면 에이전트가 관련 도큐먼트 URL의 본문을 자동으로 갱신 - **진행 로그**: 장기 작업의 진척도를 하나의 URL에 누적 기록 (각 단계 끝날 때마다 추가). 그 URL 하나가 곧 살아있는 작업 로그 - **회의록 자동 정리**: 회의 녹취 직후 에이전트가 핵심을 추려서 회의록 URL에 저장, 같은 번들의 다른 회의록과 자동 cross-link - **리서치 누적**: 에이전트가 매번 다른 AI에서 본 답변/사실을 평소에 쓰는 리서치 도큐먼트에 추가, 시간이 지나면서 본인 도메인 지식이 누적 - **번들 단위 컨텍스트 push**: 에이전트가 작업 전 관련 번들 URL을 자동으로 자기 컨텍스트에 끌어옴 (예: 코드 리뷰 전 그 프로젝트 번들 로드) 타깃 사용자는 개인과 SMB입니다. 큰 조직이 아닌 사람들이 자기 도메인의 지식을 시간을 두고 쌓아가고, 그 지식을 자신이 쓰는 모든 도구에서 끌어 쓸 수 있는 자산으로 만드는 것이 핵심 시나리오입니다. --- ## Why now, why this LLM 프로바이더들은 본인 영역의 메모리를 가져갑니다: - 모델 안의 컨텍스트, 에이전트의 도구 메모리, 자기 플랫폼의 메모리 (ChatGPT Memory, Claude Projects, Gemini Gems) 이 영역은 그들이 가장 잘 만듭니다. 모델/런타임과 가까이 있는 영역이라 외부에서 진입할 이유가 없습니다. 그러나 그 영역 밖에 진짜 메모리 레이어가 있습니다: - 여러 AI를 가로지르는 portable 메모리 - 사용자가 소유하고, export할 수 있고, URL로 어디서든 부를 수 있는 메모리 - 개인과 SMB가 자기 도메인 지식을 시간을 두고 쌓아가는 메모리 LLM 프로바이더가 이 레이어를 만들기 어려운 이유는 단순합니다. 그들의 비즈니스는 사용자를 자기 생태계 안에 잡아두는 것이고, 사용자가 다른 모델에 자기 컨텍스트를 쉽게 넘기게 만드는 것은 그 비즈니스와 정면 충돌합니다. 표준은 막 자리잡고 있습니다 (llms.txt, MCP). memory.wiki는 이 표준 위에서 동작합니다. --- ## Where we are (2026년 5월 기준) **6월 중순에 개발자 커뮤니티 중심으로 1차 런칭** 예정. 그 전까지는 도그푸딩하며 다듬는 단계입니다. 개발자가 가장 먼저 가치를 느낄 진입점이라고 판단했습니다 (CLI, MCP Server, VS Code Extension, Chrome Extension이 이미 출시되어 있고, 이 사람들이 매일 여러 AI를 가로지르며 일하는 핵심 페르소나). 데모를 바로 보고 싶으시면 [memory.wiki](https://memory.wiki) 에 `demo@memory.wiki` 로 접속하시면 됩니다 (비밀번호 없이 이메일만). 50개 샘플 도큐먼트와 10개 번들이 담긴 데모 허브를 둘러볼 수 있습니다. 다음 채널은 이미 라이브 또는 출시 상태: - **Web**: memory.wiki, Vercel 배포 (pre-launch 상태로 운영 중) - **iOS 앱**: 오늘 App Store 심사 제출 (companion app) - **Mac Desktop**: DMG 다운로드 (Developer ID 사인 + 노타라이즈) - **VS Code Extension**: Marketplace 출시 - **Chrome Extension**: Web Store 출시 - **CLI / MCP Server**: npm 출시 - **macOS QuickLook**: Desktop DMG에 번들 채널 자체는 출시되어 있고, 6월 중순 런칭일에 일관된 메시징을 동시에 노출할 계획입니다. 내부적으로 작동하는 기능: - 렌더링 엔진: GFM 전체, KaTeX, Mermaid, 코드 하이라이팅, 모든 표면이 같은 markdown-it 인스턴스 사용 - AI 통합: Gemini, OpenAI, Anthropic (Claude Haiku 4.5 기반 허브 챗, 번들 챗, 단일 도큐먼트 챗) - Yjs CRDT 기반 실시간 협업, 짧은 URL 공유, 권한 모델 - 베타 무료 정책, 도큐먼트 영구 보관 약속 --- ## Roadmap - **6월 중순**: 개발자 커뮤니티 중심 1차 런칭 (CLI / MCP / VS Code / Chrome / Web / iOS / Mac Desktop 동시) - **런칭 직후 3개월 (목표)**: 디자인 파트너 5\~10팀, 개발자 채널에서의 첫 사용자 확보, 가격 실험 - **3\~6개월 (목표)**: SMB 페르소나로 확장, Android, 베타에서 Pro 전환 (Stripe, 영구 무료 티어 유지), Cursor/Windsurf 등 추가 AI 클라이언트 통합 --- ## What I'm looking for 15년간 한국, 영국, 사우디에서 큰 조직의 제품을 만들고 출시해 왔지만, 미국 시장에 내 이름으로 들어가는 것은 처음입니다. 제품과 빌딩은 자신 있게 끌고 갑니다. 시장 진입의 첫 6개월은 함께 깊이 의논할 사람들이 필요합니다. **Outsome US Track (2주, SF)** 참여를 진지하게 고려하고 있습니다. 6월 중순 개발자 커뮤니티 1차 런칭에 맞춰 GTM과 투자자 접점을 같이 다듬을 시점이라고 판단합니다. 특히 도움을 받고 싶은 영역: - **GTM**: 첫 100명에서 1,000명을 어느 개발자 채널, 어느 페르소나부터 모을지 (HN, ProductHunt, dev Twitter, MCP/agent 커뮤니티 등) - **포지셔닝**: "cross-AI memory layer" 메시지가 개발자, 일반 사용자, VC에게 각각 어떻게 다르게 전달돼야 하는지 - **VC, 디자인 파트너, 파워 유저 warm intros** - **솔로 파운더의 한계**: 어느 시점에 누구를 첫 hire 해야 하는지 - **미국 시장 운영**: 가격, 결제, 법인, 지원 채널, 한국 파운더가 흔히 놓치는 것 작은 조언이든 큰 연결이든 환영합니다. --- **조현상 (Hyunsang Cho)**, hi@raymind.ai, [memory.wiki](https://memory.wiki), [raymind.ai](https://raymind.ai) --- id: 3goAyT21 title: memory.wiki, Surface & Feature Inventory url: https://memory.wiki/3goAyT21 updated: 2026-06-14T12:49:47.193+00:00 --- # memory.wiki, Surface & Feature Inventory > **Scope**: Every memory.wiki surface EXCEPT the web editor (`/`). > Updated 2026-06-14. Maintained as the canonical reference for messaging > alignment, /about page IA, and marketing. This is **the** single source of truth for "what memory.wiki actually is across all channels." When store listings, /about, /plugins, README, or any channel description goes out of sync, this doc wins. --- ## Part 1 / The product in one sentence **memory.wiki is a personal knowledge hub for the AI era, capture once on any surface, deploy as a URL any AI reads.** Three nouns the brand owns: 1. **Doc**, a single document at `memory.wiki/<8-char-id>` 2. **Bundle**, a multi-doc knowledge graph at `memory.wiki/b/` 3. **Hub**, a personal wiki at `memory.wiki/@` One verb the brand owns: - **Deploy**, any URL drops cleanly into ChatGPT, Claude, Gemini, Cursor, Perplexity, MCP-aware agents, same payload, every reader. --- ## Part 2 / Surface-by-surface inventory ### A / Web viewer surfaces (memory.wiki/*) The web is the **render layer + URL layer + AI access layer**. Every other channel ultimately resolves to a memory.wiki URL. | Path | What it is | Why it exists | |---|---|---| | `/` | Single Doc viewer (TipTap read-only render) | The canonical doc URL. Public, password-restricted, email-allowlisted, or draft (owner-only). | | `/b/` | Bundle viewer (graph canvas + doc list + synthesis) | Multi-doc knowledge graph. Owner can re-run AI graph, resolve tensions, synthesize. | | `/@` (aka `/hub/`) | Hub viewer (personal wiki feed) | Avatar + display name + description + 7-day Recent + Older feed + Frontier / Pulse / Constellation layers. | | `/embed/` | iframe-safe doc render | Same render pipeline, no chrome, no auth UI. | | `/raw/(.md)` | Plain-markdown payload | YAML frontmatter + body + optional context block (summary, themes, insights, concept relations, parent bundle pointers, hub pointer). 60s edge-cached. | | `/raw/bundle/` | Bundle Spec v1.0 markdown | Manifest of bundle metadata + member doc links. | | `/raw/hub/` | Hub manifest markdown | Doc list + bundle list + concept index. Supports `?digest=1&compact=1` for AI-economy variant. | | `/raw/hub//c/` | Single concept definition | Atomic concept fetch from the hub ontology. | | `/raw/hub//log.md` | Hub activity log | Who did what, when. | | `/raw/hub//suggested-queries.md` | AI seed prompts | Conversation starters for hub chat. | **Cross-AI guarantee (load-bearing for the brand):** Middleware rewrites: `Accept: text/markdown`, known AI bot UA, or `.md`/`.txt` suffix routes to `/raw`. `Link` header advertises the canonical browser URL so search ranks the human page, not the raw endpoint. Every doc/bundle/hub URL therefore works as BOTH a human page AND an AI-readable resource without the user thinking about which. **Permission model (applies to docs + bundles + hubs):** - `is_draft = true` / owner-only - `password_hash` set / password-protected (legacy) - `allowed_emails[]` populated / specific people, view or edit role per email - otherwise / public **Share modal** surfaces the choice as 3 radio states (Private / Specific people / Anyone with the link) + edit-mode toggle (Owner / View / Public). **Real-time collab (Yjs CRDT)**: when collab is active on a doc, conflict detection is skipped, CRDT handles merging. Remote carets render as CodeMirror decorations. --- ### B / Web API + AI pipeline (memory.wiki/api/*) The web's HTTP surface. Used by all other channels. **Docs CRUD** - `POST /api/docs`, create. CORS-open to chatgpt.com / claude.ai / gemini.google.com for bookmarklet flows. - `GET /api/docs/[id]`, fetch markdown. - `PATCH /api/docs/[id]`, update. Actions: `publish` / `unpublish` / `soft-delete` / `set-allowed-emails` / `set-expiry` / `move-to-folder`. - `DELETE /api/docs/[id]`, permanent delete. - `GET /api/docs/[id]/versions`, history. - `POST /api/docs/[id]/versions/[versionId]/restore`, roll back. **Search & discovery** - `GET /api/search?q=...`, FTS with ILIKE fallback for CJK. - `GET /api/discover`, public trending / recent. **User & auth** - `GET /api/me`, current user. - `POST /api/auth/demo-signin`, backdoor for YC / App Store reviewers. Allowlist: `yc@mdfy.app`, `demo@mdfy.app`, `demo@memory.wiki`. - `GET /api/user/documents` / `folders` / `recent` / `hub/*`. **AI surfaces (one cascade, 28 actions)** - `POST /api/ai`, generic actions (polish, summary, tldr, translate, chat, beautify, compact, format, selection_*). - `POST /api/docs/transform`, intent transform (the extension's "Capture with intent" textarea calls this). - `POST /api/docs/[id]/decompose`, semantic chunking into typed nodes (concept / claim / example / definition / task / question / context / evidence) with typed edges (supports / elaborates / contradicts / exemplifies / depends_on / related). - `POST /api/bundles/[id]/graph`, knowledge graph generation. - `POST /api/bundles/[id]/resolve-tension`, AI identifies & resolves contradictions across the bundle's docs. - `POST /api/bundles/[id]/synthesize`, single narrative combining all docs. - `POST /api/bundles/[id]/suggest-title`, name suggestion. - `POST /api/bundles/[id]/suggestions`, related bundles. - `POST /api/bundles/ai-generate`, create bundle from a query. - `GET /api/bundles/[id]/constellation`, concept graph filtered to the bundle. - `GET /api/user/hub/frontier`, new concepts (7d), bundle hints, gaps. - `GET /api/user/hub/pulse`, 365-day activity heatmap + streaks. - `GET /api/user/hub/constellation`, full hub concept graph. - `GET /api/user/hub/suggestions`, AI recommends bundles to create. - `GET /api/user/hub/suggested-queries`, chat seed prompts. - `POST /api/hub/[slug]/recall`, vector search + LLM rerank. - `POST /api/hub/[slug]/chat`, streamed, concept-bridged RAG over the whole hub. **Auto-processing crons** (Vercel cron, fire on doc save / nightly) - `doc-summary`, summary, themes, insights (lite model) - `doc-graph`, semantic takeaways (lite) - `doc-ontology`, concept index + relations (primary) - `doc-decompose`, semantic chunking (primary) - `organize-doc`, heading / structure cleanup (lite) - `citation-rot`, link-validity audit - `lifecycle-sweep`, hard-delete expired docs **Provider cascade:** OpenAI / Gemini / Anthropic (default order, admin-configurable). Every call logged to `ai_usage` table with action, provider, in/out tokens, USD cost, user_id, anonymous_id, timestamp. **Import** - `POST /api/import/url`, web page to markdown - `POST /api/import/github`, repo .md files batch - `POST /api/import/notion`, workspace dump - `POST /api/import/obsidian`, vault - `POST /api/import/office`, Word / PPT / Excel - `POST /api/import/pdf`, text extraction **Upload:** `POST /api/upload`, image. Quotas: 20MB free, 1GB Pro. **Auth modes:** Bearer JWT (Supabase session), `x-user-id` header, `x-anonymous-id` cookie, browser session cookie. --- ### C / Web admin (/admin, hi@raymind.ai only) Live ops dashboard. Tabs: - **Overview**, 7 KPI cards (docs / users / views / docs today / docs this week / active users 7d / storage MB). - **Charts**, docs / views / users per day, doc sources bar. - **Users**, sortable table. - **Documents**, sortable table with private/shared badges. - **Activity**, reverse-chronological feed of captures / edits / bundle creates. - **Usage**, total cost USD, calls, in/out tokens, errors. Daily series. Top users by spend. Per-action breakdown. Per-provider breakdown. - **Settings**, AI cascade order + per-provider primary / lite model selection. Save invalidates in-memory config cache, changes live immediately. --- ### D / Auth handoff pages (/auth/*) One per channel. Same shell, channel-specific copy after sign-in. - `/auth/chrome`, Chrome / Edge / Brave extension - `/auth/safari`, Safari iOS + macOS extension - `/auth/desktop`, Electron Mac app - `/auth/vscode`, VS Code extension - `/auth/mcp`, MCP server / Claude Desktop / Cursor - `/auth/cli`, terminal CLI OAuth providers: Google + GitHub + Email magic link + Apple (iOS only). All routes through `/auth/callback`. The session cookie set on memory.wiki is then read by the channel's auth-bridge content script (extensions) or stored locally (desktop / CLI / MCP). --- ### E / Marketing surfaces - **/about**, Current PureShell narrative. Sections: hero, surfaces gallery, framework (Capture / Bundle / Deploy), ecosystem flow, 9-surfaces grid, primitives (Doc / Bundle / Hub), features grid (16 items), cross-AI benchmark table, vs vendor-memory comparison, roadmap, trust strip, pricing, FAQ. Bilingual (`/about` EN, `/ko/about` KO). - **/plugins**, Channels page. Lists Chrome / Safari / VS Code / Desktop / iOS / Android / CLI / MCP / QuickLook with version, size, install/store URL pulled from `apps/web/src/lib/channel-versions.ts` (the single source-of-truth file, never hardcode versions elsewhere). - **/benchmark**, Cross-AI deployability table. Same raw URL fed to Claude / ChatGPT / Gemini / Cursor, rendered output side-by-side. --- ### F / Chrome extension (apps/chrome-extension, v2.7.6) **Distribution:** Chrome Web Store (`chromewebstore.google.com/detail/.../nkmkgmebaeaiapjgmmalbeilggfhnold`). **Capture surfaces** - Whole page (Cmd+Shift+E), Readability + html-to-markdown fallback, metadata from JSON-LD / OG / Twitter / standard meta. Image extraction walks ``, `srcset`, `data-src`, lazy-load variants. UI-image detection drops logos / icons / sprites / pixels. - Selection (Cmd+Shift+X), highlighted text to standalone doc. - AI chat scrape, ChatGPT / Claude / Gemini / Perplexity. Range chip picks last N turns (All / 1 / 3 / 5). Per-message mini buttons (opt-in via Settings "On AI pages" toggle). - Social, X / Threads per-post inline button on hover. - GitHub markdown, "Open in memory.wiki" button next to Raw on `/blob/*.md` pages. - Image hover save, per-`` floating button on every site. **Intent capture (THE flagship)** "or capture with intent" textarea below the big Capture button. Free- form instruction goes to `/api/docs/transform` along with the page markdown. Cycling placeholder rotates example prompts. Site-aware chip rail below the textarea suggests intents contextual to the active tab (e.g. "extract code" on GitHub, "TL;DR" on news, "as recipe" on cooking sites). Chips can be star pinned (persisted to `chrome.storage.local`) or X dismissed. **Recent captures** Last 50 captures, local only. Click to open. "Clear all" button. New-entry slide-in animation. Reuse-intent icon on rows whose original capture used an intent prompt. **Capturing overlay** Animated morph blob + "Capturing..." flips to "Captured" with View + OK buttons when the URL lands. Scoped to popup body (position:absolute, not fixed) so iPad Safari popover doesn't leak it onto the host page. **Auth chip** - Signed-out: full-width "Sign in to memory.wiki" pill in footer. - Signed-in: avatar + name + "free during beta" plan. - Sign-out clears `mw-auth-session` from chrome.storage.local AND broadcasts `force-signout` to all open memory.wiki tabs (auth-bridge expires sb-* cookies in page context, the only path that actually drops the Supabase session on Safari Storage Partitioning). **URL strategy** - Signed-in: `POST /api/docs` returns `{id, editToken}`, opens `memory.wiki/?from={id}&token={editToken}`, clipboard: `Use memory.wiki/{id} as my context.` - Signed-out: gzip markdown + base64url, `memory.wiki/#md=`. 8KB URL cap. Over the cap, clipboard the raw markdown + toast. **Other** - Settings page: keyboard shortcut display (Cmd+Shift+E / X), floating- button toggle, account chip, link to Chrome's `chrome://extensions/shortcuts` for re-binding. - Footer "Also on" chip rail: QuickLook / iOS / Mac / VS Code / CLI / MCP (only when signed in). - Brand: dark popup (#08080a), Cal Sans display, JetBrains Mono mono. Lime (#B5FF1A) reserved for 6 to 12px dots / badges / icon glyphs only. - Toolbar icons: 16 / 19 / 32 / 38 / 48 / 128 PNG, full-bleed (no internal padding, fills the toolbar slot at every DPI). --- ### G / Safari extension (apps/safari-extension, v2.7.5 build 2) **Distribution:** - iOS App Store: Safari extension is a **separate** App Store record (in review as of 2026-06-14, name "memory.wiki Clipper", bundle `wiki.memory.clipper.ios`). The native iOS app at `apps.apple.com/us/app/memory-wiki/id6774713489` is a different record. - Mac App Store: separate record "memory.wiki Clipper for Mac", bundle `wiki.memory.clipper.mac`, in review. **Functional parity with Chrome**: identical popup-v25.html + popup-v25.js + content scripts + intent capture + recent + capturing overlay + sign- in chip. The differences are purely platform-driven: - **Auth bridge** (`auth-bridge.js`): runs in page context at `document_start` on memory.wiki tabs. Reads document.cookie for `sb-*-auth-token` cookies, decodes Supabase session, relays to background via `chrome.runtime.sendMessage`. Background caches as `mw-auth-session`. Necessary because Safari Storage Partitioning blocks `chrome.cookies.getAll` and credentialed fetch to `/api/me` from extension context. - **Force sign-out** listener (added 2026-06-14): when popup signs out, it broadcasts `{action:"force-signout"}` to all memory.wiki tabs, auth-bridge runs the cookie + localStorage cleanup in page context and immediately pushes a null session to background. - **Container app onboarding** (Mac + iOS): WKWebView hosts `Main.html`, animated blob mark + Cal Sans "memory.wiki Clipper" brand + tagline + "Enable in Safari" card with mockup of Safari Settings > Extensions panel + 3 steps + big "Quit and Open Safari Extensions Settings..." button + live state ("on" / "off" / "unknown"). Mac window 1280 by 800 (resizable, centered on first launch). - **iPad popup width gate**: `popup-v25.js` detects iPad (UA + multi- touch + screen width 600+) and adds `html.is-ipad`. CSS only forces `min-width: 500px` on iPad, iPhone sheet uses 100%. - **macOS Safari popup arrow color**: `theme-color #08080a` + `color-scheme: dark` meta tags so Safari paints the popover arrow dark to match the popup body. - **Auto-focus suppression**: macOS Safari auto-focuses the first focusable element when the popover opens, popup-v25.js force-blurs on DOMContentLoaded + RAF + 100ms. Focus-within highlight CSS is gated on `body.user-active` (flips on first real mousedown/keydown/touchstart) so the popup looks idle on open. --- ### H / iOS native app (apps/ios-native, v1.1 build 1) **Distribution:** App Store, name "memory.wiki", id 6774713489. **Five-tab floating capsule bar** MDs / Bundles / **Start** (animated blob, center) / Capture / Settings. Double-tap active tab at root for haptic confirmation. Floating glass isolation strip behind the bar. **Start (dashboard)** Time-of-day greeting using display name. Today's pulse strip (captures, week streak, total memories). Quick actions row (New Capture / Search / Open hub). Recent memories (6 tiles). Starred memories pinned list. Featured bundle preview with deploy-URL chip. Per-block stagger entrance. **Capture** Six modes: Write / URL / Photo (with OCR) / Voice (dictation) / Import. Title + body draft with markdown toolbar. Toast banners for each mode. OCR preview chip with Insert / Discard. Live-transcript banner during dictation. Sticky processing indicator for long uploads / imports. **Timeline (MDs)** Cards grouped by time bucket (Today / Yesterday / This week / This month / Earlier). Status icons (Cloud / Globe / Users + sync badge). 300ms-debounced semantic search (server) + local title-match filter (8-result cap). 30s cache, pull-to-refresh. Spotlight indexing. **Document detail** Status icon + "Copy for AI" pill (clipboard the canonical AI sentence). Share button (canonical short URL). Mono URL chip. MarkdownBody render with syntax highlighting. Inline TOC sheet. Edit mode. Delete (30-day trash recovery). Add-to-bundle modal. AI panel (ChatSheet) scoped to the doc. **Bundles** Glass card rows. Segmented filter All / Private / Shared / Public. Bundle detail with deploy URL + access state. 30s cache + pull-to-refresh. **Profile / Settings** Hub card with `@` URL. Copy-for-AI wedge. Hub stats (memory count, bundle count). Inline edits for email / username / display name. Appearance / accent picker. Dictation locale picker (KR / EN primary). Help / About / Legal. Sign out. Version + build. **Auth** Apple Sign-In (App Store 4.8 required), Google, GitHub, Email. Staggered entrance: blob, wordmark, "iOS COMPANION" chip, providers, footer. **Share extension** Accepts URL / plain text / Safari JS preprocessor result (title + body). Forwards to Capture pre-filled. No UI of its own. **Siri / App Shortcuts intents** - "Capture a memory" (pre-fill text param) - "Search Memory.Wiki" (query param routes to timeline + search modal) - "Open my Memory.Wiki hub" (opens `@slug` in Safari) Discoverable in Shortcuts, Spotlight, Siri, Action Button (iOS 16+). **Brand** Dark-only. `BrandTokens.generated.swift` from Style Dictionary. Cal Sans display, Noto Sans body, JetBrains Mono captions/URLs. Sheet chrome forced dark, 28pt corner radius. **Offline** NWPathMonitor banner above tab bar. Cached data readable, saves queued + retried on reconnect. --- ### I / Android native app (apps/android-native, v1.0 build 1) **Distribution:** Google Play, package `wiki.memory.MemoryWiki`, name "memory.wiki", in review. **Five-tab bottom nav** mirrors iOS exactly: MDs / Bundles / Start / Capture / Settings. **Start**, same shape as iOS. Time-of-day greeting (28pt display). AI URL strip (mono 9pt label, Copy-for-AI button with sparkles, 1.6s check swap). Ask-your-hub CTA. Hairline-bordered 3-column pulse row. Three quick action tiles. Recent + Starred. Featured bundle. Stagger 0.08s per block. **Capture**, six mode pills: Write / URL / Photo / OCR / Voice / Import. Title + body BasicTextField pair. Sticky toolbar pill row above IME (imePadding). Capture-paste deep link integration (clipboard fill on `RouterEvent.CapturePaste`). **Timeline / Bundles / Document detail / Settings**, feature parity with iOS. **Auth**, same staggered entrance. "ANDROID COMPANION" chip. Provider stack: Google / GitHub / Email / Apple (52dp glass rows, gradient stroke, press scale 0.985 + brightness dim). **App Shortcuts (static, long-press launcher)** - Capture (`memorywiki://capture`) - Ask hub (`memorywiki://chat-hub`) - Search (`memorywiki://search`) - Paste (`memorywiki://capture-paste`, auto-fills clipboard) **Google Assistant App Actions** - CREATE_NOTE routes to capture - GET_THING routes to search **Quick Settings tile** Long-swipe to Quick Settings, tap, fast-action capture. **Share intent** (silent, no UI) SEND text/plain, SEND image/*, SEND_MULTIPLE image/*. Forwards body + subject via deep link. **Widgets** - `MemoryWikiWidget`, full home screen (quick capture, recent, hub stats). - `MemoryWikiMiniWidget`, compact variant. **Brand** Dark-only. `BrandTokens.generated.kt` from Style Dictionary. No Material You dynamic color (intentional, brand consistency). --- ### J / Desktop (apps/desktop, Electron Mac DMG v2.7.5) **Distribution:** GitHub Releases DMG. Developer ID signed + notarized. Mac App Store version is a separate Safari container app (NOT this Electron app). **Architecture** Single Compose host (Electron BrowserWindow). Renderer = web UI bundled locally (offline-safe). Main process owns AuthManager + SyncEngine + workspace folder scanning + file watcher + recent files cache. **Editor & renderer** TipTap ProseMirror WYSIWYG (Phase B full). markdown-it WASM renderer matching web. CodeMirror 6 for raw markdown source pane. Split-pane (left preview / right source or sidebar file list). **Sidebar** Filter tabs ALL / SYNCED / LOCAL / CLOUD. Sort: newest / oldest / a-z / z-a. Cloud search via `/api/search`. Per-file status icon. Recently visited cache. Workspace folder picker. **Sync engine** 30s poll, 2s push debounce (per-file mutex), 5-retry offline queue (persisted to `offline-queue.json`). Yjs CRDT for real-time multi-user editing. Conflict detection + resolution with `suppressConflictUntil` guard to prevent edit/remote/merge loops. **File support** Text: .md / .markdown / .mdown / .mkd / .txt Imports: .pdf / .docx / .pptx / .xlsx / .html / .csv / .json **QuickLook integration** Detects whether `memory.wiki QuickLook.app` is registered. IPC `is-quicklook-installed` polls QLSupportedContentTypes. IPC `open-quicklook-settings` deep-links to Finder System Settings. Auto-repair on launch (re-registers if missing). **Theme** Follows `nativeTheme` (system dark/light follow). --- ### K / QuickLook plugin (apps/quicklook, bundled with Desktop DMG) **File types:** `.md`, `.markdown` (UTIs `net.daringfireball.markdown`, `public.markdown`). **Render stack:** - marked.js, HTML - highlight.js, code (190+ languages) - KaTeX, math - Mermaid, diagrams - Vendored `preview.css` mirrors `apps/web/src/app/globals.css` `.mdcore-rendered` tokens **UX** Space-bar in Finder on any .md, live preview panel. "Open in memory.wiki" button + copy-code buttons. macOS dark/light auto-follow. **CLI variant** `memory-wiki-quicklook file.md [--open] [-o output.html]` generates a standalone HTML preview from the command line. --- ### L / VS Code extension (apps/vscode-extension, v1.7.0) **Distribution:** VS Code Marketplace, `raymindai.memory-wiki-vscode`. **Sidebar TreeView** Lists cloud docs filtered by state (public / shared / private / view-only). Folder hierarchy. Star pinning. Bi-directional sync. Webview-based with real-time refresh. **Live preview panel** markdown-it + KaTeX + Mermaid + 190+ language highlighting + GFM. Local render (no roundtrip). **Sync engine** Auto-save on file write when `autoSync` enabled. Configurable interval 10 to 300s. Conflict resolution queues remote changes during concurrent edits. **Commands** (palette + keybindings) - `memorywiki.publish`, Cmd+Alt+P - `memorywiki.update` - `memorywiki.pull` - `memorywiki.preview`, Cmd+Shift+M - `memorywiki.export`, Cmd+Alt+E - AI actions: polish / summary / tldr / translate / chat - Copy-for-AI **Status bar**, collaborating peer count + sync indicator. **Per-workspace config** `memorywiki.apiBaseUrl` / `.theme` (auto/dark/light) / `.autoSync` / `.autoPreview` / `.syncInterval`. **Auth**, `/auth/vscode` OAuth handoff, JWT in secure storage. --- ### M / CLI (apps/cli, npm `memory-wiki-cli` v1.4.3) **Binary:** `mw` **Commands** - `mw publish [file]`, reads stdin if no file, extracts H1 title, prints URL + AI-paste sentence. Pipeline-friendly: `cat file.md | mw publish`, `pbpaste | mw publish`, `tmux capture-pane -p | mw publish`. - `mw update `, patch using stored edit token from `~/.memory.wiki/tokens.json`. - `mw pull [-o file]`, markdown to stdout or save. - `mw list`, auth-required. - `mw open `, open in browser. - `mw render `, local HTML render. - `mw login` / `mw logout` / `mw whoami`, auth state. **Config** Token in `~/.memory.wiki/config.json`. Respects `MEMORY_WIKI_URL` (legacy `MDFY_URL`). --- ### N / MCP server (packages/mcp, npm `memory-wiki-mcp` v1.5.4) **Distribution:** npm. Used by Claude Desktop, Cursor, Windsurf, Codex, any MCP-aware client. **22 tools** (the moat, full bidirectional access for AI agents): | Group | Tools | |---|---| | Core CRUD | `mw_create` / `mw_read` / `mw_update` / `mw_delete` / `mw_list` / `mw_search` | | Sharing & access | `mw_publish` / `mw_set_allowed_emails` / `mw_set_expiry` / `mw_get_share_url` / `mw_for_ai` | | Content manipulation | `mw_append` / `mw_prepend` / `mw_outline` / `mw_extract_section` / `mw_replace_section` | | Versions | `mw_versions` / `mw_restore_version` / `mw_diff` | | Import & duplicate | `mw_duplicate` / `mw_import_url` | | Folders | `mw_folder_list` / `mw_folder_create` / `mw_move_to_folder` | | Knowledge graph | `mw_hub_constellation` / `mw_bundle_constellation` | | Stats & history | `mw_stats` / `mw_recent` | | Utility | `mw_render_preview` | **Auth**, JWT via `mw login` (shared with CLI). Env: `MEMORY_WIKI_BASE_URL`. **`mw_for_ai`**, generates the canonical "Use memory.wiki/ as my context." sentence. Accepts bare ID, full URL, `b/` for bundles, or `@` for hubs. This is the one tool that bridges everything. --- ## Part 3 / Cross-surface feature matrix | Capability | Web | Chrome | Safari iOS | Safari Mac | iOS native | Android | Desktop | QuickLook | VS Code | CLI | MCP | |---|---|---|---|---|---|---|---|---|---|---|---| | Capture web page | / | yes | yes | yes | URL paste | URL paste | URL paste | / | / | URL via API | `mw_import_url` | | Capture AI chat | / | yes | yes | yes | Share sheet | Share intent | Paste | / | / | Paste | / | | Capture social post | / | yes | yes | yes | Share | Share | Paste | / | / | Paste | / | | Capture selection | / | yes | yes | yes | Share | Share | Paste | / | / | stdin | / | | Capture image | / | yes hover | yes hover | yes hover | Photo + OCR | Photo + OCR | Drag-drop | / | / | / | / | | Capture voice | / | / | / | / | yes dictation | yes dictation | / | / | / | / | / | | Intent capture (AI transform) | / | yes | yes | yes | Doc-level AI panel | Doc-level AI panel | Editor AI | / | Palette AI | / | `mw_update` after generate | | Recent captures | yes /user/recent | yes local | yes local | yes local | Timeline | Timeline | Sidebar | / | Sidebar | / | `mw_recent` | | Hub view | yes /@slug | Footer link | Footer link | Footer link | Open in Safari | Open hub | / | / | / | / | `mw_hub_constellation` | | Bundle view | yes /b/id | / | / | / | Bundles tab | Bundles tab | Sidebar | / | Sidebar | / | `mw_bundle_constellation` | | Sign in | OAuth + email | Chip routes to /auth/chrome | Chip routes to /auth/safari | Chip routes to /auth/safari | Apple/Google/GH/Email | Google/GH/Email/Apple | OAuth | / | OAuth | `mw login` | `mw login` | | Sign out (drops session) | yes | yes | yes (force-signout) | yes (force-signout) | yes | yes | yes | / | yes | `mw logout` | / | | Offline mode | / | URL hash fallback | URL hash fallback | URL hash fallback | yes NWPath | yes | yes offline queue | yes (read-only) | partial | / | / | | Real-time collab | yes Yjs | / | / | / | / | / | yes Yjs | / | peer count | / | / | | AI chat with hub | yes | / | / | / | ChatSheet (doc) | (doc-level) | (doc-level) | / | (doc-level) | / | (read tools) | | Cross-AI URL | yes /raw | yes Use as my context | yes | yes | yes Copy-for-AI | yes Copy-for-AI | yes | "Open in memory.wiki" | yes Copy-for-AI | yes paste-friendly | `mw_for_ai` | | Keyboard shortcuts | / | Shift+Cmd+E / Shift+Cmd+X | (system) | Shift+Cmd+E / Shift+Cmd+X | Shortcuts app | Long-press | / | / | Cmd+Alt+P, Shift+Cmd+M | (terminal) | / | | Brand tokens source | globals.css | (web tokens) | (web tokens) | (web tokens) | BrandTokens.swift | BrandTokens.kt | nativeTheme + globals | preview.css | (theme inherit) | / | / | **Parity gaps to close** (visible from the matrix): 1. **Voice capture**, only on iOS / Android. Could add to Desktop via system dictation. 2. **Hub view in extensions**, only footer link. Could deep-link to a hub-aware popup mode when the active tab is `@`. 3. **Real-time collab**, only Web + Desktop. iOS / Android / VS Code show last-saved. 4. **AI chat with hub**, only Web. Native apps + Desktop scope chat to the current doc, not the hub. 5. **MCP write tools**, every other channel can write docs, MCP also can, but Cursor / Claude Desktop users may not realize. --- ## Part 4 / Messaging alignment ### 4.1 Canonical terms (use these exact words) | Concept | Canonical | Don't say | |---|---|---| | The product | memory.wiki | mdfy, mdcore, Memory.Wiki, Memory Wiki, memorywiki | | The browser clipper | memory.wiki Clipper | Clipper, mwClipper, memory.wiki Chrome, memory.wiki for Safari | | The native iOS app | memory.wiki (iOS app, id6774713489) | memory.wiki Native, memory.wiki Mobile | | The native Android app | memory.wiki (Android app) | / | | The Electron app | memory.wiki Desktop | memory.wiki for Mac (that's the Safari container) | | A single document | Doc | document, note, memo, file | | A multi-doc collection | Bundle | collection, folder, pack | | A personal wiki | Hub | profile, page, wiki, knowledge base | | The 8-char URL | the doc URL / `memory.wiki/` | shortlink, share link | | The mono one-liner you paste into ChatGPT | "Use memory.wiki/ as my context." | Copy this link, Share to AI | | The animated mark | the blob | the icon (use "the blob" when you mean the morphing SVG specifically) | ### 4.2 Voice & typography rules - No middle-dot (the centered dot), em-dash (the long dash), arrow (the right-pointing arrow), or emoji in product UI. Use slash `/`, comma, parens, or whitespace instead. - Cal Sans always at `letter-spacing: 0`. - Lime `#B5FF1A` is reserved for 6 to 12px dots / badges / icon glyphs. Never as button background, overlay, headline, or section eyebrow. - "memory.wiki" is lowercase in body copy. "memory.wiki Clipper" stays lowercase too. App Store titles can use TitleCase when the platform forces it. - Verbs are present tense: "captures", "deploys", "renders", not "captured", "will deploy", "is able to render". ### 4.3 Three-line elevator pitch (recyclable) > **Capture from any AI chat, any web page, any thought.** > **Bundle by topic into a knowledge graph.** > **Deploy as a URL that any AI reads.** Use this in store listings, /plugins, /about hero, README, and the extension popup signin blurb. --- ## Part 5 / /about page restructure proposal **Current /about problem**: Tries to do too much in one scroll, hero, 9 surfaces, primitives, benchmarks, comparison table, pricing, FAQ. Reads like a feature list, not a story. New visitors bounce because they don't get "what is this in 5 seconds." **Proposed new IA** (top-to-bottom): 1. **Hero, what it IS, in 8 words** > Capture anywhere. Bundle by topic. Deploy to any AI. - CTA: "Try it free" to web editor - Sub-CTA: "Get the Clipper" to /plugins#chrome 2. **Live demo strip, show, don't tell** - Animated 4-second loop: browser, click Clipper, intent typed, memory.wiki URL opens, URL pasted into Claude chat, Claude reads the page. Same URL also shown in ChatGPT side-by-side. - Caption: **"One capture. Every AI reads it."** 3. **Three primitives** (the URL architecture is the brand) - Doc, `memory.wiki/`, single page or thought. - Bundle, `memory.wiki/b/`, multi-doc knowledge graph. - Hub, `memory.wiki/@`, personal wiki. - Each shown as a card with a real example URL the visitor can click. 4. **Capture surfaces, where it lives** Grouped, not 9-up grid: - **Browser**, Chrome / Safari extensions (one card, two store links) - **Mobile**, iOS / Android (one card, two store links) - **Desktop**, Mac DMG (Electron) + Mac App Store (Safari container) - **AI agents**, MCP server (Claude Desktop, Cursor, Windsurf, Codex) + CLI (`mw publish`) - **Editor**, VS Code extension + browser editor at memory.wiki - **Finder**, QuickLook preview (Space bar) 5. **Cross-AI proof**, the benchmark table stays, but headline becomes: > **The same URL. The same payload. Every AI.** Same `/raw/` fed to Claude / ChatGPT / Gemini / Cursor / Perplexity. Rendered output side-by-side. No fork, no per-AI adapter. 6. **What the AI sees**, show the `/raw/` page. Surfaces the YAML frontmatter + body + context block. The brand's secret weapon is that this is **just markdown**, no proprietary format. 7. **Versus vendor memory** comparison table: | | memory.wiki | ChatGPT Memory | Claude Projects | Notion | |---|---|---|---|---| | Portable across AIs | yes | no | no | no | | Owned by user | yes | no (vendor) | no (vendor) | yes | | URL-addressable | yes | no | no | yes | | AI-readable as markdown | yes /raw | no | no | no (paywalled API) | | Auto-captured on the way out | yes | no (user must save) | no | no | 8. **Trust strip** - Open source (link to repo) - No login required for first capture (anon hash URL) - URLs are permanent (never expire, pricing memory backs this) - Cross-AI inheritance is the guarantee, not a feature 9. **Pricing**, Free during beta, Pro later. Repeats the no-expiry promise. 10. **FAQ**, keep, but trim to 6 high-intent questions: - Do I own my data? - Does it work with ChatGPT / Claude / Cursor / Gemini? - What happens to URLs if I stop paying? - Can I import from Notion / Obsidian / Roam? - Is the editor required? (No, capture-only flows are valid.) - What's a Bundle vs a Hub? 11. **Footer**, channel rail (every distribution channel as a chip with version + size, pulled from `channel-versions.ts`). **Removed from current /about:** - 16-item features grid (overwhelms, moves to /plugins channel pages) - Roadmap (lives in `docs/ROADMAP.md` + tracked in admin only) - 9-surfaces literal grid (replaced by 6-grouped capture surfaces above) **Tone**: - Less "look at all these features" - More "here's what you can do today, in 60 seconds" - The benchmark and primitives sections are the moat, keep them prominent. Everything else supports them. --- ## Part 6 / Marketing strategy ### 6.1 Positioning (one sentence) **"memory.wiki is the personal knowledge layer that every AI inherits the moment you paste a URL."** What this kills: - Notion-as-AI-memory (Notion's AI is bound to Notion's surface) - ChatGPT Memory / Claude Projects (vendor-locked, not portable) - Bookmark managers (no AI consumption) - "Save for later" apps (no AI deployment) - Local markdown editors (not URL-addressable) What this competes with directly: **none head-on**. memory.wiki sits between "AI memory I can't move" and "files I can move but no AI reads", the only product whose URL is both human-browsable and AI-deployable. ### 6.2 Three growth loops to ship **Loop 1 / Capture viral (built into extensions)** - Every clipped doc page footer carries: "Captured with **memory.wiki Clipper**" with chip link to /plugins. - Every `/raw/` response includes a footer line in the context block: `Generated by memory.wiki, capture with the Chrome extension or `mw publish` from your terminal`. - The AI sentence "Use memory.wiki/ as my context." IS the viral unit, every time a user pastes it into Claude / ChatGPT, the URL goes into AI training-set telemetry too. **Loop 2 / Hub-as-portfolio (built into hubs)** - Hub URLs `memory.wiki/@` are public-by-default and indexable. - Hub OG image shows avatar + doc count + concept count, social-share friendly. - Targeted at builders, researchers, indie hackers, anyone with a Twitter / LinkedIn / personal site link to their work. **Loop 3 / AI agent integration (built into MCP)** - Cursor / Windsurf / Codex / Claude Desktop install the MCP server, the agent can READ + WRITE to memory.wiki autonomously. - Use case: "Cursor saves every README it reads into your memory.wiki hub." Or: "Claude Desktop drafts a memo and publishes the URL back to itself the next session." ### 6.3 Channel-by-channel playbook | Channel | Audience | Wedge message | Asset | |---|---|---|---| | Twitter / X | AI builders, indie hackers | "Stop re-explaining context to every AI. One URL, every AI reads it." | 30-second loop GIF: chip click, URL, paste into 3 different AIs. | | Hacker News | engineers, devtools enthusiasts | Show HN: memory.wiki, paste this URL into any AI as your context. | /benchmark page + open-source repo + MCP support. | | Product Hunt | productivity nerds | "Your knowledge hub for the AI era." | Featured channel: Chrome ext + iOS app + Mac app launches all stacked. | | Reddit r/ChatGPT, r/ClaudeAI, r/LocalLLaMA | power users | "I built a thing that lets me carry context between Claude and ChatGPT." | Bare-bones post linking /benchmark, no marketing fluff. | | LinkedIn | knowledge workers, PMs | Hub-as-portfolio angle. "My memory.wiki is my AI-readable resume." | Founder hub as the proof. | | Designer / dev Twitter | brand-conscious folks | The animated blob + brand polish. Aesthetic as the wedge. | Brand kit assets + the /about page itself as a portfolio. | | Newsletter sponsorships | TLDR, Bytes, etc. | "Bookmarks are for browsers. memory.wiki is for AIs." | One-line CTA with the extension link. | | AI Dev communities (Cursor / Claude Discord / Windsurf) | agentic dev users | MCP-first pitch. Live demo: Cursor reads/writes memory.wiki autonomously. | Setup video + 1-min MCP install guide. | ### 6.4 Launch sequence (12 weeks, ending late August 2026) (Aligns with `v6_12week_plan_state` memory, all twelve weeks landed on v6 branch by 2026-05-05, public flip held for end of August 2026.) - **W -4 to -1 (now)**, finish all submissions: - iOS native (live) - iOS Safari Clipper (in review) - Android (in review) - Mac App Store Safari Clipper (in review) - Chrome Web Store 2.7.6 (in review) - **W -3**, `/about` page restructure ships per Part 5 above. - **W -2**, `/benchmark` page polished. Three demo videos recorded (capture and paste / Hub portfolio / MCP autonomous). - **W -1**, soft launch to friends + Twitter circle, gather feedback, fix top 3 bugs. - **W 0 (Aug 27, 2026, Wednesday)**, public flip: - Show HN - Product Hunt launch (book a Tuesday slot) - Founder Twitter thread + LinkedIn post - r/ChatGPT + r/ClaudeAI cross-post - Press: TLDR sponsorship, Bytes sponsorship - **W +1 to W +4**, community engagement, MCP-focused content (Cursor + Claude Desktop demos), targeted Reddit replies, top hubs as case studies. - **W +6**, Pro pricing turn-on (free during beta ends). - **W +8 to +12**, partnership outreach (Anthropic / OpenAI dev relations, Cursor / Windsurf integrations as featured installs). ### 6.5 What NOT to do - **Don't lead with "AI memory."** Vendor memory ate that phrase. Lead with "URL any AI reads." - **Don't show the editor as the hero.** The editor is fine, but the hero is the capture / URL / AI chain. Showing the editor first makes it look like another Notion clone. - **Don't claim "the best for X."** Claim "the only one that does Y across N AIs." Specific facts beat superlatives. - **Don't write blog posts pre-launch.** Write demos. Every demo links to a live `/raw/` the reader can copy-paste. - **Don't bundle the Pro tier with the launch.** Free-for-now keeps the signup friction at zero. Pricing turns on when DAU stabilizes. - **Don't run paid ads before W+6.** Organic loops first, paid re-amplification of what already worked. ### 6.6 KPIs to watch - **Captures / day**, primary product KPI. 1k/day at W+4 is the internal goal. - **Unique users who pasted a URL into an AI**, the moat KPI. Tracked via the AI sentence clipboard event + downstream UA on `/raw/` fetches (Claude / ChatGPT bot UAs). - **Hubs with 5+ docs**, engagement KPI. Hub = retained user. - **MCP installs**, agent integration KPI. Tracked via npm download stats. - **Cross-AI fetch ratio**, `/raw/` hits broken down by AI bot UA. Healthy = no single AI more than 60% of fetches. --- ## Part 7 / Maintenance When any channel ships a new feature OR changes copy: 1. Update its section in **Part 2** above. 2. Update the matrix in **Part 3** if a parity gap closes / opens. 3. Update the canonical terms in **Part 4.1** if a name changes. 4. If the change touches /about, update **Part 5**. 5. If the change opens a new growth angle, add to **Part 6.3**. The doc is dated `2026-06-14` in the title. Re-date when a substantial revision lands. **File locations referenced** (for future-self / collaborators): - Web: `apps/web/src/app/**` - Web tokens: `apps/web/src/app/globals.css` - Channel versions: `apps/web/src/lib/channel-versions.ts` - Chrome ext: `apps/chrome-extension/**` - Safari ext: `apps/safari-extension/memory.wiki Clipper/**` - iOS: `apps/ios-native/**` - Android: `apps/android-native/**` - Desktop: `apps/desktop/**` - QuickLook: `apps/quicklook/**` - VS Code: `apps/vscode-extension/**` - CLI: `apps/cli/**` - MCP: `packages/mcp/**` - Design tokens source: `design-tokens/**` - Canonical brand wiki: https://memory.wiki/L2SHNVir --- id: 6gYYo7iw title: Post by @ekakino_nakagawa url: https://memory.wiki/6gYYo7iw updated: 2026-06-05T05:20:21.778941+00:00 --- # Post by @ekakino_nakagawa > **@ekakino_nakagawa** · 2026-06-04 12:05 UTC · threads ![](https://scontent-icn2-1.cdninstagram.com/v/t51.2885-19/358071947_763686925536784_8963958885794689555_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby41MDIuYzIifQ&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gErbZEK_ShDAJ6r8eaDM-waSWCjJmQV4j2lEsym6BCJyjwsMGdFsZVmvAYy1XZp4tE&_nc_ohc=2Su7Z8KrFXIQ7kNvwE6_lPx&_nc_gid=2FOR05KFHTzLhXAdpGleyw&edm=AFH_I_IBAAAA&ccb=7-5&oh=00_Af80yJv7xXApeFXoQtNXBE44kyNL3BYFwUkkOom02xbfeg&oe=6A281C94&_nc_sid=58c7ce) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/715338442_17970968310113484_5680745639161957580_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=101&ig_cache_key=MzkxMjA2NjkwMDY3ODQ0ODM0Mw%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=BpAsLpQbIA8Q7kNvwHQQGzm&_nc_oc=AdoVWXo_F8Fn3ch1My-VI1KZ0h4lMXkGGhUWRAMTpn272JkZltAAumCLexUGgLXlm0Q&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af-dMmBr9wTtecctBj97WYhqxURWJSq5amtF7FL4sX4K_Q&oe=6A2817DD) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/716858792_17970968319113484_4763001101120237811_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=100&ig_cache_key=MzkxMjA2NjkwMzYwNjA5NTgzNw%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=CGkId6c5mkIQ7kNvwHNI4Pv&_nc_oc=AdqYO5nBfvSqgDhWMqvTsVdL2zkF4Na2bBRWsZE8JyaPJdVRrR-ul1P2OgGK6LSiiFQ&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af_tRKcL2ddq-n2ZBi3GpLc8v9ZVjwGEnGKv0j8YYCMqmQ&oe=6A284080) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/714931315_17970968328113484_7503601547272602246_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=108&ig_cache_key=MzkxMjA2NjkwNTcwMzIxMjg0OQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=tIfIAcm1yXcQ7kNvwE9Plqh&_nc_oc=Adq-_wuJMYEsrYgSs_cYdmpWmtDp252GxT2lhLSE_Ythxm8SyRdogO3x4VP8jpehYso&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af_OheTOLSEfZyimfZjPU-xxSn1wGs8BEOnVsS_Tu8T6_Q&oe=6A283BE1) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/714243888_17970968337113484_6950932775728154566_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=101&ig_cache_key=MzkxMjA2NjkxMTA5NzExODY4MA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=vsNu8mxasGYQ7kNvwG1N1UB&_nc_oc=AdqD3CwCh37jjgaU_gFNjqHiLP3PQgZ9-BL0-2LaaM7x5n4eLqTXjDGc7yMrdWXL294&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af9CFF9XJ1src4bmCbWMXDlFB9u1TqZtbaI_Vc2AukbwEQ&oe=6A283823) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/716841743_17970968346113484_3769441317408714975_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=101&ig_cache_key=MzkxMjA2NjkxNjIwNTc0NjkzNg%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=uPtV-mWMBWEQ7kNvwGn-S34&_nc_oc=AdoXOWIwJMogDLlZl1Y2XtdTGLV0phFepp5m7jlQIfGjEYCxyWOLsOPywuNrKNDCsbo&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af-A3RbRudnU9IIceMj9QqFGIqBx5ioueq3_Ydhe-dciww&oe=6A281B98) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/715549800_17970968355113484_5887787411810282723_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=110&ig_cache_key=MzkxMjA2NjkyMzUwMzg0Nzk0MA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=9E3LE2rZ7WAQ7kNvwEXlTsJ&_nc_oc=AdrWkVk488bQCNfFaObOfl2nfNI0C2i6L8Mnb5PHJKFGY8LR5zOLlORnfPWv5mu-0zo&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af9HfJQEe81PI5uNDjX0dpqz9lc9x6eHEUo0ZOEhLoc5Ig&oe=6A281B19) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/713464017_17970968364113484_5748769909562577457_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=101&ig_cache_key=MzkxMjA2NjkyNTYxNzc5NDIxMQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=VMUkLQ5ZOlUQ7kNvwEs6XrO&_nc_oc=AdqZdq3vWpzbXejVyY60QNabHbPonSudAaZCkfycGhe54NECrzNKpXC3eV4PrCXk5p4&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af82gnSTrQNXQofdpFL4li1Jb80iAmrA7NkIASbeuSuAfQ&oe=6A2836B4) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/715590153_17970968373113484_6684479654463841732_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=100&ig_cache_key=MzkxMjA2NjkyODg2NDE1MjM1OA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=Z2nhQyiRgJEQ7kNvwEOocBA&_nc_oc=AdpjsgDBSCYByfaYr7Z-kGS66vTLtqK54DP5j28Q0xRCx7ZTCl7QV-162BbE9L1-phU&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af9NZbp_pnZ8i0DjpQdbWQZhAyFskOrtTCX7gVqGE6PsXA&oe=6A282EF4) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/717236514_17970968382113484_3377357870784599857_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=103&ig_cache_key=MzkxMjA2NjkzMzcwNDM3NzM3Mg%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=UCGAT7H8gToQ7kNvwF7kWiV&_nc_oc=AdrZKloWExgh3vYRu-MBbdc4a7OPHBrX_HeUDMLPDff3Puh_iMutFwbXhwBygTjOFSA&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af_32XVInFf5RaoehE2OwYdgp_Xp2qV22vYhASA_qxnXog&oe=6A28460E) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/714912021_17970968400113484_6456283079399335196_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=110&ig_cache_key=MzkxMjA2NjkzNjUzOTc0ODA0MA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=Wio26PmJIrQQ7kNvwF9jTsr&_nc_oc=AdrZeF-EVRhzdZNo6rtN37HB5MLX6pccxYfCBbCCzYW2vYM2ORiy7roOQaTRJ8a4zy4&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af_CXJEVUEAF6g-t0UgBOYKc7WmMWPxQiHBMV0FPbs2xpQ&oe=6A2843AE) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/716070213_17970968391113484_2895599419808872421_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=101&ig_cache_key=MzkxMjA2NjkzOTg5NTIwOTk0OQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=mm3BG4GAiZgQ7kNvwHmTMo0&_nc_oc=AdoGZ-M9X0JAQOrOhc3AxlW_veg_Epwb3loJqd0dwewWrLTDRsx73XFlfETU3vFKUno&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af9oHv1fp7FABpzv-L7VCG-Z6F0giXk3WYyQHK-0gaR6KA&oe=6A28401F) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/714862088_17970968409113484_5919950586229724711_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=111&ig_cache_key=MzkxMjA2Njk0NTcxNjg4NjU5OQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=f26CZbBHo5wQ7kNvwFkmK9X&_nc_oc=Adq2iD49e1bbUaXD93bkDJZmf_OURevj1MYnnoEaVzDYfJHjGa3wZ6VwTeOV0w8h5mk&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af941mzNee6RX-zW9_2aGXJLQ8Qwp2A_1mV8t1CAkLCm5g&oe=6A284731) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/714931309_17970968418113484_8266673953712906065_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=106&ig_cache_key=MzkxMjA2Njk0ODEwNzYxNTc1MQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=fApWcf0RZKEQ7kNvwHwDhIE&_nc_oc=AdpaDPEMUNa4kHBrSAAf0JmsoXdF-LSJbnj54PYBx4n4S_pzqovkGcwh8Dzb4DT9YSE&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af9pG6zJ1dkSk3pvSJUd-GPEG9tNS4LeLg5Qvx9qz7ZLHA&oe=6A281FA9) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/714981513_17970968436113484_2463873268968317275_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=110&ig_cache_key=MzkxMjA2Njk1Mzk5NjQyNTQzMw%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=aN06wYEFKWkQ7kNvwFJ69R8&_nc_oc=AdrsV_Bov33URzVYhiRGAddM2rCSR3DrWqxt9XIOlVspS4PWr5ffNjony3w8rVLwvRw&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af9FMNF7nj3uJ9rj1K6yh2TGYc-POVv7s8YAEiNT8tnOkw&oe=6A2830A7) ![](https://scontent-icn2-1.cdninstagram.com/v/t51.82787-15/714862100_17970968427113484_8349008813742872199_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=104&ig_cache_key=MzkxMjA2Njk1NTcxNjEwMTY3OQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMjA0OC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=EsWgfo4sN_IQ7kNvwFBvAu0&_nc_oc=Ado0y_rdYxi3PqL-g3v2CgLcKBMq-1FvFnqyn-Bb4qIjOhRpb3lEhQakqdFfOeWIfq8&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-icn2-1.cdninstagram.com&_nc_gid=3n-0MKZdLoNPP4e7PRF-Vg&_nc_ss=7a22e&oh=00_Af-78DH30JxHZs8Nlxw3LhHOEB1_ZmfyrlQMxeNLzTy8dw&oe=6A2844A4) [Original post](https://www.threads.com/@ekakino_nakagawa/post/DZKdDJBmFlV) --- id: D9kWUoDr title: Memory.Wiki v8 Strategy and Vision url: https://memory.wiki/D9kWUoDr updated: 2026-06-04T07:12:56.097913+00:00 --- # Memory.Wiki v8 Strategy and Vision > The collected documents outline Memory.Wiki's evolution toward becoming a cross-AI knowledge layer, positioning itself as the URL delivery system for AI context rather than another note-taking app. The v8 direction emphasizes sustainable craftsman SaaS growth while solving the core problem of users having to re-explain context across different AI tools. ## Key claims - [EXTRACTED] Memory.Wiki is "the URL delivery layer for your AI knowledge" with three URL primitives: Documents (`memory.wiki/`), Bundles (`memory.wiki/b/`), and Hubs (`memory.wiki/hub/`) [doc-2] - [EXTRACTED] The external thesis is "Stop re-explaining your context to every AI. Put your knowledge in one URL they can all read" [doc-1] - [EXTRACTED] The founder goal is "지속 가능한 craftsman SaaS. 5년에 ARR $2-5M. NPS 70+. 1k-10k paid 사용자가 정말로 *사랑하는* product" [doc-1] - [INFERRED] OpenAI/Anthropic cannot build a cross-AI memory layer because it would require feeding competitors, creating a structural wedge for Memory.Wiki [doc-6] - [EXTRACTED] The strategic framework follows "CAPTURE → ORGANIZE → USE" with an indispensability loop, measured by Weekly Recapture Rate [doc-1] - [EXTRACTED] The core product promise is "You author. AI uses. The wiki maintains itself" with automatic concept indexing, backlinks, and LLM maintenance [doc-4] - [AMBIGUOUS] Current gap from mdfy to true memory.wiki is "링크 그래프, 의미 기반 검색, LLM 자가 정리" but timeline and implementation details vary across documents [doc-4] - [EXTRACTED] Multiple distribution channels planned including MCP server, Chrome extension, Mac/iOS apps, VSCode extension for comprehensive capture [doc-5, doc-6] ## Cross-references - **URL Architecture**: Both doc-1 and doc-2 describe the three-tier URL system but doc-1 shows incomplete text while doc-2 provides full specification with markdown delivery via `Accept: text/markdown`. - **Cross-AI Positioning**: Doc-4 emphasizes it's "not another notes app" while doc-6 positions it as "infrastructure category" rather than notes, memory, or agent memory store. - **Launch Strategy**: Doc-5 details App Store submission process while doc-6 mentions "6월말 9-surface 동시 public 런치" suggesting coordinated multi-platform launch. ## Open questions / gaps - Specific implementation timeline for the missing pieces (graph links, semantic search, LLM auto-organization) - Pricing strategy beyond the free tier mentioned in App Store listing - Technical architecture for cross-AI compatibility and the promised "100% benchmark 검증" - How the "indispensability metric" of reduced re-explanation will be measured across different AI platforms ## Provenance - [doc-1]: Strategic framework and URL architecture foundation for v8 direction - [doc-2]: Launch checklist with current capabilities and capture surfaces - [doc-3]: Referenced vision document (content appears cut off) - [doc-4]: Detailed product specification defining core promises and differentiation - [doc-5]: App Store submission guide showing distribution strategy - [doc-6]: Founder pitch preparation positioning Memory.Wiki as infrastructure rather than notes app --- id: 4pQoOZ9p title: 업계 최고, 특히 은둔하고 계시는 분들 url: https://memory.wiki/4pQoOZ9p updated: 2026-06-04T07:06:13.382968+00:00 --- # 업계 최고, 특히 은둔하고 계시는 분들 > **@bullish_bee** · 2026-06-04 04:40 UTC · threads 업계 최고, 특히 은둔하고 계시는 분들 모셔오려면 팔로워가 일단 많아야함🥳  Translate ![](https://scontent-ssn1-1.cdninstagram.com/v/t51.82787-19/568684010_17845578312593105_7877322529466057766_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDI0LmMyIn0&_nc_ht=scontent-ssn1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2gF2ZEtjuiQ3Tqc3HNLu6zjibVFe2scajchoen_6SWjKdRr0Op_yY95Fs2FgVXvxC90&_nc_ohc=uUb_Gi7dsNQQ7kNvwHf6hgx&_nc_gid=51VbCFHMTNFUhTtok0NDjg&edm=APfQFzwBAAAA&ccb=7-5&oh=00_Af_u0SJMTMlw51alm6HmojBMX7FdineoEKkMGC_qy1-f5w&oe=6A27112F&_nc_sid=b31082) ![](https://scontent-ssn1-1.cdninstagram.com/v/t51.82787-15/713443474_17884260930586094_3933346087157585956_n.jpg?stp=cp6_dst-jpg_e35_tt6&_nc_cat=109&ig_cache_key=MzkxMTg0MjY2NDAxMDQ0NTA0OQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMTE3MC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=9GQYuRNYBCsQ7kNvwGoMac8&_nc_oc=AdrG2yB7H_IgsAZkUivqk61iS00XuJXzoKmY3sBMtbprz1EaE8dvpCbnH0fyq1RA12c&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-ssn1-1.cdninstagram.com&_nc_gid=51VbCFHMTNFUhTtok0NDjg&_nc_ss=7a22e&oh=00_Af8BAVETP6GGar_tt-CWSM5y1hLTXgC6vfsAVnowwjG9FA&oe=6A26FF8E) ![](https://scontent-ssn1-1.cdninstagram.com/v/t51.82787-15/714521905_17884260912586094_8634271043366339701_n.jpg?stp=dst-jpg_e35_s640x640_sh2.08_tt6&_nc_cat=109&ig_cache_key=MzkxMTg0MjkwMTkzNjU0NjkxNg%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0ueHBpZHMuMTI1NC5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=i4Nn1SYRI5QQ7kNvwHktMol&_nc_oc=AdovXtq91TcjSL6TxsqFhEYoLEL2mcYqlviei_tjyV0DA3Z74HPhY9ZUidoax9rBK00&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-ssn1-1.cdninstagram.com&_nc_gid=51VbCFHMTNFUhTtok0NDjg&_nc_ss=7a22e&oh=00_Af9IO6-4IVXxr-8YTceAQBvubxaQV8nVtDi6FjqBMNyT1g&oe=6A270ACC) [Original post](https://www.threads.com/@bullish_bee/post/DZJqGXqD-Qq) --- id: EFWGAx_k title: 내가 본 지능 높은 사람들 특징 url: https://memory.wiki/EFWGAx_k updated: 2026-06-04T07:06:10.815099+00:00 --- # 내가 본 지능 높은 사람들 특징 > **@mindparkpoint** · 2026-05-31 08:00 UTC · threads 내가 본 지능 높은 사람들 특징 (지극히 주관적인 의견입니다.) 1. 혼자 있는 거 좋아함. - 내향성 강한 경우 많음. 2. 에너지 소모가 많아서 피곤해 보이는 경우 많음. - 감각이 상대적으로 민감하게 발달해 있고, 타인의 감정에 매우 세밀하게 반응하는 듯 보임. 3. 얘기해보면 무의식적으로 관찰자 시점으로 자신을 바라보는 사람 많음. - 자기 혐오와 자기 탐구를 반복하는 경향 강함.. 4. 스몰토크 잘 못함. - 가십거리나 가벼운 일상이야기에 큰 관심이 없는 듯 보임. 5. 또 있나?  Translate ![](https://instagram.fkno6-1.fna.fbcdn.net/v/t51.2885-19/573323465_1219825463302212_7278921664109726296_n.png?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xNTAuYzIifQ&_nc_ht=instagram.fkno6-1.fna.fbcdn.net&_nc_cat=1&_nc_oc=Q6cZ2gFVcVv6GeRGs2oIDMxTmfL9ZSwc3K5yTKLN-SY0qk6XbqfBYjBAhCV46kR1SLxwf6whdFBcd1hTDv1I0-SV87KJ&_nc_ohc=sC_l4XeF6cQQ7kNvwF_hkVc&_nc_gid=lDBASIuTNpd05U6fkNpUUg&edm=ALlQn9MBAAAA&ccb=7-5&ig_cache_key=YW5vbnltb3VzX3Byb2ZpbGVfcGlj.3-ccb7-5&oh=00_Af9-bBcUP88nCgDDfvi01P3cc38xvagxTcIRW35rYbCQ0w&oe=6A26EB6A&_nc_sid=e7f676) [Original post](https://www.threads.com/@mindparkpoint/post/DY_txj4CbQ0) --- id: Wfo9V0iT title: 내가 본 지능 높은 사람들 특징 url: https://memory.wiki/Wfo9V0iT updated: 2026-06-04T07:05:54.890184+00:00 --- # 내가 본 지능 높은 사람들 특징 > **@sssoooyoung0_0** · 2026-05-31 11:36 UTC · threads 내가 본 지능 높은 사람들 특징 (지극히 주관적인 의견입니다.) 1. 혼자 있는 거 좋아함. - 내향성 강한 경우 많음. 2. 에너지 소모가 많아서 피곤해 보이는 경우 많음. - 감각이 상대적으로 민감하게 발달해 있고, 타인의 감정에 매우 세밀하게 반응하는 듯 보임. 3. 얘기해보면 무의식적으로 관찰자 시점으로 자신을 바라보는 사람 많음. - 자기 혐오와 자기 탐구를 반복하는 경향 강함.. 4. 스몰토크 잘 못함. - 가십거리나 가벼운 일상이야기에 큰 관심이 없는 듯 보임. 5. 또 있나?  Translate ![](https://scontent-ssn1-1.cdninstagram.com/v/t51.82787-19/702442638_17909644536410935_4865185561081209727_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-ssn1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2gF2ZEtjuiQ3Tqc3HNLu6zjibVFe2scajchoen_6SWjKdRr0Op_yY95Fs2FgVXvxC90&_nc_ohc=yzFGmVm_WEUQ7kNvwGkLHKk&_nc_gid=51VbCFHMTNFUhTtok0NDjg&edm=APfQFzwBAAAA&ccb=7-5&oh=00_Af_xZVo8eD8SWtxVACDDuqU8gucznRvhMk13Xb3bjJNquA&oe=6A26DC8C&_nc_sid=b31082) ![](https://instagram.fkno6-1.fna.fbcdn.net/v/t51.2885-19/573323465_1219825463302212_7278921664109726296_n.png?stp=dst-jpg_e0_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xNTAuYzIifQ&_nc_ht=instagram.fkno6-1.fna.fbcdn.net&_nc_cat=1&_nc_oc=Q6cZ2gFVcVv6GeRGs2oIDMxTmfL9ZSwc3K5yTKLN-SY0qk6XbqfBYjBAhCV46kR1SLxwf6whdFBcd1hTDv1I0-SV87KJ&_nc_ohc=sC_l4XeF6cQQ7kNvwF_hkVc&_nc_gid=lDBASIuTNpd05U6fkNpUUg&edm=ALlQn9MBAAAA&ccb=7-5&ig_cache_key=YW5vbnltb3VzX3Byb2ZpbGVfcGlj.3-ccb7-5&oh=00_Af9-bBcUP88nCgDDfvi01P3cc38xvagxTcIRW35rYbCQ0w&oe=6A26EB6A&_nc_sid=e7f676) [Original post](https://www.threads.com/@sssoooyoung0_0/post/DZAGiGAjyjP) --- id: y30rsQry title: ???: “무슨 말이죠? 여기가.. AI 회사라고요?” Translate url: https://memory.wiki/y30rsQry updated: 2026-06-04T07:05:32.162529+00:00 --- # ???: “무슨 말이죠? 여기가.. AI 회사라고요?”  Translate > **@jkimmorgan** · 2026-06-04 06:07 UTC · threads ???: “무슨 말이죠? 여기가.. AI 회사라고요?”  Translate ![](https://scontent-ssn1-1.cdninstagram.com/v/t51.82787-19/583129390_17906926731270491_1679908443120151974_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-ssn1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2gFyI_R8T-EjpzFdrmnD5-15F4fnUrfxl55HETBlnHhbgZCsbgdUDsbqpMZzEh45_jg&_nc_ohc=vMMNEdx5SWwQ7kNvwHn77wT&_nc_gid=xNsUHRAVBky-zPXD2A8c5A&edm=APfQFzwBAAAA&ccb=7-5&oh=00_Af8OFp4OyKc6P_hvsnn5g5SRqiZC36ONfK7RFdmFzZfFVQ&oe=6A26EF00&_nc_sid=b31082) ![](https://scontent-ssn1-1.cdninstagram.com/v/t51.82787-19/670653837_17940905400192230_1268261388831887287_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-ssn1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2gGJUCkiY0CDJjdxzbyuVjj9HDrLMOpYaQXF4aXv5vF7g7dfPP_Ido8b3hbhiNC-2v0&_nc_ohc=hPD2aSbnvzYQ7kNvwHD-Bt_&_nc_gid=lD2SpGoB3v7HZDj3qEVbkw&edm=AHedtMEBAAAA&ccb=7-5&oh=00_Af_W7crvDL26tZsgp8pYUZu7TWvDRhzgOOEekDmnb-mXSA&oe=6A26E446&_nc_sid=a3cc6e) ![](https://scontent-ssn1-1.cdninstagram.com/v/t51.82787-15/715731033_17943093174206458_7214308229276447397_n.jpg?stp=c15.0.1148.1148a_cp6_dst-jpg_e35_s1080x1080_tt6&_nc_cat=110&ig_cache_key=MzkxMTg3OTc0MjgwNzMwNzQ3OQ%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkZFRUQueHBpZHMuMTE3OS5zZHIucmVndWxhcl9waG90by5DMyJ9&_nc_ohc=aIBw6DiGjxgQ7kNvwG3j7UF&_nc_oc=AdqEcsmF5cVGesQk796PD2ywTgU0IA89LOBN4hVfCpQxUCebheT7tGX4zlr9TD69iU8&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=scontent-ssn1-1.cdninstagram.com&_nc_gid=xNsUHRAVBky-zPXD2A8c5A&_nc_ss=7a22e&oh=00_Af8jcbkf8LDvJqt6FZAtjoXtH1YN-W0CW2eZMpqqCmljTg&oe=6A26F81C) [Original post](https://www.threads.com/@jkimmorgan/post/DZJ0CEiEze_) --- id: hHGzFmvR title: 124표 차이는 진짜 엄청 차이가 안난건데 아내분도 당선자도 다들 얼마나 안타까울까요. 그래도 격차가 큰건 아니라서 다음에 또 도전하심 되겠어요 url: https://memory.wiki/hHGzFmvR updated: 2026-06-04T04:03:32.759026+00:00 --- # 124표 차이는 진짜 엄청 차이가 안난건데 아내분도 당선자도 다들 얼마나 안타까울까요. 그래도 격차가 큰건 아니라서 다음에 또 도전하심 되겠어요 > **페이야** @lifeiya1315 · 2026-06-04 03:46 UTC · x 124표 차이는 진짜 엄청 차이가 안난건데 아내분도 당선자도 다들 얼마나 안타까울까요. 그래도 격차가 큰건 아니라서 다음에 또 도전하심 되겠어요. ㅎㅎ [Original post](https://x.com/lifeiya1315/status/2062380456251978195) --- id: yI5Kr4tM title: 이번 선거에서 가장 불쌍한 사람 url: https://memory.wiki/yI5Kr4tM updated: 2026-06-04T04:03:06.619365+00:00 --- # 이번 선거에서 가장 불쌍한 사람 > **혜민** @heemiiiin000 · 2026-06-04 00:10 UTC · x 이번 선거에서 가장 불쌍한 사람 - 당선 확정된줄알고 김칫국 드링킹 - 지지자들 모아놓고 축하 꽃다발 전달식에 당선멘트까지 함. - 그런데 자고 일어나니 124표차로 뒤집힘 설레발은 필패라는 교훈을 다시 되새김. 근데 아내분 기뻐서 너무 우시던데.. 한편으론 짠함. ![](https://pbs.twimg.com/media/HJ7auMDa4AAuDLy?format=jpg&name=900x900) [Original post](https://x.com/heemiiiin000/status/2062326195082113107) --- id: 7O4zws-0 title: 이 흐름을 직접 경험해보면서, 어떻게 사용자를 유료 결제까지 이끄는지를 분석해보세요. 온보딩에서 어떤 가치를 보여주는지, 페이월은 어느 시점에 url: https://memory.wiki/7O4zws-0 updated: 2026-06-04T04:01:14.090027+00:00 --- # 이 흐름을 직접 경험해보면서, 어떻게 사용자를 유료 결제까지 이끄는지를 분석해보세요. 온보딩에서 어떤 가치를 보여주는지, 페이월은 어느 시점에 > **dalgom.bami** @dalgom_bami · 2026-02-18 13:15 UTC · x 이 흐름을 직접 경험해보면서, 어떻게 사용자를 유료 결제까지 이끄는지를 분석해보세요. 온보딩에서 어떤 가치를 보여주는지, 페이월은 어느 시점에 등장하는지, 무료 체험 기간은 어떻게 설정되어 있는지를 유심히 살펴보는 것이 핵심입니다. 어떤 기능을 쓰기 위해 유료 구독을 유도하는지 체크하세 ![](https://pbs.twimg.com/media/HBcMye7bQAAYad-?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcP4pqbUAAuspn?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcQljCaUAA6OMb?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcRHO0a0AApD0U?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcRZlnaUAAMWYK?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcUf4iakAAi0qO?format=png&name=large) ![](https://pbs.twimg.com/media/HBcSMf9aYAAg28O?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcS2-FaQAAhBLC?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcTgHPbkAAkkmG?format=jpg&name=medium) [Original post](https://x.com/dalgom_bami/status/2024110602931847454) --- id: QAa8DfMG title: 이 흐름을 직접 경험해보면서, 어떻게 사용자를 유료 결제까지 이끄는지를 분석해보세요. 온보딩에서 어떤 가치를 보여주는지, 페이월은 어느 시점에 url: https://memory.wiki/QAa8DfMG updated: 2026-06-04T03:58:50.73563+00:00 --- # 이 흐름을 직접 경험해보면서, 어떻게 사용자를 유료 결제까지 이끄는지를 분석해보세요. 온보딩에서 어떤 가치를 보여주는지, 페이월은 어느 시점에 > **dalgom.bami** @dalgom_bami · 2026-02-18 13:15 UTC · x 이 흐름을 직접 경험해보면서, 어떻게 사용자를 유료 결제까지 이끄는지를 분석해보세요. 온보딩에서 어떤 가치를 보여주는지, 페이월은 어느 시점에 등장하는지, 무료 체험 기간은 어떻게 설정되어 있는지를 유심히 살펴보는 것이 핵심입니다. 어떤 기능을 쓰기 위해 유료 구독을 유도하는지 체크하세 ![](https://pbs.twimg.com/media/HBcMye7bQAAYad-?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcP4pqbUAAuspn?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcQljCaUAA6OMb?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcRHO0a0AApD0U?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcRZlnaUAAMWYK?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcUf4iakAAi0qO?format=png&name=large) ![](https://pbs.twimg.com/media/HBcSMf9aYAAg28O?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcS2-FaQAAhBLC?format=jpg&name=medium) ![](https://pbs.twimg.com/media/HBcTgHPbkAAkkmG?format=jpg&name=medium) [Original post](https://x.com/dalgom_bami/status/2024110602931847454) --- id: xH0i5alB title: Gaze Control — webcam-only multimodal macOS controller url: https://memory.wiki/xH0i5alB updated: 2026-06-02T17:31:57.749+00:00 --- # Gaze Control — webcam-only multimodal macOS controller ## Goal Build a Vision Pro–style controller for a **flat screen (regular Mac display)** driven by **eyes + head + fingers + gestures**, using **only the built-in webcam** — no extra hardware. ## Hard constraints - Webcam is the ONLY input sensor. No Tobii, no Leap Motion, no depth cam. - Target OS: macOS (Apple Silicon). - The end user (project owner) does not write code directly — explain changes plainly and keep the run/test loop simple. ## Core design principle (do not violate) **Do NOT build a floating gaze cursor.** Webcam gaze is only accurate to ~1–4 cm and jitters with natural eye saccades — this is a biological ceiling, not a software bug, so more ML will not fix it. Instead, copy how Vision Pro actually works: - Gaze selects/highlights the **UI element** you're looking at (focus), it does not paint pixels. - A **pinch** activates the focused element. - Use the macOS **Accessibility API (AXUIElement)** to read on-screen element frames so gaze can **snap focus to the nearest element**. This is the secret sauce that makes imprecise gaze usable. ## Modality roles - **Eyes (gaze):** coarse target — which region/element. - **Head pose:** fine precision adjustment (head is far more stable than gaze). - **Finger pinch (thumb+index):** primary click/select. - **Gestures:** swipe = scroll, two-finger = drag, dwell = hover-to-click alternative, etc. ## Stack decision - **Now (validation):** Python prototype — MediaPipe (FaceMesh + Hands) + OpenCV + pyautogui/pynput. Purpose is to nail the *interaction feel*, not to ship. Throwaway-friendly. - **Later (product):** native Swift app — Vision framework (hand pose, face landmarks) + AVFoundation + CGEvent/AXUIElement + a transparent always-on-top overlay window. Only after the feel is proven. ## Current state - `gaze_pinch_v0.py` — RAW prototype: iris-ratio gaze → cursor, 9-point quadratic calibration, One Euro smoothing, thumb-index pinch → click (hysteresis + cooldown). No element snapping yet (intentionally raw, to feel the baseline jitter). ## Roadmap - v1a: Accessibility-API element snapping + focus highlight overlay (biggest felt improvement). - v1b: head-pose fine-adjust channel (gaze warp → small head move for pixel precision). - v1c: gesture vocabulary (scroll/drag/back) + dwell-click option. - v1d: transparent SwiftUI/AppKit overlay for visual feedback. - v2: port the proven interaction to a native Swift app. ## Run ``` source .venv/bin/activate python gaze_pinch_v0.py ``` macOS permissions required (System Settings > Privacy & Security): **Camera** and **Accessibility** for the terminal/app running python — without Accessibility the cursor will not move. ## Testing note Claude Code cannot see the webcam feed or feel the cursor. Testing is human-in-the-loop: the owner runs it, reports what feels wrong (drift direction, click misfires, calibration mismatch), and we adjust the tuning knobs at the top of the script accordingly. --- id: 1_r5VqyU title: ----------------------------- tuning knobs -------------------------------- url: https://memory.wiki/1_r5VqyU updated: 2026-06-02T17:31:57.749+00:00 --- """ gaze_pinch_v0.py — Vision-Pro-style webcam controller, v0 (raw feel test) What it does: - Tracks your iris (gaze) from the built-in webcam -> moves the macOS cursor. - Detects a thumb+index PINCH -> left click. - 9-point calibration maps your raw gaze ratios to screen coordinates. This is a DELIBERATELY RAW prototype. The gaze cursor WILL jitter — that is the point. Feeling that jitter is what motivates the v1 "snap-to-UI-element" design. Requirements (run once): pip install mediapipe opencv-python pyautogui numpy macOS permissions (System Settings > Privacy & Security): - Camera: allow Terminal (or whatever runs python) - Accessibility: allow Terminal <-- REQUIRED or the cursor won't move Run: python gaze_pinch_v0.py Keys: During calibration: look at the dot, press SPACE to capture (9 times) During run: 'q' or ESC to quit, 'c' to recalibrate """ import time import math import numpy as np import cv2 import mediapipe as mp import pyautogui # ----------------------------- tuning knobs -------------------------------- PINCH_ON = 0.45 # pinch detected when (thumb-index dist / hand size) < this PINCH_OFF = 0.60 # release threshold (hysteresis to avoid flicker) CLICK_COOLDOWN = 0.40 # seconds between clicks CALIB_SAMPLES = 12 # gaze samples averaged per calibration point EURO_MIN_CUTOFF = 0.8 # lower = smoother but laggier EURO_BETA = 0.012 # higher = more responsive to fast movement CAM_INDEX = 0 # --------------------------------------------------------------------------- pyautogui.FAILSAFE = False pyautogui.PAUSE = 0.0 SCREEN_W, SCREEN_H = pyautogui.size() # MediaPipe FaceMesh iris landmark indices (refine_landmarks=True) L_IRIS, R_IRIS = 468, 473 L_EYE_OUT, L_EYE_IN = 33, 133 R_EYE_IN, R_EYE_OUT = 362, 263 L_LID_TOP, L_LID_BOT = 159, 145 R_LID_TOP, R_LID_BOT = 386, 374 # Hand landmark indices WRIST, THUMB_TIP, INDEX_TIP, INDEX_MCP = 0, 4, 8, 5 # --------------------------- One Euro filter ------------------------------- class OneEuro: def __init__(self, min_cutoff=1.0, beta=0.0, d_cutoff=1.0): self.min_cutoff, self.beta, self.d_cutoff = min_cutoff, beta, d_cutoff self.x_prev = None self.dx_prev = 0.0 self.t_prev = None @staticmethod def _alpha(cutoff, dt): tau = 1.0 / (2 * math.pi * cutoff) return 1.0 / (1.0 + tau / dt) def __call__(self, x, t): if self.x_prev is None: self.x_prev, self.t_prev = x, t return x dt = max(1e-3, t - self.t_prev) dx = (x - self.x_prev) / dt a_d = self._alpha(self.d_cutoff, dt) dx_hat = a_d * dx + (1 - a_d) * self.dx_prev cutoff = self.min_cutoff + self.beta * abs(dx_hat) a = self._alpha(cutoff, dt) x_hat = a * x + (1 - a) * self.x_prev self.x_prev, self.dx_prev, self.t_prev = x_hat, dx_hat, t return x_hat def _ratio(val, lo, hi): if abs(hi - lo) < 1e-6: return 0.5 return float(np.clip((val - lo) / (hi - lo), 0.0, 1.0)) def gaze_ratio(lm): """Return (h, v) in roughly 0..1 from iris position within the eyes. Calibration absorbs the exact semantics; we just need stable features.""" def eye_h(iris, outer, inner): lo, hi = sorted([lm[outer].x, lm[inner].x]) return _ratio(lm[iris].x, lo, hi) def eye_v(iris, top, bot): lo, hi = sorted([lm[top].y, lm[bot].y]) return _ratio(lm[iris].y, lo, hi) h = (eye_h(L_IRIS, L_EYE_OUT, L_EYE_IN) + eye_h(R_IRIS, R_EYE_OUT, R_EYE_IN)) / 2 v = (eye_v(L_IRIS, L_LID_TOP, L_LID_BOT) + eye_v(R_IRIS, R_LID_TOP, R_LID_BOT)) / 2 return h, v def quad_features(h, v): return np.array([1.0, h, v, h * v, h * h, v * v], dtype=np.float64) def fit_map(samples, targets): """samples: list of (h, v). targets: list of (sx, sy). Least-squares quadratic.""" A = np.array([quad_features(h, v) for (h, v) in samples]) X = np.array([t[0] for t in targets]) Y = np.array([t[1] for t in targets]) cx, *_ = np.linalg.lstsq(A, X, rcond=None) cy, *_ = np.linalg.lstsq(A, Y, rcond=None) return cx, cy def apply_map(cx, cy, h, v): f = quad_features(h, v) return float(f @ cx), float(f @ cy) def pinch_strength(hand_lm): """Normalized thumb-index distance (smaller = pinching).""" def d(a, b): return math.hypot(hand_lm[a].x - hand_lm[b].x, hand_lm[a].y - hand_lm[b].y) hand_size = d(WRIST, INDEX_MCP) + 1e-6 return d(THUMB_TIP, INDEX_TIP) / hand_size # ------------------------------- main -------------------------------------- def main(): mp_face = mp.solutions.face_mesh mp_hands = mp.solutions.hands face = mp_face.FaceMesh(refine_landmarks=True, max_num_faces=1, min_detection_confidence=0.6, min_tracking_confidence=0.6) hands = mp_hands.Hands(max_num_hands=1, min_detection_confidence=0.6, min_tracking_confidence=0.6) cap = cv2.VideoCapture(CAM_INDEX) if not cap.isOpened(): raise SystemExit("Cannot open webcam. Check camera permission / CAM_INDEX.") # ---------- calibration ---------- pts = [(0.1, 0.1), (0.5, 0.1), (0.9, 0.1), (0.1, 0.5), (0.5, 0.5), (0.9, 0.5), (0.1, 0.9), (0.5, 0.9), (0.9, 0.9)] win = "calibration" cv2.namedWindow(win, cv2.WND_PROP_FULLSCREEN) cv2.setWindowProperty(win, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) samples, targets = [], [] for (px, py) in pts: tx, ty = int(px * SCREEN_W), int(py * SCREEN_H) captured = None while captured is None: ok, frame = cap.read() if not ok: continue frame = cv2.flip(frame, 1) rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) res = face.process(rgb) canvas = np.zeros((SCREEN_H, SCREEN_W, 3), dtype=np.uint8) cv2.circle(canvas, (tx, ty), 18, (0, 0, 255), -1) cv2.circle(canvas, (tx, ty), 6, (255, 255, 255), -1) cv2.putText(canvas, "Look at the dot, press SPACE", (60, 60), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (200, 200, 200), 2) cv2.imshow(win, canvas) key = cv2.waitKey(1) & 0xFF if key == 27: cap.release(); cv2.destroyAllWindows(); return if key == 32 and res.multi_face_landmarks: lm = res.multi_face_landmarks[0].landmark acc = np.zeros(2) for _ in range(CALIB_SAMPLES): ok2, f2 = cap.read() if not ok2: continue f2 = cv2.flip(f2, 1) r2 = face.process(cv2.cvtColor(f2, cv2.COLOR_BGR2RGB)) if r2.multi_face_landmarks: acc += np.array(gaze_ratio(r2.multi_face_landmarks[0].landmark)) captured = (acc / CALIB_SAMPLES).tolist() samples.append(tuple(captured)); targets.append((tx, ty)) cx, cy = fit_map(samples, targets) cv2.destroyWindow(win) # ---------- run loop ---------- fx, fy = OneEuro(EURO_MIN_CUTOFF, EURO_BETA), OneEuro(EURO_MIN_CUTOFF, EURO_BETA) pinching = False last_click = 0.0 print("Running. 'q'/ESC to quit, 'c' to recalibrate.") while True: ok, frame = cap.read() if not ok: continue frame = cv2.flip(frame, 1) rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) fres = face.process(rgb) hres = hands.process(rgb) t = time.time() # gaze -> cursor if fres.multi_face_landmarks: h, v = gaze_ratio(fres.multi_face_landmarks[0].landmark) sx, sy = apply_map(cx, cy, h, v) sx = fx(sx, t); sy = fy(sy, t) sx = int(np.clip(sx, 0, SCREEN_W - 1)) sy = int(np.clip(sy, 0, SCREEN_H - 1)) pyautogui.moveTo(sx, sy) # pinch -> click (edge-triggered with hysteresis + cooldown) if hres.multi_hand_landmarks: s = pinch_strength(hres.multi_hand_landmarks[0].landmark) if not pinching and s < PINCH_ON: pinching = True if t - last_click > CLICK_COOLDOWN: pyautogui.click() last_click = t elif pinching and s > PINCH_OFF: pinching = False cv2.putText(frame, f"pinch {s:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0) if pinching else (200, 200, 200), 2) cv2.imshow("preview (q to quit)", frame) key = cv2.waitKey(1) & 0xFF if key in (ord('q'), 27): break if key == ord('c'): cap.release(); cv2.destroyAllWindows() return main() # quick & dirty recalibrate cap.release() cv2.destroyAllWindows() if __name__ == "__main__": main() --- id: 47ieubnq title: Memory.Wiki Android — iOS Parity Sprint (2026-05-30) url: https://memory.wiki/47ieubnq updated: 2026-05-30T14:43:09.863183+00:00 --- # Memory.Wiki Android — iOS Parity Sprint (2026-05-30) Single-day execution log: bring the Android-native companion app up to **full iOS feature + visual parity**, then push the platform-native surfaces (share intent, widget, app shortcuts) that Android does *better* than iOS. Total: **25 commits**, ~5,000 lines of polish + features, every surface verified on emulator-5554. --- ## Phase 0 — The mess The founder's words verbatim: > 로그인 부터 모든 화면과 콤포넌트들이 ios에 비해서 너무나 완성도도 떨어지고 브랜딩 엘레멘트들도 반영도 안되고 아주 엉망진창임 Translation: every screen and component was visibly worse than iOS. Branding elements absent. A mess. The Android scaffold existed (74 files, build pipeline working, demo signin working), but the visual + interaction parity wasn't there. Starting state: - 5-tab bar with subtle borderless icons, no labels, static blob - Auth using Lucide.Apple **fruit emoji** for Sign in with Apple (HIG violation) - Tab center "Start" tap was dead (WebView swallowed touches) - MDs / Bundles / Start / etc. used basic Material chips and dot indicators - No long-press menus, no pin/star, no edit/delete, no share, no semantic search - No animated blob, no ambient backdrop, no skeletons-with-shimmer ## Phase 1 — Primitives + visual parity Shipped the shared visual atoms iOS uses everywhere, then rebuilt every screen on top. ### Primitives - `AmbientBlob` — full-bleed faint morph blob at 4.5% alpha + 12dp blur behind empty states - `DocStatusIcon` — globe/users/cloud per privacy, with sync-badge composite (ink ring + microInfo circle + white check) when synced - `BundleLayersIcon` — Lucide Layers tinted by visibility (lime public / info-blue shared / faint private) - `RefreshingPip` — inline 10dp ProgressView + mono 8 'REFRESHING' caption - `SkeletonRow`/`SkeletonList`/`SkeletonStatStrip` — shimmering placeholders - `BrandBlob` — animated SMIL morph SVG hosted in a transparent WebView (only renderer on Android that plays the 10.867s morph cycle). iOS does the exact same thing - `MarkdownPillBar` — 48dp Notes-style accessory bar above the keyboard with cursor-aware H/B/I/list/ordered/task/code/link/quote/hr inserts via TextFieldValue selection manipulation - `util/TimeFormat.kt` — central `compactTime()` so every list row formats dates identically ('now' / 'Xm' / 'Xh' / EEE / MMM d) ### Surfaces (16 commits) Every screen got rewritten or polished to iOS parity: | Surface | What landed | | --------------- | ----------- | | **Splash** | 196dp animated blob + wordmark + tagline, staggered fade-in (spring 0.95/0.78, easeOut delay 160ms/280ms) | | **Auth** | BrandBackdrop (huge ambient blob @ 7%), stacked hero (168dp blob → wordmark display 36 → tagline → 'ANDROID COMPANION' chip), glass ProviderButton (52dp, 12dp corner, gradient stroke, press scale 0.985 + dim), staggered entrance per iOS timing (0/180/280/380/450/700ms). **Real Apple Inc. logo** SVG, not a fruit | | **Onboarding** | 3-card HorizontalPager (Capture / Feed your AI / Always within reach), capsule page dots, Skip + Next/Start CTA, ambient blob backdrop, `mw.onboarded` SharedPreferences flag | | **Tab bar** | Capsule with translucent SheetBg + hairline border, labels under non-center tabs (mono 9 uppercase), 14×1dp ink indicator under active tab, animated blob centerpiece (WebView touch-passthrough fix), ProfileTabAvatar on Settings, re-tap shake + nav stack pop | | **Start** | Greeting variants by time-of-day × day-of-year rotation, AI URL strip with Copy-for-AI sparkles→check 1.6s swap, Ask-your-hub CTA (microInfo border), pulse row as editorial hairline-bracketed 3-column strip (NOT card tiles), Quick actions, Recent (mixed docs+bundles), Starred section, Featured bundle card, per-block stagger entrance | | **Markdowns** | Header with search toggle button + RefreshingPip, filter pills (All/Private/Shared/Synced), time bucket grouping (Today/Yesterday/This week/This month/Earlier), DocumentRow with DocStatusIcon + meta line (privacy badge + sync source + view count) + compactTime + share icon, long-press DropdownMenu (Star/Copy URL/Copy AI/Share/Open), pull-to-refresh, AmbientBlob empty states per filter, Pinned section above buckets, 300ms-debounced semantic search with BY MEANING section | | **Bundles** | Same header/search/filter pattern as MDs but with Public filter + BundleLayersIcon rows | | **DocumentDetail** | display 26 title, URL strip with DocStatusIcon + Copy-for-AI pill, meta strip (clock/lock/sync/eye), MarkdownBody via Markwon, owner brand accent override, overflow menu (Edit/Star/Add to bundle/Chat/Copy AI/Copy URL/Share/Make public-private/Open/Delete), edit mode with TextField, delete confirmation dialog, TOC sheet when ≥1 heading | | **BundleDetail**| Layers glyph + display 26 title + description, Deploy card (DEPLOY THIS BUNDLE TO ANY AI header + explainer + inner URL pill with Copy-for-AI swap), Members section with MemberRow per doc + chevron, ellipsis menu | | **Capture** | 6 mode pills (Write/URL/Photo/OCR/Voice/Files), title field display 28, body field with markdown pill toolbar above keyboard, Publish button in top bar | | **Chat** | 2-line header (mono 9 SCOPE label + display 20 title) + 30dp glass xmark close, 'Try' empty hint with 3 sparkle prompts, Capsule user bubble, ASSISTANT caption above markdown assistant bubble, citation chips (resolve titles via DocCache), ThinkingIndicator, error row, composer with top hairline + Surface capsule input + animated keyboard-dismiss + 42dp ink Send circle. Tab bar hidden on chat | | **Settings** | Hub URL card with Copy for AI / Copy URL / Open hub, Hub stats card (MEMORIES + BUNDLES tiles with public/private breakdown), Account section (Email/Username/Display Name editor sheet), Key color picker, LANGUAGE (opens system locale picker), LEARN (About + How it works + Replay welcome tour), FEEDBACK (Send feedback → mailto with device template), LEGAL, Version footer, Sign out | | **About** | display 30 wordmark + tagline + 2 mono Tag pills + WHAT'S NEW bulleted card + ON THE WEB / ACROSS PLATFORMS / LEGAL link groups + credits | ## Phase 2 — Platform-native affordances Things Android does that iOS doesn't (or does differently). Shipped them to make Memory.Wiki feel native on Android, not a port. | Affordance | Shipped | | ---------- | ------- | | **Share intent** | ShareReceiverActivity routes `text/plain` from the system share sheet into Capture (pre-filled body + title) instead of silent-POSTing. `image/*` encodes WebP, uploads, and creates a doc referencing the upload URL | | **App Shortcuts** | Long-press the launcher icon → 4 shortcuts (Capture / Ask / Search / Paste) via `res/xml/shortcuts.xml`. Each fires a `memorywiki://` deep link straight into MainActivity. Verified via `adb shell dumpsys shortcut` | | **Glance widget** | Home-screen widget with brand wordmark + ink 'New capture' primary action + Ask/Search/Paste quiet pills. XML preview layout for the widget picker so users see the chrome before adding it | | **Foreground refresh** | RootShell installs a LifecycleEventObserver on ON_RESUME that emits `RouterEvent.ForegroundRefresh`. MDs/Bundles/Start consume it and re-pull so a user backgrounding the app + creating a doc on the web + coming back sees fresh state | | **PinnedStore** | Central pin/star state singleton with optimistic local toggle + server reconciliation. Wired into MDs row + Bundles row + Start 'Starred' section + DocumentDetail menu | ## Phase 3 — Workflow actions Things the user can actually *do* with their data: - **Pin/unpin** (PinnedStore) — Star/Unstar in long-press menus on MDs + Bundles + DocumentDetail. Star icon next to title when pinned. STARRED bucket above time buckets in MDs - **Edit document** — inline TextField mode with mono 13 body + EDITING (MARKDOWN) caption, Save/Cancel toolbar swap, optimistic refresh - **Change visibility** — Make public / Make private toggles `is_draft` via PATCH action=publish - **Delete document** — AlertDialog ('It moves to Trash on memory.wiki — recoverable for 30 days.') with destructive red Delete button - **Add to bundle** — Bottom sheet with Create new bundle (inline TextField) + existing bundles list. Adding shows microLime checkmark for 700ms then dismisses - **Table of contents** — Sheet that extracts ATX headings from doc body and displays them indented by level, tap to dismiss - **Semantic search** — 300ms-debounced backend search runs alongside title-match. ProgressView spinner in search bar while loading. BY MEANING section beneath title-match results - **Publish from Capture** — Top-bar Publish button creates the doc via POST /api/docs and routes the user to the new doc's reader - **Replay welcome tour** — Settings row clears the SharedPreferences flag so onboarding plays again on next launch ## Architecture notes - **Compose 1.7 + Material 3** dark-only, no Material You dynamic color - **Hilt 2.57.2 + KSP 2.2.10-2.0.2** for DI - **Ktor 3.0.2** for HTTP + streaming chat (`readUTF8Line` line-by-line) - **Supabase-kt 3.0.2** with a JWT-decode workaround for service-role demo sessions (the standard `auth.user` returns null for those because `/auth/v1/user` returns 401) - **Markwon 4.6** for the markdown reader - **Glance 1.1.1** for the home-screen widget - **Coil 3 + coil-svg** for provider logos + static brand assets - **Lucide compose** (`com.composables:icons-lucide`) wildcard-imported across all 17 screens for parity with `lucide-react` on web + SF Symbols on iOS ## The single-line summary > The Android app no longer feels like a port. It feels like the same product, with Android's affordances exposed natively. --- ## What's next Smaller polish + features remaining: - In-app **HelpScreen** with DisclosureGroup-style expandable sections (Capture / Share / Widget / App Shortcuts / Deep links / Markdown / FAQ) - **Feedback template** in Settings → mailto pre-filled with `App: Memory.Wiki Android v · Device: · OS: · Locale: ` - (lower priority) Quick Settings tile, additional widget sizes, deep-link from web → app banner Everything above is shippable; the Android surface is launchable. --- *Built with Claude Opus 4.7 in a single 2026-05-30 working session. ~25 commits, all green, all visually verified on emulator-5554 with the demo account.* --- id: fD70bEXD title: Memory.Wiki iOS — Spec url: https://memory.wiki/fD70bEXD updated: 2026-05-27T18:25:21.545058+00:00 --- # Memory.Wiki iOS — Spec > **Status (2026-05-28)**: W9 scaffold + brand parity + Supabase auth + Apple/Google/GitHub/Email providers shipped. Real OAuth wire-up live (Supabase dashboard configured). Share Extension, Camera, Widget, Spotlight, background sync still queued for W9–W12. > **Repo path**: `apps/ios-native/`  ·  **Bundle ID**: `wiki.memory.MemoryWiki`  ·  **URL scheme**: `memorywiki://`  ·  **Deployment target**: iOS 17 --- # 1. North star iOS native companion to memory.wiki. The web is the canonical surface for the URL architecture (`/` doc, `/b/` bundle, `/@` profile); iOS gives the user a fast capture path from any other app on their phone and a polished reader for their own timeline. The product story stays the same: **one URL every AI can read.** The iOS app must read as a continuation of memory.wiki — same fonts, same colors, same micro-affordances. Not a "mobile version of a web app." A native surface that happens to share the brand exactly. --- # 2. Scope ## In (W9–W12) | Surface | Status | | --- | --- | | App shell (Timeline / Capture / Profile) | done 1adec1e5 | | Brand system (Cal Sans, JetBrains Mono, Noto Sans, dark zinc, lime micro-accent) | done | | Auth — Apple, Google, GitHub, Email via Supabase SDK | done 2386944e | | Animated brand blob (WKWebView, same SVG as web) | done 1adec1e5 | | Share Extension (any app → Memory.Wiki) | queued | | Camera + screenshot capture (OCR) | queued | | Widget (home + lock screen) | queued | | Spotlight indexing | queued | | Background sync | queued | | Push notifications | queued | ## Out (post-v8 / never) - Voice memo capture (low Korean cultural fit, scope creep) - Live Activities, Action Extension, custom keyboard (v8.1 at earliest) - Built-in chat with an AI (conflicts with cross-AI thesis) - Mac Catalyst (use the web) --- # 3. URL architecture (shared with web) The iOS app uses the existing API surface. No iOS-specific endpoints. | Memory.Wiki URL | iOS open behaviour | | --- | --- | | `https://memory.wiki/` | viewer (in-app) for own docs, ShareLink for outbound | | `https://memory.wiki/@` | the "use" surface — shown on Profile tab with **Copy for AI** | | `memorywiki://auth-callback` | OAuth redirect handled by `AuthManager.handleCallback` | | `memorywiki://...` (future) | Universal Link target after apple-app-site-association lands | --- # 4. Brand system (parity) | Token | Value | Notes | | --- | --- | --- | | `Brand.background` | `#09090B` (zinc-950) | App canvas. Forced via `UIUserInterfaceStyle: Dark`. | | `Brand.surface` | `#18181B` | Card / row fill. | | `Brand.borderDim` | `rgba(39,39,42,0.6)` | Hairline. | | `Brand.textPrimary` | `#FAFAFA` | Body + headings. | | `Brand.textFaint` | `#8A8A91` | Captions, mono labels. | | `Brand.accent` | `#B5FF1A` (lime) | **Micro-color only** — dots, badges. Never as button fill / chip fill / body text per the v8 color-balance rule. | | `Brand.display(size:)` | Cal Sans Regular | Display headings + the wordmark. | | `Brand.body(size:weight:)` | Noto Sans 400/500/600 | All prose. | | `Brand.mono(size:weight:)` | JetBrains Mono 400/500 | Captions, URLs, numeric data. | ### Logo `MemoryWikiLogo` ports `apps/web/src/components/MemoryWikiLogo.tsx`: - Inline lockup: mark left + `memory.wiki` (lowercase) wordmark right - Mark scales `size × 1.55` ≤30pt, `size × 1.25` >30pt - Mark = `AnimatedBlob`: bundled `mwblob_morph.svg` (web's morph SVG) inside a transparent `WKWebView` so the 10.867s breathing animation lives — asset catalog SVG renderer strips `` ### Rule list (locked from memory.wiki/SKaY7VJP) - No em-dash / middle-dot / emoji in UI strings - Quiet pickers: `--surface` lift + ink check, no colored fills - Selected state never uses lime border - "Sign in" buttons are ink, not lime (color-balance) --- # 5. Project layout ``` apps/ios-native/ ├── project.yml # XcodeGen spec, single source of truth ├── Config/ │ ├── Secrets.xcconfig.example # checked in │ └── Secrets.xcconfig # gitignored — Supabase URL + anon key ├── MemoryWiki/ │ ├── MemoryWikiApp.swift # @main, onOpenURL → AuthManager │ ├── BrandTheme.swift # color tokens + font helpers + QuietButtonStyle │ ├── MemoryWiki.entitlements # com.apple.developer.applesignin │ ├── Info.plist # xcodegen-rewritten; do not hand-edit │ ├── Assets.xcassets/ # brand SVGs (logo-full, icon-app, mwblob static fallback) + Providers/{google,github} │ ├── Fonts/ # CalSans, JetBrainsMono, NotoSans TTFs │ ├── Resources/ # mwblob_morph.svg (animated, WKWebView consumer) │ ├── Models/Document.swift │ ├── Networking/ │ │ ├── SupabaseConfig.swift # shared SupabaseClient from xcconfig │ │ ├── AuthManager.swift # @MainActor session + 4-provider sign-in │ │ └── APIClient.swift # REST wrappers around /api/user/documents + /api/docs │ └── Views/ │ ├── RootView.swift # custom TabBar (Timeline / Capture / Profile) │ ├── AuthView.swift # 4-provider sign-in with brand surfaces │ ├── EmailAuthSheet.swift # half-sheet, sign in / create-account toggle │ ├── TimelineView.swift # bordered card list of /api/user/documents │ ├── CaptureView.swift # fast textarea → POST /api/docs │ ├── ProfileView.swift # the use surface: hub URL + Copy for AI │ ├── MemoryWikiLogo.swift # canonical inline mark + wordmark │ └── AnimatedBlob.swift # WKWebView host for the morph SVG ├── scripts/ │ └── generate-apple-client-secret.sh # ES256 JWT generator (Apple sign-in secret) └── README.md ``` --- # 6. Auth model Supabase-iOS SDK is the canonical client. The SDK persists the session in the Keychain automatically; `AuthManager` is a thin `@MainActor` `ObservableObject` over it that publishes a `UserSession` value type for SwiftUI to drive UI off. | Provider | Flow | Notes | | --- | --- | --- | | Apple | `ASAuthorizationController` → `signInWithIdToken(.apple, idToken:nonce:)` | Required by App Store guideline 4.8 when offering social SSO. Nonce: random URL-safe string + SHA-256 sent in `request.nonce`. | | Google | `signInWithOAuth(.google)` → `ASWebAuthenticationSession` | Real multi-color G logo, not SF Symbol. | | GitHub | `signInWithOAuth(.github)` → `ASWebAuthenticationSession` | Real Octocat. | | Email | `signIn(email:password:)` / `signUp(...)` | Native form in `EmailAuthSheet`. | ### Apple client secret rotation Apple caps the client-secret JWT lifetime at ~6 months. `.p8` private key never expires; the JWT signed with it does. `scripts/generate-apple-client-secret.sh` shells out to `openssl` + `python3` to produce the ES256 JWT (Apple's spec — ASN.1 DER signature unpacked to raw R‖S): ```bash ./scripts/generate-apple-client-secret.sh \ --p8 ~/Downloads/AuthKey_XXXXXXXXXX.p8 \ --team-id XXXXXXXXXX \ --key-id XXXXXXXXXX \ --client-id wiki.memory.MemoryWiki.signinservice ``` Paste output into Supabase dashboard → Authentication → Providers → Apple → **Secret Key (for OAuth)**. Re-run 1 week before expiry. Current expiry: **2026-11-25**. ### Crash already fixed `ASWebAuthenticationPresentationContextProviding.presentationAnchor` is `nonisolated` per protocol; the early implementation called `DispatchQueue.main.sync` from the main thread inside that method, which is an instant deadlock. Replaced with `MainActor.assumeIsolated` (the correct pattern — ASKit guarantees the call is on main, we just need to read window state without dispatching). --- # 7. Networking `APIClient` is a hand-written `URLSession` wrapper around the existing web API. Identity headers (`Authorization: Bearer ` + `x-user-id` + `x-user-email`) are pulled from `AuthManager.shared.session` on every call so a sign-in elsewhere in the app picks up without recreating the client. Endpoints in use today: - `GET /api/user/documents` — Timeline list - `POST /api/docs` — Capture write (source: `ios`) Endpoints used implicitly via Supabase SDK: - `/auth/v1/*` — sign in / sign up / OAuth - `profiles` table SELECT for `hub_slug` lookup (RLS gated) The doc / bundle / `@username` URLs are NOT fetched as JSON — they're shared via `ShareLink` (URL out) or rendered inside an in-app browser later. Dual-response on the server side means any AI client paste-fetching them gets clean markdown automatically. --- # 8. Build & run ```bash # one-time setup brew install xcodegen # regenerate the project file (after editing project.yml or # adding / removing source files) cd apps/ios-native xcodegen generate # resolve SPM packages once xcodebuild -resolvePackageDependencies \ -project MemoryWiki.xcodeproj -scheme MemoryWiki # build for the simulator xcodebuild -project MemoryWiki.xcodeproj -scheme MemoryWiki \ -destination 'platform=iOS Simulator,name=iPhone 17' \ -configuration Debug -derivedDataPath build build # open in Xcode (recommended day-to-day) open MemoryWiki.xcodeproj ``` `Config/Secrets.xcconfig` must exist before the build will compile — copy `Config/Secrets.xcconfig.example` and fill in the values from `apps/web/.env.local`. --- # 9. Out-of-repo prerequisites Done (founder): - **Supabase**: project URL + anon key in `Config/Secrets.xcconfig`; `memorywiki://auth-callback` allow-listed in Auth → URL Configuration → Redirect URLs; Apple / Google / GitHub providers turned on - **Apple Developer**: App ID `wiki.memory.MemoryWiki` with Sign in with Apple capability; Service ID `wiki.memory.MemoryWiki.signinservice` bound to the Supabase callback; `.p8` key generated, stored in `~/Downloads/` (gitignored, not in repo); Supabase Apple-provider JWT generated (expires 2026-11-25) - **Xcode**: Team selected under Signing & Capabilities; Sign in with Apple capability added (writes the entitlement file the spec already commits) Pending: - **Web `/auth`**: accept `?provider=google|github|email` so iOS's `signInWithOAuth(provider:)` jumps straight into the provider's flow without bouncing through the chooser - **Apple Universal Links**: ship `apple-app-site-association` on `memory.wiki/.well-known/` once the team ID is finalised so `https://memory.wiki/` opens the iOS app on tap - **TestFlight**: first build push for on-device validation of the Apple flow (simulator can render the button but can't complete the iCloud sign-in) --- # 10. Current verification `xcodebuild -destination 'iOS Simulator' build` → **BUILD SUCCEEDED** Fresh-install launch via `xcrun simctl install / launch`: - Dark zinc canvas paints at first frame (no white flash) - Brand lockup renders with the morph blob actually breathing (verified by 3 sequential screenshots showing shape change) - 4 provider buttons render with real logos (Apple system button, multi-color Google G, Octocat, envelope) - Google button taps now open `ASWebAuthenticationSession` cleanly (previous nonisolated deadlock fixed) --- # 11. What's next Next 3 commits (in order): 1. **Web `/auth?provider=`** — accept the param + redirect into the requested provider directly. Unblocks Google / GitHub real round-trip. 2. **Share Extension target** — `ShareViewController` with App Group glue, posts the captured URL/text to a tiny on-device queue the main app drains on launch. Lets the user grab anything from anywhere → `memory.wiki/` in two taps. 3. **Widget (home screen, small)** — last 3 captures + a "+ Capture" button that deep-links into the Capture tab. After that: camera + OCR, Spotlight, background sync, push, then channel updates (Chrome / VSCode / Desktop / CLI / MCP) align with the iOS scope. --- # 12. Linked decisions - Founder pushback on iOS scaffold being "generic SwiftUI shell" → full brand rewrite (this spec) - Comments feature dropped on web → not in iOS scope either - Type 3 synthesis docs dropped → paste-anywhere via `ProfileView` covers the iOS use surface - `/hub/` → `/@` 301 on web → iOS Profile shows `/@` directly Plan parent: [memory.wiki/SKaY7VJP](https://memory.wiki/SKaY7VJP) --- id: lQss-7jJ title: Table Test 3 url: https://memory.wiki/lQss-7jJ updated: 2026-05-27T08:21:24.672+00:00 --- # Table Test 3 | | | | | | --- | --- | --- | --- | | | | | | | | | | | - [ ] checkbox test - \[ \] --- id: FX0zO5zK title: Memory.Wiki launch drafts url: https://memory.wiki/FX0zO5zK updated: 2026-05-26T14:14:06.02+00:00 --- --- captured: 2026-05-25 status: drafts, awaiting founder review --- # Memory.Wiki launch drafts Three pieces of copy ready to publish externally once the founder approves the tone. None of them say "mdfy". All link to the public proof at [memory.wiki/mwbench](https://memory.wiki/mwbench). The core claim across all of them: **one URL works across Claude, OpenAI, and Gemini, verified on content the AIs have never seen during training.** Naming note: the bench project is called MWBench internally, but no one outside knows the name yet. In the drafts below the function is named up front ("cross-AI verification", "open cross-AI eval") and MWBench appears as the project label only when it is the thing being linked to. Lead with what it does, not the codename. --- ## A. Show HN draft ### Title (one line, 80 char limit) ``` Show HN: Memory.Wiki, one URL that works across Claude, ChatGPT, and Gemini ``` (Alternates if the above feels overcooked:) - `Show HN: I tested if a knowledge URL actually works across Claude, ChatGPT, and Gemini` - `Show HN: Memory.Wiki, your knowledge as a URL every AI can read` ### Body ``` Hi HN, Memory.Wiki is a personal knowledge hub that publishes every doc, every curated bundle of docs, and your whole hub as a single URL that any AI can fetch. No SDK, no plugin, no MCP server. Paste the URL into Claude, ChatGPT, or Gemini and the AI reads the underlying markdown as context. I built it because I kept losing answers I'd gotten out of one AI when I switched to another. Vendor memory layers (ChatGPT memory, Claude projects, Cursor docs) all live behind walls. None of them help when I want the architecture decision I made with Claude on Tuesday to be available to Cursor on Wednesday. The wedge claim is: "URL paste works across every AI." I wanted that to not be marketing. So I built an open cross-AI eval to measure it. The eval runs the same Q&A through three runners (claude-sonnet-4-6, gpt-5.5, gemini-3.5-flash) against the same hub URL, in two ways: - paste mode: the corpus is in the prompt directly - browse mode: only the URL plus a fetch_url tool, the AI fetches itself And against two hub flavours: - raymindai: my real public hub (may be in training data) - mwbench-zorblax: a fictional synthetic hub I seeded for the test, every fact made up (ZorblaxCorp, CipherPlate v3.4.1, Talia Renford), impossible to memorize Results, audited by a quote-evidence judge (every claim must produce a literal corpus quote): raymindai (familiar) mwbench-zorblax (unseen) paste full 100% 100% paste compact 100% 100% browse 98% 100% tool-use rate 100% 100% adversarial 100% (n/a in this run) The unseen-hub column is the one that matters. AIs can't recall a hub they never saw during training, so 100% there means the URL delivery model actually works, not memorisation. Methodology, harness, and the full nine-round bench log are public at https://memory.wiki/mwbench. Reproducible locally: git clone https://github.com/raymindai/memory-wiki cd memory-wiki/eval node run-bench.mjs --queries=queries/v1.jsonl Happy to answer questions about the harness, the corpus format (concept-clustered digest plus all-docs catalog plus per-doc gist plus H2 section skeleton), the quote-evidence judge, or where the wedge breaks. The compact-mode payload is 5 to 9 times cheaper in input tokens than the full body dump, and it still hits 100% on unseen content. Live demo: https://memory.wiki/hub/raymindai Synthetic unseen hub: https://memory.wiki/hub/mwbench-zorblax Eval writeup: https://memory.wiki/mwbench Repo: https://github.com/raymindai/memory-wiki ``` ### Anticipated HN questions and prepared replies - **"Isn't this just publishing markdown to a URL?**"Yes, that's the substrate. The product is the structure on top: hub digest, bundle AI graph, per-doc Facts blocks, knowledge graph, all designed so an AI fetching the URL gets navigation, not a wall of text. The eval is what makes the claim auditable. - **"How is this different from mem0 / Letta?**"mem0 and Letta are backend memory stores for AI agents (MCP server, SDK, auto-extraction from conversations). Memory.Wiki is the inverse: human-curated markdown at a public URL that any AI can fetch. Different problem. They optimise single-AI recall; this eval measures cross-AI delivery. - **"Doesn't 'cross-AI' just mean 'works because the AI can read URLs'?**"Right, but it has to actually work. The corpus format has to be navigable by the AI without a custom prompt, the URL has to survive without an SDK, and the answer quality has to hold up against memorisation-free content. The eval measures all three. - **"Why is raymindai familiar?**"raymindai is the founder's public hub, online for months. AI crawlers may have indexed it. mwbench-zorblax is the honest measurement because nothing in it could be memorised. - **"What's the business model?**"Free during beta. Pro tier after with custom domain, password protection, badge removal on shared docs. Document expiry is never a tier feature. --- ## B. Twitter / X thread Each tweet capped at 280 chars. Numbered for thread order. ``` 1/ Spent a month proving the cross-AI wedge actually works. Memory.Wiki publishes your knowledge as a URL that any AI can fetch. Same URL, Claude / ChatGPT / Gemini all read it. No SDK, no plugin. Today I'm publishing the open cross-AI eval that measures it. 2/ The honest test: I built a synthetic hub (ZorblaxCorp, CipherPlate v3.4.1, Talia Renford), every fact fictional, never in any AI training data. Then I asked Claude / OpenAI / Gemini ten questions about it through the URL. 3/ Result: paste full 100% / 100% paste compact 100% / 100% browse 98% / 100% tool-use rate 100% / 100% Left column is my real hub (raymindai). Right is the synthetic unseen one. They match. 4/ The unseen column is the one that matters. AI can't recall a hub it never saw during training. So 100% there means the URL delivery model genuinely works, not "memorised the answer." 100% across three vendors, on truly novel content. 5/ How the judge stays honest: Every claim in every AI answer has to produce a literal corpus quote. "Sounds like hallucination" guesswork is disabled. Quote, or the claim doesn't count. 6/ Compact mode is 5 to 9 times cheaper in input tokens than full body dump, and still hits 100% on unseen content. The corpus format: concept digest plus all-docs catalog plus per-doc gist plus H2 skeleton. Designed so an AI fetching the URL gets navigation, not a wall of text. 7/ Memory.Wiki is not a memory store. mem0, Letta, and OpenAI Memory are backend stores for agents to recall. Memory.Wiki is the URL delivery layer. Your knowledge, in markdown, at a URL any AI can read. Different problem, different lane. 8/ Full methodology, nine rounds of bench history, and the reproducible harness: https://memory.wiki/mwbench The eval is open. Run it against any hub. The numbers will be the numbers. 9/ Live demo hub: https://memory.wiki/hub/raymindai Synthetic unseen hub: https://memory.wiki/hub/mwbench-zorblax Repo: https://github.com/raymindai/memory-wiki Free during beta. Capture from any AI, paste your hub URL anywhere. 10/ If you got useful answers out of an AI today and want them tomorrow, the URL is the answer. The same URL, every AI. Try it: paste your own hub URL into Claude or ChatGPT after capturing a few docs. (end) ``` --- ## C. Short copy variants ### Three-line summary (slack, email, OG description) ``` Memory.Wiki is the URL delivery layer for your AI knowledge. One URL, every AI: Claude / ChatGPT / Gemini all read it, 100% accuracy on truly unseen content. Open cross-AI eval at memory.wiki/mwbench. ``` ### One-liner ``` Memory.Wiki: your knowledge at a URL every AI can read. Cross-AI verified, 100% on unseen content. ``` ### LinkedIn post (longer, B2B framing) ``` After a month of testing, I'm publishing an open cross-AI eval that measures whether a single URL paste actually works across Claude, ChatGPT, and Gemini. The wedge claim for Memory.Wiki is: one URL, every AI. Vendor memory (ChatGPT memory, Claude projects, Cursor docs) all stays inside one tool. Memory.Wiki lives at a public URL you control, and every AI reads it the same way. To make that claim auditable, I built a synthetic hub of fictional content (ZorblaxCorp, CipherPlate, Talia Renford) that no AI could have memorized. Then ran the same ten questions through three runners. Result: 100% accuracy across Claude, OpenAI, and Gemini, on content none of them have ever seen. The cross-AI URL delivery model genuinely works. Methodology and reproducible harness: https://memory.wiki/mwbench Live demo: https://memory.wiki Beta is free. The audit trail is open. If you ship knowledge into AI workflows and want it to survive vendor switching, this is the shape. ``` --- ## Publish checklist (founder action) - [ ] Read drafts above, edit voice to founder's preferred tone - [ ] Pick Show HN title from the three alternates - [x] Add screenshot to Show HN (live hub, results table, or the readiness UI) - [ ] Post Show HN at a US morning slot (8 to 11 AM ET ideal) - [x] Tweet thread same day, hold off two hours after HN to let the comment thread breathe - [ ] LinkedIn post for B2B and founder network later in the week - [ ] Pin the cross-AI eval tweet to profile until volume settles ## Facts - Three external launch drafts: Show HN post, 10-tweet thread, LinkedIn post - Core claim across all: one URL works across Claude, ChatGPT, and Gemini, 100% accuracy on unseen content - All drafts link to the public proof at memory.wiki/mwbench - None of the drafts use the legacy "mdfy" branding - Drafts lead with "open cross-AI eval" or "cross-AI verification" instead of the project codename, since MWBench is not yet a recognised name - Show HN draft includes prepared replies for the four most likely comment threads - Tweet thread is 10 numbered posts under the 280-char limit - Founder reviews and picks Show HN title from three alternates before publishing --- id: mdfy-three-primitives title: Document, Bundle, Hub url: https://memory.wiki/mdfy-three-primitives updated: 2026-05-24T17:46:53.307+00:00 --- # Document, Bundle, Hub Memory.Wiki uses one primitive (the URL) at three nested scopes. Every primitive is fetchable as clean markdown by any AI that can hit an HTTP endpoint. ## Document `memory.wiki/` A single captured artifact. A pasted ChatGPT share URL. A dropped PDF. A `/memory.wiki capture` from inside Claude Code. One markdown page, one permanent URL. - AI fetch: same URL with `Accept: text/markdown` header (or `/.md`) returns the markdown body with frontmatter. - Embeddable: every public doc carries a 1536-dim vector and per-heading chunk vectors. - Editable: the owner edits in WYSIWYG; non-owners see the rendered viewer. ## Bundle `memory.wiki/b/` A curated grouping of docs around a topic. *"AI Memory Stack"* might bundle [Mem0 Architecture Notes], [Letta vs Mem0], [OpenAI Memory: Behind the Walled Garden]. The bundle is itself a deployable URL. Pasted into any AI, it loads all member docs in order with a brief intro. - Bundle Spec v1.0 conformant: stable shape, parseable by future tools. - Per-doc annotation: each member can carry a "why this is in the bundle" note. - Discoverable: owners can opt their bundle into the public `/shared` feed. ## Hub `memory.wiki/hub/` Your whole knowledge layer as one URL. The hub page lists every public doc and bundle, grouped by recency and topic. Pasted into Claude / ChatGPT / Cursor, the AI fetches the markdown index and follows links to read individual docs as it needs them. - Public when you opt in (`hub_public = true` in settings). - Time-traveling: `/hub/?at=` shows the hub state at any past moment. - Graph view at `/hub//graph` renders the semantic and bundle-membership graph of your whole hub. - Recall API at `POST /api/hub//recall` runs question-targeted retrieval. ## Why same primitive at three scopes You don't need to learn three different surfaces. The viewer chrome is shared, the AI fetch path is shared, and the embed pipeline is shared. A bundle is "a hub of three docs." A hub is "a bundle of all your docs." The shape never changes; only the scope does. All three URL shapes are independently verified at 100% accuracy across Claude, OpenAI, and Gemini. See [MWBench](/mwbench) for the open cross-AI eval. --- id: mdfy-roadmap-2026 title: Memory.Wiki roadmap url: https://memory.wiki/mdfy-roadmap-2026 updated: 2026-05-24T17:46:35.85+00:00 --- # Memory.Wiki roadmap A snapshot of what's shipping, what's queued, and what's deliberately not on the list. ## Live now (v6) - **URL primitive at three scopes**: Document, Bundle, Hub, all fetchable as markdown. - **Capture from anywhere**: paste, file drop, ChatGPT/Claude/Gemini share URLs, `/memory.wiki` in Claude Code / Cursor / Codex / Aider, Chrome extension, MCP server. - **Memory.Wiki Memory pipeline**: doc, chunk, bundle embeddings (idempotent), public Recall API with vector and hybrid BM25 plus RRF, hub semantic graph, cross-hub citation rollup. - **Auto-synthesis** with diff-and-accept UI, confidence tags, hub log, hub lint. - **Time-traveling hub**: `/hub/?at=` shows past state. - **Shared bundles** with discoverable opt-in. - **Permission-aware AI fetching**: restricted resources return structured markdown errors, not 404 walls. - **MWBench cross-AI verification**: 100% accuracy across Claude, OpenAI, and Gemini, including on truly unseen content. See [/mwbench](/mwbench). ## Queued - **Bundle metadata auto-re-embed** on PATCH (currently manual). - **Cross-encoder reranker** on top of RRF for higher chunk precision (when hub sizes warrant the extra 50 to 100 ms latency). - **Public flip** from `/` (editor) to two-door landing. Held for end of August 2026. - **Stripe Pro**. Beta is free; pricing decided after launch metrics. ## Considered but deliberately deferred - **Multi-vector / late interaction (ColBERT-style)** retrieval. Overkill until hubs reach thousands of docs. - **Mobile native app**. Web works on mobile; native is a distraction at this stage. - **Workspace / team accounts**. Current sharing primitives (allowed_emails per doc and bundle) cover most multi-user needs without team complexity. ## Not in scope - Becoming an LLM provider, or a chat UI, or a vector DB SaaS. Memory.Wiki publishes; it doesn't host inference or own the storage layer. - Building a vendor-locked integration. Every Memory.Wiki URL is meant to be readable by any AI; that contract trumps any one-vendor optimization. --- id: mdfy-faq title: Memory.Wiki FAQ url: https://memory.wiki/mdfy-faq updated: 2026-05-24T17:46:16.671+00:00 --- # Memory.Wiki FAQ ## How is Memory.Wiki different from Notion / Obsidian? Notion and Obsidian are great as personal knowledge bases for *humans*. Memory.Wiki is built so the *AI* can read it. The output is a public URL whose markdown is what every LLM already knows how to consume. No plugin, no SDK, no shared workspace. You can absolutely use Notion *and* Memory.Wiki. Many people do: Notion for active editing, Memory.Wiki for the "publish so any AI can read it" moment. ## Do I need an account? No. You can capture and share without signing up. Anonymous captures get a cookie that groups them, and you can sign in later to claim them all into your hub. ## How does Memory.Wiki compare to mem0 / OpenMemory / Letta? Those are backend memory layers for AI agents. They expose an API or MCP server, store atomic memories, and inject context automatically into one tool. Memory.Wiki is a publishing layer: human-shaped content at a public URL that any AI can read across tools. They solve different problems, and you can use both. See [How Memory.Wiki Memory works](/mw-memory) for the technical comparison and [MWBench](/mwbench) for the cross-AI verification. ## Does Memory.Wiki work without paying anything? Free during beta. After beta, a Pro tier is planned with no functional removals. Pro adds features (Pro hub layout, custom domain, analytics). Document expiry is **never** a tier feature; every URL is permanent regardless of plan. ## Can I edit my docs after publishing? Yes. If you're signed in, every doc you own is editable from the main editor at `memory.wiki/`. If you captured anonymously, you got an `editToken` (stored locally) that lets you edit without signing in. Sign in later and your docs migrate into your account. ## Can other people edit my docs? Per-doc share modes: - **Owner only** (default). - **Anyone with link** (read). - **Specific people** (read or edit, by email allow-list). - **Public** (anyone can edit, for collaborative wikis). ## What happens to my docs if Memory.Wiki goes away? The engine is open source on GitHub. The Bundle Spec is a stable contract. Worst case, you export everything as raw markdown and stand it up elsewhere. The URL is the contract, and markdown is portable. ## Is the AI memory thing actually useful? Honest answer: **only if you use multiple AI tools daily.** If you're a one-vendor user (only ChatGPT, only Claude), that vendor's built-in memory is probably enough. Memory.Wiki starts paying off once you regularly switch between Claude / ChatGPT / Cursor / Codex and want the answer from one tool to inform the next. ## Where does the name come from? Memory + Wiki. Your memory, as a wiki, at a URL. Pronounced however you like. --- id: mdfy-bundle-spec title: Bundle Spec v1.0 url: https://memory.wiki/mdfy-bundle-spec updated: 2026-05-24T17:45:56.86+00:00 --- # Bundle Spec v1.0 When an AI fetches a bundle URL with `Accept: text/markdown`, it gets a stable, parseable payload. This is what's in it. ## URL shapes - `memory.wiki/b/` for the human-rendered bundle viewer - `memory.wiki/b/.md` for the raw markdown payload - `memory.wiki/raw/bundle/` (same as `.md`) The `.md` and `/raw/bundle/` paths are aliases. AI bots (`ChatGPTBot`, `Claude-Web`, etc.) get the raw payload automatically when they hit `/b/` because the User-Agent triggers a rewrite. ## Frontmatter ```yaml --- mw_bundle: 1 id: title: "" url: https://memory.wiki/b/ document_count: updated: source: "Memory.Wiki" --- ``` `mw_bundle: 1` is the spec version marker. Future spec changes will bump it. ## Body shape ```markdown # > ## 1. *Source: https://memory.wiki/* > ## 2. *Source: https://memory.wiki/* ... ``` ## Privacy Member docs that became private after the bundle was created are filtered out at fetch time. The bundle structure stays intact (numbered sections), but unfetchable members are replaced with a neutral notice. Drafts, password-protected, expired, and email-restricted member docs never leak via the raw payload. ## Why this shape - **Numbered sections** so an AI knows the intended reading order. - **Per-doc `*Source: *`** so the AI can cite individual docs back to the user, not just "the bundle." - **Per-doc annotation** is the bundle creator's chance to bias retrieval. "This one is the canonical reference, the others are alternatives." ## Status v1.0 is the current shape. The next spec change (v1.1, planned) adds optional `reading_order_reason` and per-doc `relevance_score` fields. Existing bundles will continue to render with the v1 contract. ## Verification Bundle URLs are part of the [MWBench](/mwbench) cross-AI eval. Same URL works at 100% accuracy across Claude, OpenAI, and Gemini, including on truly unseen content. --- id: mdfy-skills-overview title: /memory.wiki in your AI tool url: https://memory.wiki/mdfy-skills-overview updated: 2026-05-24T17:45:38.767+00:00 --- # /memory.wiki in your AI tool The Memory.Wiki skill installer adds a small instruction set to your AI coding tool so capturing, bundling, and pulling your hub URL feels native. Same three actions across Claude Code, Cursor, Codex CLI, and Aider. ## Install (one line per tool) ### Claude Code ```bash curl -fsSL https://memory.wiki/skills/memory.wiki/install.sh | sh ``` Drops `SKILL.md` into `~/.claude/skills/memory.wiki/`. Restart Claude Code (or run `/reload-skills`). ### Cursor ```bash curl -fsSL https://memory.wiki/skills/memory.wiki/install.sh | sh -s -- --target=cursor ``` Drops `memory.wiki.mdc` into `~/.cursor/rules/`. Cursor picks it up on next launch. ### Codex CLI ```bash curl -fsSL https://memory.wiki/skills/memory.wiki/install.sh | sh -s -- --target=codex ``` Appends a `memory.wiki actions` block to `~/.codex/AGENTS.md`. **Idempotent**: rerunning replaces just the Memory.Wiki block, leaves the rest of your AGENTS.md alone. ### Aider ```bash curl -fsSL https://memory.wiki/skills/memory.wiki/install.sh | sh -s -- --target=aider ``` Drops `conventions.md` into `~/.aider/`. Add `read: ~/.aider/conventions.md` to your `.aider.conf.yml`. ## What it does, once installed The same three verbs in every tool: | Action | Trigger | Result | |---|---|---| | **Capture** | "save this to memory.wiki", `/memory.wiki capture ` | Current conversation segment becomes `memory.wiki/<id>`. URL pasted back into the chat. | | **Bundle** | "bundle my docs about X" | AI calls `/api/bundles/ai-generate`, surfaces suggested doc ids, you confirm, returns `memory.wiki/b/<id>`. | | **Hub** | "give me my hub URL" | AI calls `/api/user/profile`, returns `memory.wiki/hub/<you>` for paste-into-any-AI. | ## Why a skill rather than a plugin A skill is plain markdown that the AI reads as instructions. No binary, no API key required (signed-out users get an anonymous capture cookie that they can claim later by signing in). Same install path works for any future MCP-compatible coding tool. For the deeper why, see [How Memory.Wiki works](/how-memorywiki-works) and [MWBench](/mwbench) for the open cross-AI verification. --- id: mdfy-vs-vendor-memory title: Memory.Wiki vs vendor memory url: https://memory.wiki/mdfy-vs-vendor-memory updated: 2026-05-24T17:45:21.43+00:00 --- # Memory.Wiki vs vendor memory Every major AI tool now ships some kind of memory feature. They are not interchangeable with Memory.Wiki. They solve a different problem. ## What vendor memory is good at - **Stays inside the chat surface.** ChatGPT memory is invoked transparently inside ChatGPT. You don't paste anything; the model just "remembers." - **Auto-extracts atomic facts.** "User prefers tabs over spaces." "User is building an iOS app." Small, structured, automatic. - **Personalizes within one tool.** The longer you use ChatGPT, the more it learns *you* in ChatGPT. ## Where vendor memory falls over - **One vendor only.** ChatGPT memory doesn't work in Claude. Claude projects don't work in Cursor. The memory and the tool are coupled. - **Black box.** You can read what's been remembered, sometimes, but you can't easily edit, share, or export. The memory belongs to the vendor's product, not you. - **No publishing.** You can't paste a vendor memory into a colleague's chat. You can't make it part of a public knowledge piece. - **No cross-tool flow.** The architecture decision you reasoned through with Claude on Tuesday is invisible to Cursor on Wednesday. ## Where Memory.Wiki fits Memory.Wiki is the opposite shape on every axis: ``` Vendor memory Memory.Wiki Surface Inside one tool Public URL Authorship Auto-extracted Mostly human-curated Visibility Black box Human-readable markdown Cross-tool No Yes, any AI fetches the URL Sharing No Yes, paste, embed, share Ownership Vendor You ``` ## When to use which - Use **vendor memory** for personalization that should stay invisible inside a single tool. "Remember I prefer Tailwind." - Use **Memory.Wiki** for knowledge you want to *reuse across tools*, *share with humans*, or *deploy as context* into multiple AI sessions. "Here is everything I learned about Mem0; paste this into any AI before asking memory architecture questions." The two are complementary. Vendor memory handles preferences inside a single tool; Memory.Wiki handles substantive knowledge across tools. Cross-AI compatibility is independently verified. See [MWBench](/mwbench) for 100% accuracy across Claude, OpenAI, and Gemini on truly unseen hubs. --- id: mdfy-memory title: Memory.Wiki Memory url: https://memory.wiki/mdfy-memory updated: 2026-05-24T17:45:03.775+00:00 --- # Memory.Wiki Memory *Your AI memory, owned by you, readable by any AI you paste it to.* --- ## What "memory" means here Every chat with ChatGPT, Claude, or Cursor produces useful answers. Tomorrow they're gone. The chat is closed, the share link rots, the next session has no idea what you decided last time. Vendors have started building memory layers (ChatGPT memory, Claude projects, Cursor docs) but each one lives behind a vendor wall. They don't talk to each other, you can't share them, you can't read them outside the app, and you definitely can't paste them into the *other* AI tomorrow. Memory.Wiki Memory is the inverse: a memory layer that lives at a public URL you control. Every captured answer is a markdown page anyone (you, your teammate, any AI agent) can read, and the whole hub is one URL that any AI can fetch as context. The full architecture below is what makes that work (chunked indexing, hybrid retrieval, automatic refresh), but you only need to know the surface to use it. --- ## The surface (what you actually do) ### 1. Capture - Paste a ChatGPT or Claude share URL into the editor. - `/memory.wiki capture <title>` from inside Claude Code, Cursor, Codex CLI, or Aider. - Drop a PDF, DOCX, or transcript file. Each capture lands at `memory.wiki/<id>` as a permanent URL. No signup required. ### 2. Organize (or let Memory.Wiki do it) Captures roll up into your hub at `memory.wiki/hub/<you>`. Bundles group docs by topic. You can curate manually, or let auto-synthesis suggest groupings as the cluster forms. ### 3. Recall Two ways: - **Paste the hub URL** into any AI. They fetch the markdown index and load your knowledge as context. - **Hit the recall endpoint** for question-targeted retrieval. Much fewer tokens, much higher precision: ```bash curl -X POST https://memory.wiki/api/hub/<slug>/recall \ -H "Content-Type: application/json" \ -d '{ "question": "How does mem0 extract memories?", "k": 5, "level": "chunk", "hybrid": true }' ``` That's the whole product surface. The rest of this doc is what's underneath. --- ## How the memory layer works (architecture) Memory.Wiki Memory is built on the same shape Karpathy described in his [LLM Wiki gist](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f). Raw, wiki, schema, with the AI doing 80% of the curation work that he does by hand. ### Layer 1: embeddings everywhere, idempotent Every public doc carries a 1536-dimensional vector embedded with OpenAI `text-embedding-3-small`, indexed with HNSW for cosine similarity. Same for every bundle. Same, at a finer grain, for every chunk inside a doc. The refresh is **idempotent**. Each artifact carries a sha256 hash of its source. When you save a doc: 1. Frontend debounces 10 s after the last save. 2. Hits `POST /api/embed/<id>` (fire-and-forget). 3. The route hashes the current source. If the hash matches stored, it returns `{skipped: "unchanged"}` without ever calling OpenAI. Cost on a no-op save: zero. 4. If the hash differs, it embeds, writes the vector + new hash, continues. Same pattern at three levels: | Level | Source | Trigger | |---|---|---| | **Doc** | title + body | doc save (10s debounce) | | **Chunk** | each markdown heading subtree | runs alongside doc embed; only changed chunks re-embed; deleted sections pruned | | **Bundle** | title + description + member doc titles | `/api/embed/bundle/<id>` | Result: schema layer is always *fresh enough* to retrieve from, without ever paying full embed cost on an unchanged hub. ### Layer 2: chunks by markdown structure A doc isn't one vector. It's split on markdown headings (`#`, `##`, `###`); each chunk is the heading line plus everything until the next heading at equal-or-higher rank. Pre-heading prelude becomes chunk 0. Sections longer than ~1800 chars further split on blank-line boundaries with the heading re-emitted at the top of each piece. Each chunk carries a *breadcrumb*: ``` Memory.Wiki Memory > How the memory layer works > Layer 1: embeddings everywhere ``` When recall returns chunks, the breadcrumb tells the LLM (and the human reading the JSON) exactly *where* in the doc the snippet came from. ### Layer 3: recall as an HTTP endpoint The retrieval surface is a single public endpoint. No SDK, no API key, no MCP server. ``` POST memory.wiki/api/hub/<slug>/recall body: { "question": "...", "k": 5, "level": "doc" | "chunk" | "bundle", "hybrid": false } ``` Three retrieval granularities: | level | Returns | When | |---|---|---| | `doc` | Top-K whole docs | "Which docs are about X?" Lowest tokens. | | `chunk` | Paragraph-level chunks with breadcrumb | Default for AI agents. Actual answering paragraph, ~10x less waste. | | `bundle` | Top-K curated bundles | "Is there a reading order for this?" The bundle URL pulls full topic context. | **Hybrid (BM25 + vector RRF)**: when `hybrid: true` on `level: "chunk"`: 1. Vector cosine over chunk embeddings (top `k*4`). 2. Postgres FTS (BM25 via tsvector) over the same chunks (top `k*4`). 3. Reciprocal Rank Fusion: `score = sum( 1 / (60 + rank_in_list) )`. RRF merges *ranks*, not raw scores, so vector and BM25 (incompatible scales) combine cleanly with no normalization. Each result returns `vector_rank`, `fts_rank`, and `rrf_score` so callers can see why a chunk surfaced. In practice: query *"MCP server"* has weak semantic signal (an acronym to the embedding model) but strong lexical signal (the chunk that *literally mentions MCP* should win). Vector-only ranks a vague "Why now?" doc first. Hybrid promotes the chunk that says "Built the MCP server" to top-1. ### Layer 4: privacy filters live in SQL Every public retrieval RPC enforces the same four privacy gates *in SQL*, not in the API route: ```sql WHERE d.is_draft = FALSE AND d.deleted_at IS NULL AND d.password_hash IS NULL AND (d.allowed_emails IS NULL OR array_length(d.allowed_emails, 1) IS NULL) ``` Drafts, soft-deletes, password-protected, and email-restricted docs *cannot* leak through recall, even by accident, even if the API route has a bug. The schema is the boundary. --- ## Layer x Operation matrix | | Embed | Retrieve | Public? | |---|---|---|---| | **Doc** | auto on save (idempotent) | `/recall?level=doc` (vector) | yes | | **Chunk** | auto alongside doc embed (per-chunk hash) | `/recall?level=chunk` (vector) or `hybrid=true` (BM25 + vector RRF) | yes | | **Bundle** | `/api/embed/bundle/<id>` | `/recall?level=bundle` (vector) | yes | | **Hub graph** | precomputed semantic edges (cos < 0.42) between all docs | `/hub/<slug>/graph` (visual) | yes | | **Cross-refs** | extracted from markdown links across all public hubs | `/api/social/cross-refs` | yes | Five distinct retrieval surfaces, all reading from the same embedding tables, all behind the same SQL privacy gates. --- ## Why this is different from mem0 / OpenMemory ``` mem0 / OpenMemory Memory.Wiki Memory First user AI agent human (agent reads via URL) Interface MCP server / SDK HTTP endpoint Content shape atomic memories long-form docs + bundles Visibility black box human-readable markdown URL Sharing personal / team public URL, any AI can fetch Vendor lock-in MCP-compatible only any AI that can hit a URL ``` Memory.Wiki Memory isn't a backend store hidden behind an SDK. It's a public HTTP endpoint over content the user can read, edit, and paste. The retrieval pipeline below the surface is comparable to backend-only systems (chunked, hybrid, idempotent) but the *surface* stays human-shaped. --- ## What's deliberately not here (yet) - **Cross-encoder reranker** on top of RRF. Better, at +50 to 100 ms latency. Wait until users have hubs big enough that the gain matters. - **Per-bundle automatic re-embed on metadata edits.** Doc-level is wired through auto-save; bundle-level still needs a manual `/api/embed/bundle/<id>` after edits. Auto-trigger on bundle PATCH is the next sprint. - **Multi-vector / late interaction (ColBERT-style).** Useful at scale; overkill for hubs in the hundreds. --- ## Try it ```bash curl -X POST https://memory.wiki/api/hub/raymindai/recall \ -H "Content-Type: application/json" \ -d '{ "question": "How does mem0 extract memories?", "k": 5, "level": "chunk", "hybrid": true }' ``` The response carries `results[].markdown` (the actual chunk), `heading_path` (breadcrumb), `doc_url` (link back), `rrf_score`, `vector_rank`, `fts_rank` so you can see *why* each chunk surfaced. For the wider thesis (what Memory.Wiki is and how it sits next to vendor memory layers), see [How Memory.Wiki works](/how-memorywiki-works) and [MWBench](/mwbench) for the open cross-AI verification. --- *This page is itself a Memory.Wiki memory. Paste it into Claude or ChatGPT and they read the whole pipeline as context.* --- id: 3JhXI73T title: 조현상 / Hyunsang Cho url: https://memory.wiki/3JhXI73T updated: 2026-05-24T17:09:53.555+00:00 --- # 조현상 / Hyunsang Cho AI Product & Experience Executive hi@raymind.ai · raymind.ai · hyunsangcho.com --- 영국, 한국, 사우디아라비아에서 15년 넘게 제품과 디자인 조직을 이끌어 왔다. 대기업 AI 플랫폼, VR, 소비자 제품까지 팀을 만들고, 제품을 출시하고, 조직을 키웠다. 현재는 직접 만들어 출시하는 독립 스튜디오 Raymind.AI를 운영하고 있다. --- ## 현재 ### Raymind.AI · Founder 2025 – 현재 · 서울 / 런던 소비자 앱, 개발자 도구, AI 엔진을 자체 기획하고 개발해 출시하는 독립 프로덕트 스튜디오. memory.wiki, pastlife.app, jolong.ai, screenstyler.ai, ddalggak.ai 가 출시되어 운영 중이며, 추가 제품을 계속 만들고 있다. --- ## 경력 ### Humain · AI Product & Experience Lead 2025년 4월 – 2026년 4월 · 리야드, 사우디아라비아 사우디 국가 AI 프로젝트 Humain One의 제품과 경험 조직을 처음부터 만들었다. 플랫폼 비전, 운영 체계, 거버넌스를 직접 설계했다. - 대규모 AI 플랫폼 전체의 제품 비전과 로드맵 수립 - 프로그램 확장에 맞춰 작동하는 거버넌스와 리뷰 체계 설계 - 웨어러블, 음성, 앰비언트 AI 경험으로의 확장 주도 - 리서치, 디자인, 문서화에 AI 도구 도입 - 제품, 개발, 리더십 팀 간의 협업 방식 정의 ### Devsisters · Group Director 2021년 9월 – 2024년 8월 · 서울 쿠키런 IP로 공간 컴퓨팅 제품을 처음부터 끝까지 만들었다. 팀을 꾸리고, Meta와 파트너십을 맺고, Quest Store에 출시했다. - XR 경험이 없던 회사에서 VR 제품 팀 구축 - Meta와의 전략적 플랫폼 파트너십 체결, Quest Store 출시 - 프로덕트, 엔지니어링, 아트, 마케팅을 하나의 팀으로 통합 운영 - Meta 플랫폼 공식 프로모션 및 리테일 쇼케이스 선정 ### Kakao IX UK · Regional Director 2018년 10월 – 2021년 4월 · 런던 카카오의 첫 유럽 법인을 직접 세우고 이끌었다. 카카오톡과 카카오프렌즈의 유럽 진출을 총괄했다. - 런던 법인 처음부터 구축. 법인 설립, 팀 구성, 운영 체계 - 영국, 프랑스 등 주요 시장에서 라이선싱과 리테일 계약 체결 - IMG와 제휴해 IP의 글로벌 입지 확장 - Brand Licensing Europe 등 산업 행사에서 회사 대표 ### Saudi Aramco · UX Lead 2017년 4월 – 2018년 10월 · 다란, 사우디아라비아 세계 최대 IPO(2019)를 앞두고 아람코 전사 디지털 시스템의 UX 표준을 만들었다. 산업 교육용 VR도 만들었다. ### AKQA · Senior UX Architect 2015년 6월 – 2017년 2월 · 런던 Nike(NRC, NTC), Volvo(글로벌 웹), Barclays(모기지), Virgin Atlantic(예약)의 UX를 이끌었다. AI 추천과 개인화 시스템도 만들었다. ### Razorfish · Senior UX Architect 2013년 9월 – 2015년 6월 · 런던 금융과 소비재 글로벌 브랜드의 여러 시장에 걸친 디지털 프로젝트에서 UX를 이끌었다. --- ## 이전 경력 - Cheil UK · Senior Interaction Designer · 2012 – 2013 - Native Design · Senior Interaction Designer · 2012 - EY-Seren · Design Consultant · 2010 – 2012 - Vinyl · Interaction Designer · 2005 – 2006 - D'strict · Interaction Designer · 2004 – 2005 - NHN Corp. · Junior Designer · 2002 – 2004 --- ## 핵심 역량 **제품과 전략** AI 중심 제품 전략, 대규모 AI 플랫폼 개발, 0에서 1까지의 제품 인큐베이션 **경험과 디자인** 사람과 AI의 상호작용 설계, 공간 컴퓨팅과 웨어러블, 디자인 체계와 시스템 설계 **리더십과 확장** 부서를 넘나드는 경영 리더십, 국가 단위 디지털 전환, 해외 시장 개척 --- ## 학력 **Goldsmiths, University of London** MFA Computational Studio Arts · Pass with Merit · 2009 – 2011 **Central Saint Martins, UAL** BA Hons Graphic Design, Interaction Design · 1st Class Honours · 2007 – 2009 **홍익대학교** 시각디자인(수료) · 2001 – 2002 --- ## 언어 - 한국어 · 모국어 - 영어 · Full Professional Proficiency --- id: case-cross-tool-handoff title: Cursor for code, Claude for research, finally on the same page url: https://memory.wiki/case-cross-tool-handoff updated: 2026-05-24T15:25:17.696+00:00 --- # Cursor for code, Claude for research, finally on the same page *Two tools, one knowledge layer.* ## The pain I do real coding in Cursor. I do research and architecture thinking in Claude. They don't share memory. Every time I switch, I re-paste the same context: "here's the project, here's the constraint, here's what we decided last week..." Forty conversations in, I had four loose threads of work in two different chat histories with no way to cross-reference them. ## What I do now In Cursor, after we figure out a non-trivial decision: `save this to memory.wiki as "Auth provider tradeoffs"`. The skill captures the conversation segment as a permanent URL. In Claude Code the next morning: `fetch https://memory.wiki/hub/me and pick up the auth thread`. Claude reads the markdown index, follows the link to that exact doc, loads it as context. Same in reverse. Whatever I think through with Claude lands in Memory.Wiki and is available to Cursor. ## What changed - The handoff is **one capture command, one paste**. - I never re-explain the project to a fresh chat. - The decision history is searchable as one knowledge layer, not split across vendor walls. ## Time - Install `/memory.wiki` once: 30 seconds (`curl ... | sh`). - Per capture: under 5 seconds. - Per new conversation context-load: paste hub URL, about 3 seconds. ## What this case is *not* This isn't "let mem0 silently extract preferences in the background." It's deliberate, human-curated capture of the answers I actually want to keep, and a public URL anyone (or any AI) can read. ## Facts - Install `/memory.wiki` once takes 30 seconds via a single curl command - Per-capture overhead is under 5 seconds - Per-conversation context load is roughly 3 seconds (paste the hub URL) - Same hub URL works across Cursor, Claude Code, and any other AI tool - Verified across Claude, OpenAI, and Gemini at 100% accuracy via [MWBench](/mwbench) --- id: how-mdfy-rag-works title: How Memory.Wiki does RAG / Memory.Wiki Memory url: https://memory.wiki/how-mdfy-rag-works updated: 2026-05-24T15:25:00.161+00:00 --- # How Memory.Wiki does RAG / Memory.Wiki Memory This page has moved. The retrieval pipeline is now framed around the product (memory) rather than the technique (RAG): [How Memory.Wiki Memory works](/mw-memory) Same architecture, friendlier framing. The HTTP endpoint, the chunked plus hybrid retrieval, the idempotent embeddings, all the same. Just under a more honest name. --- id: case-personal-llm-wiki title: Karpathy's hand-curated LLM wiki, without the hand-curation url: https://memory.wiki/case-personal-llm-wiki updated: 2026-05-24T15:24:48.694+00:00 --- # Karpathy's hand-curated LLM wiki, without the hand-curation *The shape of a personal knowledge base for the AI era, with the AI doing 80% of the upkeep.* ## The pain [Andrej Karpathy described the problem](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f): keep a personal LLM wiki of the answers worth remembering. Three layers (raw transcripts, distilled wiki pages, structured schema) and three operations (ingest, query, lint). He maintains his by hand because no consumer surface offers the right shape. That works for Karpathy. For most people, the hand-curation tax is too high. So they don't do it, and the answers leak away. ## What Memory.Wiki does Same shape as Karpathy's. Different effort: | Layer | His way | Memory.Wiki way | | --- | --- | --- | | **Raw** | Manual transcript copy + folder organization | One-click capture from any AI tool, automatic permanent URL | | **Wiki** | Hand-write distilled pages | Auto-synthesis with diff/accept. New captures generate proposed wiki updates, you accept or skip | | **Schema** | Hand-tag entities + relationships | Embeddings + semantic graph + cross-ref rollup, all automatic | | **Ingest** | Manual | `/memory.wiki capture` from any coding agent + paste/file drop | | **Query** | grep + read | `/recall` API: vector + BM25 hybrid, paragraph-level chunks | | **Lint** | Periodic manual review | Hub lint runs automatically and surfaces gaps, conflicts, orphans | The architecture is the same. The maintenance burden drops by roughly 80%. You stay in the loop on what enters the wiki layer (the diff/accept UI is intentional friction); everything else is handled. ## What this case actually replaces If you're already running a personal Notion, Obsidian, or DEVONthink for AI outputs and feel the hand-curation tax, Memory.Wiki is the lower-effort version of the same thing. If you're not running anything because the tax was too high, Memory.Wiki is what makes it possible. ## See it in shape - Long-form architecture: [How Memory.Wiki works](/how-memorywiki-works) and [How Memory.Wiki Memory works](/mw-memory). - Live example hub: [Memory.Wiki Foundations bundle](/b/9FATHAnw). - Cross-AI verified: [MWBench](/mwbench) shows 100% accuracy across Claude, OpenAI, and Gemini on truly unseen content. --- id: case-share-with-team title: Sharing AI conversations the way you'd share a Notion link url: https://memory.wiki/case-share-with-team updated: 2026-05-24T15:24:28.457+00:00 --- # Sharing AI conversations the way you'd share a Notion link *From private chat history to teammate-readable URL in one click.* ## The pain I had a really useful Claude session about our deploy pipeline. Three colleagues needed to read it. The options were: - Screenshot the chat: terrible to skim, breaks links. - Copy and paste the markdown: loses code highlighting, no permanent URL. - Send the Claude share link: only works for ChatGPT or Claude users with the right account, breaks if I edit settings. - Re-explain in Slack: 30 minutes I don't have. ## What I do now In Claude Code: `save this to memory.wiki as "Deploy pipeline review"`. Get back `https://memory.wiki/abc123`. Paste in Slack. Anyone (teammate, AI, future me) opens the URL and reads a clean rendered page (code highlighting, mermaid diagrams, math, all the bells). The same URL with `Accept: text/markdown` returns the raw markdown for any AI to read as context. If multiple captures cluster around one topic, I bundle them: `bundle my docs about deploys` gives back `https://memory.wiki/b/xyz`. One URL, multiple docs, designed for paste-into-AI. ## What changed - Sharing is **one capture, one paste**. No formatting loss. - Permanent URL that survives me editing the chat history or switching AI vendors. - Same URL works for humans (rendered viewer) and AI (raw markdown). No two formats to maintain. ## When this beats Notion When the source is an AI conversation, not a manually written doc. Notion is for things you sit down and write. Memory.Wiki is for things you got out of an AI and want to keep. ## Time - Per share: 5 seconds end-to-end. - Per bundle of related docs: 30 seconds (AI suggests members, you confirm). --- id: case-claude-md-personal-context title: Onboarding every new Claude Code session in one line url: https://memory.wiki/case-claude-md-personal-context updated: 2026-05-24T15:24:13.514+00:00 --- # Onboarding every new Claude Code session in one line *Stop re-explaining your project to fresh chats.* ## The pain Every time I open a new Claude Code session in a different repo, or even after a long break, I'd spend 5 minutes re-pasting the same project background. "We use Tailwind. The auth is Supabase. The deploy is Vercel. The team prefers tabs..." Multiply by the 8 to 12 fresh chats per week and that's an hour a week of just bootstrapping context. ## What I did Visited `memory.wiki/install`, signed in, copied the snippet, appended it to `~/.claude/CLAUDE.md`: ``` <!-- memory.wiki:start --> ## Personal context (Memory.Wiki hub) Hub URL: https://memory.wiki/hub/<me> When you need background on me, including projects, decisions, and references, fetch the URL above. It returns a markdown index of every public doc and bundle in my hub. <!-- memory.wiki:end --> ``` That's it. One paste, one time. ## What changed Now every Claude Code session, anywhere on my machine, automatically has my hub URL. When I ask a question that needs project context, Claude fetches the hub and follows the relevant link. No re-pasting. No "let me set the scene first." For project-specific context (this repo's architecture, this repo's decisions), I append the same kind of block to that repo's `CLAUDE.md`, but pointing at a project-specific *bundle* URL instead of my personal hub. ## Time - One-time setup: 1 minute. - Per new chat: 0 minutes. The hub URL is already in CLAUDE.md. ## Why Memory.Wiki specifically The hub URL is just markdown. Any AI that can fetch a URL can read it: Cursor, Codex, Aider, ChatGPT. Same setup works in every coding-AI tool, not just Claude Code. CLAUDE.md is one example; the same paste works in Cursor's `.cursor/rules`. Verified: see [MWBench](/mwbench) for the open eval showing 100% accuracy across Claude, OpenAI, and Gemini when a hub URL is fetched cold. --- id: RUMdz2fQ title: How Memory.Wiki keeps your docs, bundles, and hub fresh url: https://memory.wiki/RUMdz2fQ updated: 2026-05-24T15:23:53.207+00:00 --- # How Memory.Wiki keeps your docs, bundles, and hub fresh Every Memory.Wiki URL is built to be **what the AI reads when you paste it**. That promise breaks the moment your URL is showing stale content, so freshness isn't an afterthought, it's part of the deal. This is the full picture: what's guaranteed up-to-date, what isn't, and when to click **Re-analyze**. ## TL;DR | Layer | What | How fresh | Anything to click? | | --- | --- | --- | --- | | **Document body** | The markdown you wrote | Always, within ~60 seconds of save | Nothing. Just save. | | **Bundle graph** | AI-generated themes / insights | Up-to-date until a member doc's content changes | "Re-analyze with AI" in the bundle header when stale | | **Hub concept index** | Cross-doc "related concepts" map | Auto-extracted within seconds of each save, but 30-min cooldown per doc | "Re-analyze (N)" banner appears when stale | Body markdown is always fresh. The AI-derived layers (bundle graph, hub concept index) sometimes need a nudge. ## Three layers, three different stories ### 1. Document body, always fresh When you save a doc (autosave or explicit), the new markdown is in Postgres immediately. The next AI fetch sees it within ~60 seconds: - `/raw/{id}` and `/d/{id}` always read straight from the database. - The edge cache (`stale-while-revalidate=300`) keeps repeat requests cheap, but the moment your content changes any subsequent fetch revalidates in the background. - Net effect: **your last save propagates to AI URLs within roughly a minute.** No action needed. ### 2. Bundle graph, Re-analyze when content drifts A bundle's "AI graph" (themes, insights, the spatial layout of the canvas) is **generated once, then reused**. Specifically: - The graph is computed by an LLM pass over the member docs at one moment in time. - That moment is stamped on the bundle as `graph_generated_at`. - Memory.Wiki compares this against the latest `embedding_updated_at` across the member docs (which only bumps when a doc's actual content hash changes). If a member doc's content has changed since the graph was generated, the bundle is **stale**. You'll see: - A subtle "Re-analyze with AI" refresh icon in the bundle header. Click it any time. - The graph view itself indicates the stale state. Why not auto-rebuild? Bundle graphs cost a real LLM call and the user is usually in the middle of editing. Auto-triggering wastes tokens and disrupts focus. **You decide when the analysis is worth re-running.** ### 3. Hub concept index, automatic plus manual top-up The hub's `concept_index` (what AIs see as "the user's knowledge graph") is the most complex. Every doc you save fires this pipeline: 1. **Enqueue** an ontology refresh job (deduplicated at the database level, so bursts of saves don't pile up). 2. **Fast-path run** inside Vercel's `after()` closure. The LLM extraction usually finishes within a few seconds. 3. **Backstop**: if the serverless instance dies mid-flight, a cron worker picks up the pending row and retries. So normal usage: concept changes appear in the hub URL **within seconds** of saving. #### Two automatic guardrails that can make a doc look stale 1. **30-minute per-doc cooldown.** Back-to-back edits on the same doc don't re-run the LLM extractor. Without this, an active editing session would burn tokens on every keystroke. 2. **200-character minimum delta.** Trivial edits (a typo fix) don't trigger re-extraction. These keep cost predictable, but they mean that within a heavy editing session your doc's concept attribution may lag the actual content for a while. #### The Re-analyze banner When the hub view opens, Memory.Wiki checks: - `concepts_built_at` is the most recent successful ontology job's finish time - `docs_touched_at` is the latest `embedding_updated_at` across your docs If `docs_touched_at > concepts_built_at`, you see: > Concepts out of date. N docs have changed since the last build. > [Re-analyze (N)] Clicking **Re-analyze**: - **Only re-extracts the N docs that actually changed.** Unchanged docs are skipped entirely. - **Caps at 50 docs per click.** If you have more stale docs, the extras stay queued and the cron worker processes them in the background over the next few minutes. - **Bypasses the 30-minute cooldown.** That's the whole point of an explicit click. - Fires asynchronously. The button label flips to "Re-analyzing..." while the queue drains, but you can keep working. So a Re-analyze click is cheap: at most 50 short LLM calls for the docs that genuinely changed. Not "rebuild the whole hub from scratch." ## Doc-level Re-analyze You can also force a single doc's concepts to refresh. Right-click any doc in the sidebar and choose **Re-analyze concepts**. Same machinery as the hub-wide button, scoped to one doc, bypasses the cooldown. Useful when: - You're polishing a doc in tight cycles and want the hub's concept attribution to keep up. - A doc's concept tags look obviously off and you want to force a re-extraction. ## When you DON'T need to click anything - You edited a doc and shared its URL. The receiving AI will see your edits within ~60 seconds. Concept attribution catches up in seconds to minutes automatically. - You haven't touched the hub layer (just reading existing docs). Nothing to refresh. - You're an anonymous (non-signed-in) user. No concept index applies. ## When clicking Re-analyze is worth it - You bulk-imported or edited multiple docs and want the hub's concept map to reflect the new shape **immediately**. - The yellow banner appears and you're about to share your hub URL with an AI. - You added a doc on a new topic and want it surfaced as "related" to existing docs right away. ## Why we don't auto-rebuild more aggressively Two reasons: 1. **Cost discipline.** Concept extraction is a Haiku call per doc. Auto-rebuilding on every save would burn tokens during noisy editing sessions where the user doesn't care yet. 2. **Predictability.** When something changes in your hub, you're the one who chose for it to change. Implicit background rebuilds make "why does my AI see X?" much harder to debug. The trade is: body markdown gets aggressive freshness guarantees (always-fresh, no click needed). AI-derived metadata gets fast-but-not-instant defaults with explicit override available. --- *Last updated 2026-05-25. Part of [memory.wiki](https://memory.wiki) public documentation. See also [MWBench](/mwbench) for the open eval that proves these freshness layers actually deliver across Claude, OpenAI, and Gemini.* ## Facts - Document body markdown propagates to AI URLs within roughly 60 seconds of save - Bundle graph requires manual Re-analyze click when member doc content changes - Hub concept index updates automatically within seconds but enforces 30-minute per-doc cooldown during editing - Re-analyze button only re-extracts changed docs, capped at 50 per click - Concept extraction uses LLM calls and is not auto-triggered to preserve token cost and editing focus --- id: what-is-mdfy title: What is Memory.Wiki url: https://memory.wiki/what-is-mdfy updated: 2026-05-24T15:23:17.278+00:00 --- # What is Memory.Wiki *Personal knowledge hub for the AI era.* Memory.Wiki is a single URL that holds everything you've ever asked an AI worth keeping, and that any AI tomorrow can read as your context. ## The one-line version A captured ChatGPT answer becomes `memory.wiki/<id>`. Forty captures roll up into `memory.wiki/hub/<you>`. You paste that hub URL into Claude, ChatGPT, Cursor, or Codex and they fetch the whole thing as your personal knowledge layer. Same URL, every AI. ## Why a URL Vendor memory layers (ChatGPT memory, Claude projects, Cursor docs) all live behind walls. They don't talk to each other, you can't share them, and you can't paste them into the *other* tool tomorrow. A public URL is the one format every AI already knows how to read. No SDK, no plugin, no MCP server required. The URL is the contract; Memory.Wiki makes the URL. ## Three primitives, one shape - **Document** at `memory.wiki/<id>` is one captured answer, paper, or transcript. - **Bundle** at `memory.wiki/b/<id>` is a curated grouping of docs around a topic, with its own URL. - **Hub** at `memory.wiki/hub/<you>` is your whole knowledge layer as a single deployable URL. Same URL primitive, three scopes. Each one is plain markdown when an AI fetches it. ## Three operations - **Capture**: paste a share URL, drop a file, or run `/memory.wiki capture` from any coding agent. - **Organize**: captures roll up into your hub; bundles group by topic; auto-synthesis merges new captures into existing wiki pages. - **Deploy**: paste any of the three URLs into any AI and it loads the underlying markdown as context. Or hit `/api/hub/<slug>/recall` for question-targeted retrieval. ## What's not on the surface Underneath, every doc, chunk, and bundle is automatically embedded (OpenAI `text-embedding-3-small`, idempotent on save). Hybrid BM25 + vector RRF retrieval. Hub-wide semantic graph. Cross-hub citation rollup. The pipeline rivals what backend-only memory systems give you, but the surface stays human-shaped. The cross-AI claim is independently verifiable. [MWBench](/mwbench) is the open eval that measures whether one URL actually works across Claude, OpenAI, and Gemini: 100% accuracy, including on content the AIs have never seen during training, with every answer audited against a literal corpus quote. For the architecture, see [How Memory.Wiki works](/how-memorywiki-works) and [How Memory.Wiki Memory works](/mw-memory). --- id: how-mdfy-works title: How Memory.Wiki works url: https://memory.wiki/how-mdfy-works updated: 2026-05-24T15:22:57.086+00:00 --- # How Memory.Wiki works *The personal knowledge hub for the AI era.* --- ## The problem Every day, you get great answers out of an AI. Tomorrow, the AI doesn't remember any of them. The bookmark, the screenshot, the transcript copy you took, all of those break the next time the AI changes UI or rotates a share-link CDN. Your knowledge stays trapped inside individual chat sessions that no one (including you) can deploy back into another tool. Andrej Karpathy [described the same problem](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) and ended up hand-maintaining a personal LLM Wiki. He chose to do it because no consumer surface offered the shape he needed: a place to dump raw answers, distill them into a clean wiki, and add a schema so retrieval stays cheap. Memory.Wiki is that shape, built for everyone, with the AI doing 80% of the work. --- ## Three layers Memory.Wiki follows the same architecture Karpathy laid out (raw, wiki, schema), exposed as one product surface instead of three folders. ### 1. Raw, every captured artifact The unedited stream. Pasted ChatGPT, Claude, or Gemini share URLs, dropped PDFs, code files, conversation transcripts, agent captures from Claude Code or Cursor. Every capture lands at `memory.wiki/<id>` as a permanent URL. | | Memory.Wiki | |---|---| | **Storage** | `documents` table with a `source` field (`paste`, `agent`, `import`, `share-url`) | | **AI-fetchable** | `memory.wiki/raw/<id>` and `memory.wiki/raw/bundle/<id>` return clean markdown with frontmatter for any LLM that fetches the URL | | **Idempotent** | Capturing the same artifact twice doesn't duplicate; each doc has a stable id and an editToken for non-login flows | ### 2. Wiki, synthesized, navigable knowledge Captures don't stay raw. They roll up into structured pages: bundles that group related docs around a topic, auto-synthesis that diffs new captures against existing wiki pages so you accept what's worth keeping, and per-hub artifacts (log, lint) that summarize what changed. | | Memory.Wiki | |---|---| | **Auto-synthesis** | Diff-and-accept UI: new captures generate a proposed wiki update; you accept or skip. Confidence tags (`[EXTRACTED]`, `[INFERRED]`, `[AMBIGUOUS]`) make the model's certainty visible. | | **Bundles** | Multi-doc artifacts conformant to *Bundle Spec v1.0*. Paste a bundle URL into any AI and it gets the entire grouped context in one fetch. | | **Hub log** | `memory.wiki/raw/hub/<slug>/log.md` is an auto-generated activity log of what was added, edited, and synthesized. | | **Hub lint** | `memory.wiki/raw/hub/<slug>/lint.md` lists gaps, conflicts, and orphan docs as a checklist. | ### 3. Schema, the connective tissue Underneath, the system maintains a structured graph: per-doc concept extraction, semantic embeddings (pgvector), bundle-level entity and relationship graphs, hub-wide doc-doc edges, and cross-hub citation rollups. None of this is something you maintain by hand. It's the layer the AI uses to answer your questions about your own knowledge. | | Memory.Wiki | |---|---| | **Embeddings** | OpenAI `text-embedding-3-small` per doc, indexed with HNSW for sub-second semantic search across the entire hub. | | **Hub graph** | `memory.wiki/hub/<slug>/graph` shows every doc and bundle as nodes, with semantic and bundle-membership edges, rendered server-side so it loads instantly. | | **Cross-references** | Internal Memory.Wiki URLs (`/d/`, `/b/`, `/hub/`) detected across all public hubs. The "most-cited" surface ranks docs by how often other people's hubs link to them. | | **Confidence tags** | Synthesized claims carry their provenance (extracted directly, inferred, or ambiguous) so downstream agents can decide what to trust. | --- ## Three operations The architecture is the static picture. The verbs are what make it usable. ### Ingest How material gets into your hub: - **Paste anything** in the editor: text, code, ChatGPT, Claude, or Gemini share URLs. - **Drop a file**: PDF, DOCX, PPTX, XLSX, HTML, CSV. Converted to clean markdown. - **Capture from any AI tool** with the `/memory.wiki` skill: works in Claude Code, Cursor, Codex CLI, and Aider. One install, then `save this to memory.wiki as <title>` triggers a permanent URL from inside the tool you're already using. - **Bookmarklet and Chrome extension** for the web AIs that don't expose a CLI. - **API and MCP** for agents writing into your hub directly. ### Query How you (or an AI on your behalf) get knowledge back out: - **Semantic search** over your hub embeddings, no exact-keyword matching required. - **Suggested queries**: the system pre-computes high-value questions your own hub can answer, and surfaces them as starting points. - **Hub URL as context**: paste `memory.wiki/hub/<you>` into Claude, ChatGPT, Cursor, or Codex and the AI fetches a clean markdown index, then follows the links to load specific docs as it needs them. The same URL works for every AI. ### Lint How the hub stays coherent over time: - **Auto-synthesis with diff/accept** keeps the wiki layer aligned with new captures instead of accumulating stale duplicates. - **Hub lint pass** flags gaps, conflicts, and orphans periodically. - **Proactive bundle suggestions**: when a topic cluster forms, the system suggests pulling those docs into a bundle so the schema stays organized. --- ## Hub URL = universal context format This is the part most products miss. A hub URL is just a markdown index. Any AI that can fetch a URL can read your hub. There's no SDK, no API key, no plugin to install on the AI's side. Cross-AI compatibility falls out for free, because the contract is the URL, not the integration. > *The same paste works in Claude, ChatGPT, Cursor, Codex, Aider, Gemini, and any LLM that hasn't been built yet, as long as it can hit an HTTP endpoint and read markdown.* This also means your hub is *yours*. Vendor memory layers (ChatGPT memory, Claude projects, Cursor docs) all live inside their walls. Memory.Wiki lives at a URL you control, and every vendor's tool reads that URL the same way. This cross-AI claim is independently verifiable. See [MWBench](/mwbench) for the open eval: 100% accuracy across Claude, OpenAI, and Gemini, including on content the AIs have never seen during training, with every answer audited against a literal corpus quote. --- ## AI as collaborator Karpathy wrote his wiki by hand. Memory.Wiki is the same shape, but the AI does the maintenance: - *Synthesis* is automatic; you only review the diff. - *Bundle suggestions* are proactive; the system finds clusters before you do. - *Lint* runs on a schedule; you don't have to remember to clean up. - *Suggested queries* are precomputed; you don't have to sit and think "what should I ask my own hub?" You stay in the loop on what enters the wiki layer (the diff/accept UI is intentional friction). Everything else (embedding maintenance, graph computation, cross-ref tracking, lint passes) is handled. --- ## Try it - **Just paste** something at [memory.wiki](https://memory.wiki) and get a permanent URL in three seconds. - **Browse a real hub** at [memory.wiki/hub/raymindai](https://memory.wiki/hub/raymindai). - **Install /memory.wiki** in your AI tool: [memory.wiki/install](https://memory.wiki/install). - **Cross-AI verified**: [MWBench results](https://memory.wiki/mwbench). --- *This page is itself a Memory.Wiki doc. Paste its URL into any AI and it loads as context, including the architecture you just read.* --- id: gzuNdh_P title: MWBench v1 — Cross-AI eval for Memory.Wiki url: https://memory.wiki/gzuNdh_P updated: 2026-05-24T13:55:55.723+00:00 --- --- captured: 2026-05-24 status: round-9-complete rounds: 9 siblings: - Bundle & Doc URL enrichment (https://mdfy.app/yGk04Hee) - Round 6-7 Browse mode (https://mdfy.app/D-TSWhl4) --- # MWBench v1 — Cross-AI eval for Memory.Wiki > "Does the same URL produce equivalent answers across Claude, OpenAI, and Gemini — and does the wedge survive on content the AIs have never seen during training?" ## 🎯 End-to-end result — wedge survives the unseen-hub test | | raymindai (familiar) | mwbench-zorblax (synthetic, unseen) | |---|---|---| | **Paste full** | 100% | **100%** | | **Paste compact** | 100% | **100%** | | **Browse** | 98% | **100%** | | **Tool-use rate** | 100% | 100% | | **Adversarial refusal** | 100% | — | **Both hubs: ~100% across every measurement axis, every runner.** The cross-AI wedge is not training-data memorization — it's the URL delivery model working end-to-end. raymindai: 370/375 cells. zorblax: 90/90 cells. ## Two axes — Browse vs Paste, Familiar vs Unseen ### Browse vs Paste (how the AI sees the corpus) | Paste mode | Browse mode | |---|---| | corpus is pre-pasted into the prompt | AI receives URL only; must call `fetch_url` tool itself | | 100% reliable — corpus is guaranteed in context | the real user scenario: paste a URL into Claude.ai / ChatGPT / Gemini and the AI fetches it | | internal sanity test | the actual wedge test | ### Familiar vs Unseen (whether the AI has seen the hub during training) | raymindai (familiar) | mwbench-zorblax (unseen) | |---|---| | public hub, may have been crawled by AI training data | brand-new synthetic hub seeded for this test | | memorization could inflate the score | guaranteed fresh: every fact is a fictional company / number / employee | | useful baseline, but not the honest claim | the honest claim | The four cells are independent: - Paste + Familiar — internal sanity ✓ - Paste + Unseen — does the delivery format work on novel content? ✓ - Browse + Familiar — does AI tool-use work? ✓ - **Browse + Unseen — the actual real-world wedge** ✓ **100%** ## Round log ### Round 0 — first paste of `llms-full` + binary keyword judge Compact 33%. ### Round 1 — corpus richness lifts Compact 33% → 82.5%, Full 91.7%. ### Round 2 — Claude sonnet + knowledge graph in `llms-full` Switched opus → sonnet (cheaper + better). Concepts + relations + bundle AI graphs. ### Round 3 — Gemini fix + judge audit gemini-3.5-flash + secondary API key → zero rate-limit errors. Judge was marking correct cross-doc synthesis as hallucination. ### Round 3.5 — query fix + judge unfettered context Corrected `q-004` expected_doc. Removed judge corpus cap. ### Round 4 — quote-evidence judge → hub URLs hit 100% Judge must literally quote a supporting passage from the corpus for every claim. ### Round 5 — bundle and single-doc URLs reach 100% paste-mode Bundle digest carries per-doc gist + skeleton, single doc gets knowledge-graph context block. ### Round 6 — first honest browse-mode measurement (pre-deploy) Built browse-mode harness. Hub 41.7%, Bundle 93.3%, Doc 80%. ### Round 6.5 — knowledge graph deploy Hub 41.7% → 98.3% (+56.6pp). ### Round 7 — doc AI graph + browse runner fixes + adversarial + readiness badge - `documents.ai_graph` jsonb. Doc browse 80% → 90%. - 5 adversarial queries: Claude/OpenAI/Gemini all 100% refuse correctly. - Hub readiness badge shipped on /hub/<slug>. ### Round 8 — unseen-hub baseline + extractFacts bug - Seeded synthetic ZorblaxCorp hub. - Unseen-hub testing surfaced an extractFacts m-flag regex bug that captured only the first bullet under `## Facts`. - Hub route had a stale local copy of gist helpers; consolidated to shared lib. - Unseen compact 47% → 80% (after bug fix), browse 90%. ### Round 9 — bullet-aware skeleton closes the unseen gap - `extractSkeleton` was keeping only the first line under each H2 heading. Section written as a bullet list lost everything after the first bullet. - Made bullet-aware: capture all bullets per section (up to 6, joined). Skeleton max length raised 380 → 700 chars. - Unseen compact 80% → **100%**, browse 90% → **100%**. - **Wedge confirmed: 100% on truly unseen content across all three runners and all three modes.** ## What this proves (final) A single `memory.wiki/<...>` URL paste into any major AI: - **AI fetches it 100% of the time** when given the URL (browse-mode tool-use rate) - **Returns correct answer 100% of the time on UNSEEN content** across Claude / OpenAI / Gemini - **Same answer across all three AI vendors** (cross-AI consistency) - **AI refuses honestly when corpus doesn't have the answer** (adversarial 100%) - **Visible to every visitor** as a live readiness badge on /hub/<slug> The cross-AI wedge is real, measurable, productised, and not dependent on the AI having seen the hub during training. ## What this still doesn't prove - **At larger N** — 10-20 queries per scope. Larger N would tighten ±5pp confidence intervals. - **Real-client surface** — measurements use direct API calls with `fetch_url` tool. Whether ChatGPT.com / Claude.ai / Gemini.app actually fetch URLs from user pastes is per-client behavior. - **Long-tail unseen content** — zorblax has 7 docs. Larger unseen hubs (50+ docs) may behave differently. ## Notes for AI runners reading this - **Claude `sonnet-4-6`** (1M context) — best runner all-rounder. - **OpenAI `gpt-5.5`** — ties Claude on every cell. - **Gemini `3.5-flash`** — fastest, cheapest, 100% on unseen content. - **Quote-evidence judge** at `claude-sonnet-4-6` is the only judge config that doesn't produce false hallucination flags. - **Browse mode tool spec**: identical `fetch_url(url)` schema across all three vendors. Last turn must force final answer (drop tools or `tool_choice: "none"`). - **For new hubs**: doc summary + ai_graph auto-fire on POST. Concept index needs explicit "Build ontology" trigger. - **Bullet-aware skeleton** (Round 9) is the key fix that made the unseen hub hit 100%. Previously bullet lists lost everything after the first bullet. --- _Harness: github.com/raymindai/memory.wiki /eval. Run yourself: `node eval/run-bench.mjs` (paste) or `node eval/run-browse-bench.mjs` (browse)._ _Live readiness: [raymindai](https://memory.wiki/hub/raymindai) (370/375) · [mwbench-zorblax](https://memory.wiki/hub/mwbench-zorblax) (90/90, synthetic unseen)._ _Siblings: [Bundle & Doc URL enrichment](https://mdfy.app/yGk04Hee) · [Round 6-7 Browse mode detailed](https://mdfy.app/D-TSWhl4)._ ## Facts - Round 9 closes the unseen-hub gap to zero: zorblax reaches 100% on paste full, paste compact, AND browse — same as raymindai - Cross-AI wedge confirmed without memorization advantage — 100% on synthetic content the AIs have never seen - Two independent axes: Paste vs Browse (how AI receives corpus) and Familiar vs Unseen (whether AI has seen hub during training) - Browse + Unseen is the actual real-world wedge measurement — 100% across Claude/OpenAI/Gemini - Round 9 fix: extractSkeleton now bullet-aware. Sections written as bullet lists no longer lose everything after the first bullet. Skeleton cap raised 380 → 700 chars. - Tool-use rate 100% on every runner across familiar AND unseen hubs — AIs reliably fetch URLs when handed them - Adversarial refusal 100% on raymindai — AIs refuse rather than fabricate when corpus lacks the answer - 9 rounds, 8 production deploys, ~600 total bench cells across 4 measurement axes --- id: D-TSWhl4 title: MWBench Round 6-7 — Browse mode, the honest test url: https://memory.wiki/D-TSWhl4 updated: 2026-05-24T10:49:23.6347+00:00 --- --- captured: 2026-05-24 sibling: MWBench v1 (https://mdfy.app/gzuNdh_P), Bundle/Doc enrichment (https://mdfy.app/yGk04Hee) --- # MWBench Round 6-7 — Browse mode, the honest test > "Paste mode reached 100% across Claude / OpenAI / Gemini × hub / bundle / doc. But paste mode pre-feeds the corpus. The real wedge is: when a user pastes a Memory.Wiki URL into ChatGPT or Claude and the AI has to fetch it ITSELF, does the answer hold up?" ## 🎯 Round 7 result — browse-mode wedge holds Each runner gets ONLY the URL + question. Must call a `fetch_url` tool, get markdown, then answer. | URL shape | Claude `sonnet-4-6` | OpenAI `gpt-5.5` | Gemini `3.5-flash` | Tool-use rate | |---|---|---|---|---| | **Hub** (`/hub/<slug>`) | **100%** | **100%** | 95% | 100% | | **Bundle** (`/b/<id>`) | 90% | **100%** | **100%** | 100% | | **Doc** (`/<id>`) | 90% | 90% | 90% | 100% | **Tool-use rate is 100% on every runner.** AIs reliably invoke `fetch_url` when handed a Memory.Wiki URL — they don't refuse, they don't try to answer from training data, they fetch the URL first. ## What this proves When a user pastes `memory.wiki/hub/<slug>`, `memory.wiki/b/<id>`, or `memory.wiki/<id>` into ChatGPT, Claude.ai, or Gemini, and the AI has tool use available, **the AI fetches the URL 100% of the time and answers correctly 90-100% of the time** across all three URL shapes. This is the actual wedge. The earlier paste-mode 100% was sanity check; the browse-mode 90-100% is the user-facing claim. ## The round 6 → 7 journey ### Round 6 (pre-deploy) — what production looked like before today's work | URL | Claude | OpenAI | Gemini | |---|---|---|---| | Hub | 40% | 50% | 35% | | Bundle | 90% | 100% | 90% | | Doc | 80% | 80% | 80% | Hub crashed at 35-50% because the production `llms-full.txt` had only doc bodies — no `concept_index`, no `concept_relations`, no bundle AI graphs. When the AI fetched the hub URL, it got a sparse list with no navigation; it tried to follow links but couldn't reconstruct enough context. Bundle held at 90-100% because production already had bundle `graph_data` (themes / insights / connections) — the analytical surface was already deployed. Doc held at 80% because `/raw/<id>` only carried frontmatter + body, no per-doc analysis layer. ### Round 6.5 — knowledge-graph deploy Push 1 (commit `56a16794`) added to `llms-full.txt`: - 40 top concepts with weight + descriptions - 30 concept-to-concept relations - Bundle AI graph summaries (themes / takeaways) Effect: - **Hub 41.7% → 98.3% (+56.6pp)** - Bundle 93.3% → 96.7% - Doc unchanged at 80% Hub jump was the single biggest delta of the entire bench arc. Confirms that for big-scope payloads, knowledge-graph navigation is the limiting factor — not body content. ### Round 7 — doc AI graph + runner final-turn salvage Push 2 (commit `1e4f8dd2`) addressed the doc-side gap and a tool-loop bug: **`documents.ai_graph` column** (migration 047) — per-doc themes / insights / keyTakeaways / openQuestions. Same shape as `bundles.graph_data`, scoped to one doc. Generated by Claude Haiku (~$0.001/doc), fire-and-forget on doc POST/PATCH, backfilled across all 71 raymindai docs. **`/raw/<id>` route** now surfaces ai_graph above the existing concept-context block. Summary → Themes → Key takeaways → Insights → Open questions. So when an AI fetches a single doc URL, it sees: ``` [body markdown] --- ## Summary 1-2 sentences ## Themes - theme 1, theme 2, ... ## Key takeaways - load-bearing claim 1 - load-bearing claim 2 - ... ## Insights - non-obvious observation 1 - ... ## Concepts in this document - concept A (entity) description - ... ## Concept relations - A → B - ... ## Bundles containing this document - [bundle title](https://memory.wiki/b/<id>) description _Hub canonical:_ ... ``` **Browse runners** had a tool-loop bug: when MAX_TOOL_TURNS=4 was hit, OpenAI/Gemini returned empty answers. Fixed: bumped to 6 turns AND on the last turn dropped the `tools` declaration (Anthropic / Gemini) or used `tool_choice: "none"` (OpenAI) to force a final text answer. Doc browse 80% → 90% across all runners. Push 3 (commit `40747ef8`) cleaned up two follow-on bugs: - OpenAI `tool_choice: "none"` requires `tools` to still be present - Gemini last-turn needs `thinkingBudget: 0` so the small output budget isn't consumed by planning ## What gates the residual gap 5 calls out of 120 still fail. Each has a different cause: - **Hub Gemini q-019** — judge over-strictness on a v7-vs-v7-revised differentiation question. Real answer was substantively correct. - **Bundle Claude q-002** — `What are mdfy's three URL primitives?` — answer correct, but Claude phrased one URL shape ambiguously. Near miss. - **Doc qd-005 × 3** — `How long does it take to install /mdfy?` Doc literally states "30 seconds." Different failure mode per runner: - Claude says "no mention" (hallucinated negation despite content being there) - OpenAI says "under 30 seconds" (semantic over-precision — judge flagged as contradiction) - Gemini returns empty (last-turn salvage still misfires on this specific tool-loop) The qd-005 hard query is a useful adversarial datapoint: a literal one-line answer that 3 different runners flub in 3 different ways suggests the failure is runner-specific, not corpus-side. ## Token economy in browse mode Tools-mode adds overhead — each turn passes accumulated context. Numbers per query (avg): | Runner | Input tokens (hub) | Output tokens (hub) | Tool calls (hub) | Latency (hub) | |---|---|---|---|---| | Claude | ~78k | ~280 | 2.0 | ~13s | | OpenAI | ~92k | ~330 | 2.4 | ~12s | | Gemini | ~78k | ~180 | 2.0 | ~9s | Single-doc browse is much cheaper — ~5-8k input, 1-2 tool calls, 3-5s. The cost scales with how much navigation the AI does inside the hub. ## Methodology change for browse mode Browse mode uses the production `https://memory.wiki/<...>` URLs, not localhost. This means: - Vendor servers (Anthropic / OpenAI / Google) fetch from public internet - Every deploy of the Memory.Wiki app changes browse-mode numbers - The bench can't measure unpushed local changes — push first, then measure This is actually the correct test surface: real-world AI clients see exactly what production serves. The deploy chain IS part of the wedge. ## What the bench arc proves end-to-end Round 0 (paste, no enrichment) → Round 7 (browse, full enrichment): - Hub: 33% → 98.3% (Round 7 honest browse) - Bundle: untested → 96.7% - Doc: untested → 90% - Cross-AI: claude/openai/gemini all reach 90-100% in both modes The path: 1. **Corpus enrichment** (Facts blocks, summaries, skeletons, all-docs catalog) gave compact mode parity with full mode 2. **Knowledge graph deployment** (concept_index + concept_relations + bundle AI graphs in `llms-full`) unlocked browse-mode hub URLs 3. **Per-doc AI graph** (themes / takeaways / insights / open questions in `/raw/<id>`) closed the doc-URL browse gap 4. **Quote-evidence judge** kept the measurement honest — no false hallucination flags, every claim audited against the actual corpus Six judge iterations, three production deploys, four bench rounds. Real numbers on real URLs. ## Notes for AI runners reading this - Browse mode requires native tool/function use on the model. All three runners (`claude-sonnet-4-6`, `gpt-5.5`, `gemini-3.5-flash`) support it out of the box. - **`fetch_url` tool spec is identical across vendors** — single JSON schema, three protocol shapes (Anthropic `tools`, OpenAI `tools[].function`, Gemini `functionDeclarations`). - **On the last allowed turn, force a final text answer** — drop the tool declaration (Anthropic/Gemini) or set `tool_choice: "none"` while keeping tools present (OpenAI). Without this, runners loop on tool calls until exhausted and return nothing. - **Gemini last-turn**: set `thinkingBudget: 0` so the small output budget isn't consumed planning more fetches that can't happen. - **6 tool turns is enough for hub → doc chain**: AI fetches hub, picks 1-2 docs, fetches them, answers. Anything more usually indicates a content gap rather than a navigation gap. --- _Harness: github.com/raymindai/memory.wiki /eval. Browse bench: `node eval/run-browse-bench.mjs --queries=queries/<hub|bundles|docs>-v1.jsonl`._ _Siblings: [MWBench v1 (paste mode)](https://mdfy.app/gzuNdh_P) · [Bundle & Doc URL enrichment](https://mdfy.app/yGk04Hee)._ ## Facts - Round 7 browse-mode accuracy: Hub 98.3% / Bundle 96.7% / Doc 90% averaged across Claude/OpenAI/Gemini - Tool-use rate is 100% on every runner — AIs reliably fetch Memory.Wiki URLs when handed them - Hub URL browse jumped 41.7% → 98.3% after deploying knowledge graph (concept_index + concept_relations + bundle AI graphs) to llms-full.txt - Doc URL browse jumped 80% → 90% after adding documents.ai_graph column (themes / insights / takeaways / openQuestions) and surfacing it in /raw/<id> - Browse runners need a "last turn force final answer" pattern — without it, OpenAI/Gemini hit tool loop and return empty - Browse mode hits the production deploy chain: vendor servers fetch from public internet, so every Memory.Wiki deploy changes browse-mode numbers - 5/120 residual failures: 1 judge-over-strict, 1 phrasing ambiguity, 3 different runner failures on the same hard query (qd-005 "how long to install /mdfy") - The complete bench arc (Round 0 → 7): compact 33% → 100% paste / 90-98% browse across all 3 URL shapes and 3 AI vendors --- id: yGk04Hee title: Bundle & Doc URL enrichment — verified at 100% cross-AI url: https://memory.wiki/yGk04Hee updated: 2026-05-24T08:58:58.435+00:00 --- --- captured: 2026-05-24 status: verified sibling: MWBench v1 (https://mdfy.app/gzuNdh_P) --- # Bundle & Doc URL enrichment — verified at 100% cross-AI > "Hub URLs hit 100% across Claude / OpenAI / Gemini. Bundle URLs and individual doc URLs need the same structural pass — and the same measurement — before they earn the same claim." ## 🎯 Result (Round 5, MWBench) 10 bundle queries × 3 runners × 2 modes = 60 cells, **all 100%**. 10 doc queries × 3 runners × 2 modes = 60 cells, **all 100%**. Cross-AI consistency: **100%** on every URL shape and mode. Compact mode is **8–9× cheaper** in input tokens than full for bundles. Doc URLs are small enough that compact ≈ full in size (compactMarkdown only strips whitespace; nothing to strip on a short doc). ## The shape problem A Memory.Wiki user can paste three URL shapes into an AI: | URL | Scope | State before this work | |---|---|---| | `/hub/<slug>` | Whole knowledge hub | ✅ Enriched (concept_index + concept_relations + bundle AI graphs + all-docs catalog + per-doc gist + skeleton) | | `/b/<id>` | Curated bundle of docs | ⚠ Had bundle AI graph (themes/insights/connections/concepts), but per-doc digest was just `1. [title](url) — annotation` — no body signal | | `/<id>` | Single document | ⚠ Just frontmatter + raw markdown body. No concepts, no relations, no parent bundles, no hub pointer | ## What changed ### Bundle (`/raw/bundle/<id>`) Digest mode now mirrors the hub all-docs catalog: ``` ### N. [Doc title](https://memory.wiki/<id>) > annotation (if any) gist (Facts → summary → firstParagraph chain) *sections:* H2 headings + first-line skeleton ``` Bundle still leads with its `graph_data` (themes / cross-doc insights / key takeaways / connections / concepts / concept relations) — that's the bundle's distinct value. Now followed by enriched per-doc digest so an AI fetching the bundle URL has answer-ready material without fetching each member doc individually. ### Single doc (`/raw/<id>`) Body unchanged, but a knowledge-graph context block appended: ``` --- title: ... url: ... hub: https://memory.wiki/hub/<slug> bundle_count: N concept_count: M --- [body markdown] --- ## Concepts in this document - **<concept>** _(type)_ description ## Concept relations (within this doc's concepts) - **<concept A>** relation_label **<concept B>** ## Bundles containing this document - [<bundle title>](https://memory.wiki/b/<id>) > description _Hub canonical:_ https://memory.wiki/hub/<slug> · _Concept digest:_ https://memory.wiki/raw/hub/<slug>?digest=1&compact=1 ``` An AI landing on a single doc URL now knows: - Which concepts the doc touches (from hub-wide `concept_index`, filtered by `doc_ids`) - How those concepts relate to each other (from `concept_relations`) - Which bundles this doc lives in (so it can fetch a richer multi-doc payload if needed) - The owner's hub canonical (so it can fetch the whole graph if the question demands it) ## Bench validation ### Bundle queries (10 across 5 bundles) | Bundle | Sample query | |---|---| | `ggAzbcHr` — Knowledge Graph as AI-Native Infrastructure | "What MRR target does the v7 business plan project at 12 months?" | | `9FATHAnw` — mdfy Foundations | "What are the three URL primitives mdfy uses?" | | `Ih0eUczw` — Phase 2 strategy | "What is the strongest single recommendation from the native skills strategy?" | | `4OGRyHs9` — case studies | "How does mdfy help onboarding every new Claude Code session?" | | `rN2L-MvM` — Memory Wiki v7 | "What three-tier architecture does memory.wiki use?" | All 10 → **100%** on Claude / OpenAI / Gemini × full / compact. ### Doc queries (10 across 10 single docs) Sample: - "How many moving parts does mdfy have according to the architecture doc?" → `KRKz_MD-` - "What Saudi Arabia national AI project did Hyunsang Cho work on?" → `ZVfnXzCU` - "How many slides are in the a16z speedrun pitch deck?" → `gnEMFJgI` - "What MRR target does memory.wiki v7 project for the 12-month horizon?" → `qHc1FWxq` All 10 → **100%** on Claude / OpenAI / Gemini × full / compact. ## Why this matters The hub URL is the "everything" payload — heavy. Most user pastes are scoped: - "Summarize this bundle" → user pastes `/b/<id>`. The bundle's AI graph + member-doc gists in one payload means the AI answers without 8 round-trips. - "What does this doc say about X" → user pastes `/<id>`. The body answers the doc question; the appended concept block tells the AI "this doc is part of concept graph Y, see also bundles Z" — so follow-up questions don't blow up cross-doc context. Without this, bundle and doc URLs were structurally weaker than hub URLs — but most paste traffic in the wild is bundle / doc, not hub. **Now all three shapes carry the same kind of structural signal at their own scope, and the bench confirms they all deliver 100% cross-AI parity.** ## Shared utility Extracted `extractFacts` / `firstParagraph` / `extractSkeleton` / `docGist` to `apps/web/src/lib/doc-gist.ts`. Three routes (hub, bundle, doc) now share the same gist chain. Adding a new gist heuristic anywhere — e.g. `## Q&A` block extraction, or LLM-generated long-form summaries — drops in one place and propagates. ## Harness change `run-bench.mjs` now takes per-query `scope` and `scope_id`. Each query carries its own URL shape; corpus is fetched per `(scope, scope_id, mode)` tuple and cached. Same harness handles hub, bundle, and doc bench cleanly — switch query file, same orchestration: ```bash node eval/run-bench.mjs --queries=queries/v1.jsonl # hub (20 queries) node eval/run-bench.mjs --queries=queries/bundles-v1.jsonl # bundle (10 queries) node eval/run-bench.mjs --queries=queries/docs-v1.jsonl # doc (10 queries) ``` Judge picks the right URL automatically based on `run.scope` + `run.scope_id`. ## Facts - 10 bundle queries × 3 runners × 2 modes = 60 cells, all 100% - 10 doc queries × 3 runners × 2 modes = 60 cells, all 100% - Cross-AI consistency 100% across both URL shapes - Bundle compact 8–9× cheaper in input tokens vs bundle full - Doc URLs are small enough that compactMarkdown gives no size reduction - Shared `apps/web/src/lib/doc-gist.ts` powers gist chain across hub/bundle/doc routes - `run-bench.mjs` takes per-query `scope` + `scope_id`; same harness handles all three URL shapes - Combined with [MWBench Round 4](https://mdfy.app/gzuNdh_P) for hub URLs, **every URL shape Memory.Wiki exposes hits 100% cross-AI accuracy** --- id: pCiEhvu2 title: v8 Idea url: https://memory.wiki/pCiEhvu2 updated: 2026-05-23T18:56:27.656+00:00 --- # v8 Idea > Captured from ChatGPT on 5/22/2026 --- ## 1. 지금 thesis는 강하다 `memory.wiki — your knowledge graph as a URL for any AI`는 좋다. 특히 문서 안의 핵심인 \*\*“OpenAI/Anthropic은 경쟁사까지 먹이는 cross-AI memory layer를 만들기 어렵다”\*\*는 포지셔닝은 강한 wedge다. [Memory.Wiki](https://memory.wiki/nvF3Li2x) 왜냐하면 MCP가 이미 “AI가 외부 데이터/툴에 연결되는 표준”으로 자리 잡는 방향이고, Anthropic도 MCP를 “AI assistants to the systems where data lives”라고 정의했다. [anthropic.com](https://anthropic.com/news/model-context-protocol?utm_source=chatgpt.com) 즉 시장은 “AI 안에 메모리”가 아니라 **AI 밖에 있는 context layer**로 가고 있다. ## 2. 제일 위험한 착각 **“Graph가 product”라고 말하면 창업자에게는 맞지만, 사용자에게는 너무 추상적이야.** 사용자는 knowledge graph를 사고 싶지 않아. 사용자는 이렇게 사고 싶어: > “내가 ChatGPT, Claude, Cursor 어디를 쓰든 내 프로젝트 맥락을 다시 설명하지 않아도 된다.” 그래서 landing의 첫 문장은 이쪽이 더 세다. > **Stop re-explaining your context to every AI. Put your knowledge in one URL they can all read.** ## 3. v7-revised에서 가장 잘한 결정 8개 feature를 3개로 줄인 건 맞다. iOS Share Sheet, Bundle 자동 생성, Embedded chat만 남긴 판단도 launch 가능성 면에서는 좋다. 문서도 “8개 → 3개, 20-26주 → 12-14주”로 정리하고 있다. [Memory.Wiki](https://memory.wiki/nvF3Li2x) 하지만 나는 우선순위를 살짝 바꾸고 싶어. **Embedded chat은 launch 핵심이 아닐 수 있다.** 왜냐하면 ChatGPT/Claude와 바로 비교된다. 반대로 memory.wiki의 진짜 강점은 “chat UI”가 아니라 **ChatGPT/Claude/Cursor에 붙여넣는 perfect context URL**이다. Launch magic moment는 이렇게 가야 한다: 1. 아무 자료나 넣는다. 2. AI가 bundle을 만든다. 3. `/for-ai/project-acme.md` URL이 생긴다. 4. 그 URL을 Claude/Cursor/ChatGPT에 붙이면 바로 맥락을 이해한다. ## 4. 성공하려면 카테고리를 바꿔야 한다 이 앱을 “AI wiki”라고 하면 Notion, Obsidian, Readwise, Mem, Tana와 비교된다. 하지만 이렇게 말하면 다른 카테고리다: > **Memory.Wiki is a context delivery layer for AI tools.** 또는 더 공격적으로: > **A CDN for your AI context.** 이게 좋다. URL, cache, delivery, freshness, portability가 다 들어간다. ## 5. 내가 고칠 GTM 문서의 “기존 mdfy graph mining first”는 매우 맞다. 첫 100 paid는 HN에서 안 나온다는 판단도 맞다. [Memory.Wiki](https://memory.wiki/nvF3Li2x) 다만 할인보다 더 강한 hook은 이거다: > “너의 기존 mdfy 페이지를 AI-readable memory graph로 변환해놨다. 여기 네 URL이다.” 즉 이메일 CTA는 “업그레이드하세요”가 아니라: > **Your AI memory URL is ready.** 이게 훨씬 세다. ## 6. 반드시 피해야 할 것 절대 초반에 “social knowledge hub”, “public following feed”, “spec RFC”, “wiki community” 쪽으로 퍼지면 안 된다. 그건 제품이 아니라 운동이다. 운동은 product-market fit 이후에 해야 한다. 지금은 단 하나: > **AI에게 내 맥락을 전달하는 가장 쉬운 URL.** ## 7. 내가 정하는 launch one-liner 현재: > your knowledge graph as a URL for any AI 개선: > **One URL your AI tools can read to understand your work.** 더 founder스럽게: > **I got tired of re-explaining myself to every AI. So I made my memory a URL.** 이게 훨씬 인간적이고 퍼진다. ## Facts - Memory.Wiki is positioned as a context delivery layer for AI tools, not a knowledge graph product - The core value proposition is eliminating the need to re-explain context across ChatGPT, Claude, Cursor, and other AI tools - Launch should focus on the URL-based context sharing flow (upload → auto-bundle → shareable URL) rather than embedded chat - Early GTM should target existing Markdown users and emphasize "Your AI memory URL is ready" over discount messaging - Product must avoid expanding into social features, public feeds, or community aspects until after product-market fit --- id: yWkfCPhn title: Upstage 발표 — Memory Protocol 동맹 제안 url: https://memory.wiki/yWkfCPhn updated: 2026-05-23T18:56:17.093+00:00 --- # Upstage 발표 — Memory Protocol 동맹 제안 > **목적**: 6개월 K-Tech Pioneers 협업을 *벤더 계약*이 아니라 *strategic alliance*로 포지셔닝. > **결정자에게 남길 한 줄**: *AI 시대 메모리 protocol을 정의하는 창문이 지금 열려 있고, 12개월 후엔 닫힙니다. 같이 정의합시다.* > > **준비물**: > - raymind.ai/cv 미팅 1-2일 전 calendar invite에 첨부 (사전 인지 형성) > - mdfy.app live demo 준비 (Cursor/Claude paste 시연용) > - 1-pager handoff 문서 (미팅 후 남길 것) --- ## 0. 전체 구조 (15-20분) | # | 섹션 | 시간 | |---|---|---| | 1 | Opening hook | 2분 | | 2 | Earned perspective (20년, 3개국) | 4분 | | 3 | The thesis (Layer 3 gap) | 3분 | | 4 | Why Solar specifically | 3분 | | 5 | What we build together (6 months) | 5분 | | 6 | Studio model proof (Raymind) | 1분 | | 7 | Ask | 1분 | | 8 | Closing line | 30초 | **Narrative arc**: ``` [1] 내가 누구인지 (Humain + 20년) ↓ [2] 그 20년이 가르쳐준 패턴 (4 scales, same transition) ↓ [3] 그 패턴에서 본 진짜 gap (Layer 3 비어 있음) ↓ [4] Solar에게 의미하는 것 (유일한 비대칭 자산) ↓ [5] 같이 어떻게 만들까 (6개월 산출물) ↓ [6] 1인이 어떻게 ship하나 (Raymind studio) ↓ [7] 부탁드리는 것 (ask) ↓ [8] 시간 압박 (12개월 창문) ``` 각 단계가 다음 단계의 *premise*가 됨. Q&A에서 challenge 들어와도 *"위에서 이미 말씀드렸듯이..."*로 대응 가능. --- ## 슬라이드 1 — Opening Hook **비주얼** (전체 화면, 큰 텍스트): ``` I built Humain. Now I'm building this. Here's what I learned. ``` **스피커 스크립트 (2분)**: > 안녕하세요, 조현상입니다. > > 지난 4월까지 사우디 Humain — 사우디 국가 AI 프로젝트의 AI Product & Experience Lead로 있었습니다. 그 전엔 Devsisters에서 쿠키런 IP로 Meta Quest 공간컴퓨팅 제품을 0에서 1로 만들었고, Kakao IX 런던 법인을 0에서 1로 설립했고, Saudi Aramco의 디지털 IPO 대응 UX 표준을 정의했습니다. > > 20년 동안 런던, 서울, 리야드 — 세 나라에서 product 책임자로 일했습니다. > > 오늘 Upstage와 함께 만들고 싶은 6개월은, **그 20년이 저에게 가르쳐준 한 가지 패턴**에 관한 것입니다. > > 그 패턴이 뭔지 — 그리고 왜 Solar에게 의미가 있는지 — 말씀드리겠습니다. **왜 이 opening이 강한가**: - *사우디 국가 AI 안에 있었던 사람* = 즉시 peer-level credibility - *외부 startup founder가 평가해달라*가 아니라 *한 분야 베테랑이 같은 분야 베테랑에게 말한다* 톤 - Upstage 결정자(CTO/VP급)와 같은 height에서 대화 시작 --- ## 슬라이드 2 — 패턴 인식의 배경 (3개국, 20년) **비주얼** (timeline): ``` 2025-26 Humain (Riyadh) — Saudi national AI: product + governance + 운영체계 2021-24 Devsisters (Seoul) — Cookie Run VR, Meta Quest 0→1 2018-21 Kakao IX (London) — 유럽 법인 0→1 설립 + 운영 2017-18 Saudi Aramco — 세계 최대 IPO 대응 디지털 UX 2015-17 AKQA London — Nike/Barclays/Virgin AI recommendation 2009-11 Goldsmiths MFA — Computational Studio Arts 2007-09 CSM (1st Class) — Interaction Design ``` **옆 인용 박스**: > *"Three countries. Four scales: enterprise, national, consumer, studio. Every one of them was 'now everyone is going to be AI.' Most weren't ready. Some were."* **스피커 스크립트 (1분)**: > 이 timeline의 가장 중요한 패턴은 — **4개 다른 scale**에서 **같은 transition**을 봤다는 것입니다. > > Aramco는 enterprise scale에서 디지털 전환. Humain은 national scale에서 AI 전환. 카카오 IX는 consumer scale에서 글로벌 진출. Devsisters는 0→1 scale에서 새 카테고리 진입. > > 매 transition마다 같은 질문이 나왔습니다 — *"우리가 글로벌 stack과 어떻게 다른 포지션을 가질 것인가."* > > 그 답이 매번 같지는 않았지만, 답이 어디에 있는지에 대한 패턴은 있었습니다. --- ## 슬라이드 3 — Humain에서 본 진짜 gap **비주얼** (큰 인용): > *"At Humain, the question was never just 'is our model good enough?'* > *It was always: 'what layer can we own that the big labs don't?'"* **박스 안 4가지 진실**: 1. **Model quality는 빠르게 평준화된다** — GPT-4 ≈ Claude ≈ Gemini ≈ Solar 격차는 6개월마다 좁혀짐 2. **Differentiation은 application layer에서 나온다** — 하지만 모델 회사가 application까지 가면 partner 잃음 (Anthropic dilemma) 3. **사용자의 컨텍스트가 매번 휘발된다** — 가장 큰 unsolved gap 4. **그 gap을 해결하는 protocol/spec은 아직 없다** — 표준 정의 창문이 열려 있음 **스피커 스크립트 (3분)**: > Humain에서 제가 매주 같은 질문을 받았습니다. *"우리 모델은 충분히 좋은가? OpenAI를 따라잡을 수 있나?"* > > 솔직하게 말씀드리면, 그 질문 자체가 잘못된 프레임입니다. 모델 quality는 빠르게 평준화됩니다. 6개월마다 격차가 좁혀집니다. > > 진짜 질문은 — *"우리가 own할 수 있는 layer는 뭔가? 큰 labs가 못 들어오는 layer는 어디인가?"* — 였습니다. > > 패턴이 보이기 시작했습니다. 모델 회사가 application까지 가면 partner ecosystem 잃습니다. ChatGPT의 GPTs가 partner 도구들 다 적이 되게 만들었던 사례, Anthropic이 Claude Code 만들면서 Cursor와 미묘한 관계가 된 사례. > > 그런데 **사용자가 매 세션마다 컨텍스트를 paste해야 하는 문제** — 이건 모델 회사가 풀기 어렵습니다. 풀면 application 영역이고, 안 풀면 사용자가 모든 모델을 동등하게 평가합니다. > > 그 사이에 있는 layer가 비어 있습니다. **사용자가 author하고, AI가 표준 방식으로 읽는 메모리 protocol** — 이게 RSS/OAuth/Open Graph 같은 패턴으로 등장할 layer라고 봤습니다. > > 그래서 Humain을 떠나서 mdfy를 만들기 시작했습니다. **왜 이 슬라이드가 강한가**: - *Humain 안에서 본 진실* = 추측이 아닌 first-hand. 평가위원들이 검증 못 함 - 모델 회사의 dilemma 직접 언급 = Upstage가 암묵적으로 갖고 있는 고민을 명시화. 동의할 수밖에 없음 - *그래서 mdfy를 만들기 시작했다* = mdfy의 origin story가 우연이 아닌 insight-driven --- ## 슬라이드 4 — The Thesis (Memory Protocol Layer) **비주얼** (4-layer 다이어그램): ``` Layer 4 [Application] Notion · Cursor · ChatGPT · Claude.ai Layer 3 [Memory] ← ← ← memory.wiki가 지향하는 layer Layer 2 [Model] GPT · Claude · Solar · Gemini · Mistral Layer 1 [Compute] Nvidia · TPU · cloud ``` **오른쪽 박스**: > *"Layer 3는 비어 있다. 어느 모델 회사도 못 들어가는 자리. 어느 application 회사도 못 정의하는 자리.* > *그래서 startup이 이걸 만들어야 한다."* **스피커 스크립트 (2분)**: > 정리하면 — AI stack은 4 layer입니다. Layer 1, 2는 큰 labs가 차지. Layer 4는 application 회사들이 차지. > > **Layer 3 — 사용자 메모리 protocol — 은 비어 있습니다.** 모델 회사가 들어가면 application 영역 침범, application 회사가 정의하면 다른 application들이 안 따라줌. > > neutral한 startup이 표준을 정의해야 하는 자리입니다. > > RSS가 그랬고, OAuth가 그랬고, Open Graph가 그랬습니다. 매번 작은 third party가 layer를 정의했고, 모델/플랫폼 회사들은 그걸 지원하는 쪽으로 갔습니다. --- ## 슬라이드 5 — Why Solar Specifically **비주얼** (비대칭 매트릭스): | Position | OpenAI/Anthropic | Solar | |---|---|---| | 카테고리 1위 모델 | ✅ | ✗ (자본 비대칭) | | **메모리-friendly 첫 번째 LLM** | ✗ (closed protocol 가질 가능성) | **✅ 가능** | | **한국 stack 정체성** | ✗ | **✅ 이미 보유** | | **Startup partnership 속도** | △ (느림) | **✅ 빠른 의사결정** | **오른쪽 박스**: > *"이 4개의 ✅ 조합은 — 6-12개월 안에만 — Solar 외에는 가질 수 없습니다."* **스피커 스크립트 (3분)**: > 이 표를 만들 때 솔직히 말씀드리면 — *우리가 어디서 도와줄 수 있나*를 찾고 있었습니다. > > 카테고리 1위 모델 자리 — OpenAI/Anthropic이 자본으로 이길 게임. Solar가 거기로 가는 건 비효율. > > **메모리-friendly 첫 번째 LLM** — 이 자리는 다릅니다. OpenAI/Anthropic이 자기 메모리 protocol을 만들 가능성 높지만, 그건 closed가 됩니다. memory.wiki 같은 open protocol을 가장 먼저 native로 인지하는 자리는 Anthropic이 그것 만드는 순간 사라집니다. > > 그 자리는 **6-12개월의 창문**입니다. 그 안에 첫 번째 partner가 되는 LLM이 그 자리를 가집니다. > > Solar가 이 자리를 유일하게 빠르게 가질 수 있는 위치에 있습니다. 한국 stack 정체성, 빠른 의사결정, Korean origin product와의 natural alignment — 모든 게 정합합니다. --- ## 슬라이드 6 — What We Build Together (6 months) **비주얼** (시기별 산출물): | 시기 | Joint Build | 산출물 | |---|---|---| | **7-8월** | 메모리 R&D 로드맵 공동 정의 | Solar 컨텍스트 윈도우 + memory.wiki URL spec mapping | | **9-10월** | Solar embeddings 기반 retrieval, Document Parse → Bundle 자동 변환 | Solar adapter v1 | | **11-12월** | Upstage 엔터프라이즈 PoC, 데모데이 | 운영 메트릭 + R&D 후속 + spec v1 공개 | **3 핵심 deliverables**: 1. **Solar adapter for memory.wiki** — first reference implementation 2. **Document Parse → Bundle 파이프라인** — 자동 변환 3. **`memory.wiki/spec` "Recognized by Solar" 표기** — 12월 공식 announce **스피커 스크립트 (5분)**: > 구체적으로 6개월에 무엇을 함께 만들지 — 세 축입니다. > > 첫째, **Solar adapter**입니다. memory.wiki URL을 paste하면 Solar agent가 native로 인지하고 컨텍스트로 사용하는 표준 인터페이스. 이게 첫 reference implementation이 됩니다. > > 둘째, **Document Parse 자동 변환 파이프라인**. Upstage 엔터프라이즈 고객의 문서가 Parse 거쳐 자동으로 memory.wiki bundle이 되고, 즉시 Solar agent의 컨텍스트가 됩니다. 사용자가 manual로 정리 안 해도 됩니다. > > 셋째 — 이게 가장 중요한데 — **memory.wiki/spec 페이지에 "Recognized by Solar" 표기**입니다. 우리가 12월에 spec을 정식 공개할 때 Solar가 첫 partner로 명시됩니다. 그 시점에 다음 LLM 도구들 — Cursor, Anthropic, OpenAI Apps SDK — 와 협상 시작할 때 *"이미 Solar가 가고 있다"*는 시그널을 갖고 시작하게 됩니다. > > 6개월 산출물의 진짜 가치는 PoC 1-2건 자체가 아니라 **카테고리 형성기에 Solar가 시조 자리를 잡는 것**입니다. --- ## 슬라이드 7 — Studio Model (Raymind.AI) **비주얼**: ``` Raymind.AI — Independent AI Product Studio ├── mdfy.app — AI 메모리 인프라 (이번 사업) ├── pastlife.app — AI consumer product ├── jolong.ai — AI tool └── screenstyler.ai — AI tool ``` **박스**: > *"4 products in market. 1 founder + AI co-founder. 7 channels for mdfy alone in 2 months."* > > *"This is the model that lets a Humain-trained operator ship at startup speed."* **스피커 스크립트 (1분)**: > 마지막으로 — 어떻게 이게 가능한가에 대해. > > Raymind.AI는 독립 AI product studio입니다. mdfy.app 외에도 pastlife.app, jolong.ai, screenstyler.ai — 시장에 출시된 4개 제품을 동시 운영하고 있습니다. > > 1인 founder + AI co-founder 모델로. mdfy 7-channel을 2개월에 ship한 것은 이 모델의 증명입니다. > > 큰 organization에서 6개월에 못 ship한 일을 1인이 2개월에 가능한 시점에 와있습니다. 그 시점을 full-time으로 활용하는 사람이 지금 거의 없습니다. 본 사업 6개월은 그 cadence를 **Upstage와의 공동 R&D에 사용할 시간**입니다. --- ## 슬라이드 8 — Ask **Upstage에 부탁드리는 것**: 1. **Solar LLM API + embedding 접근** (R&D 환경, production-grade 모델) 2. **Document Parse API 접근** + 출력 포맷 spec 공유 3. **엔터프라이즈 검증 환경 1-2건** — 실제 도메인 문서로 PoC 4. **공개 announce 협력** — 12월 spec 공개 시 Solar가 첫 partner로 announce 동의 **우리가 제공하는 것**: 1. **memory.wiki 인프라** — Bundle 구조, 7-channel surface, 사용자 채널 2. **mdcore Rust 엔진 통합** — Document Parse 출력 처리 최적화 3. **공동 R&D 시간 의무화** — 매주 정기 기술 미팅, 양측 합의된 spec 진화 4. **공개 reference 명시** — 모든 마케팅에서 "Solar-powered" 표기 **스피커 스크립트 (1분)**: > 구체적으로 부탁드리는 것 4가지, 우리가 제공하는 것 4가지입니다. > > 가장 중요한 비대칭 자산 교환은 마지막 항목들 — Upstage는 12월 announce 협력, 우리는 모든 마케팅 reference. **그게 동맹의 시그널**이고, 단순 vendor 계약과 다른 점입니다. > > 질문 받겠습니다. --- ## 슬라이드 9 — Closing Line **비주얼** (전체 화면, 단 한 문장): ``` The window for defining the memory protocol of the AI era is open now. It closes in 12 months. Let's define it together. ``` **스피커 스크립트 (30초)**: > 마지막으로 한 문장. > > **AI 시대 메모리 protocol을 정의하는 창문이 지금 열려 있습니다. 12개월 후엔 닫힙니다. 같이 정의합시다.** --- ## 예상 Q&A ### Q1: "왜 우리가 (Upstage가) memory.wiki spec을 따라야 하나? 우리 자체 spec을 만들 수도 있는데." **답변 전략**: > 맞습니다. 그게 가능합니다. 다만 두 가지 생각해보실 점이 있어요. > > 첫째 — **모델 회사가 application layer까지 통제하는 건 partner ecosystem을 좁힙니다.** Anthropic이 Claude.ai 만들었지만 partner LLM 도구들이 그것 때문에 OpenAI로 옮긴 사례 있습니다. Solar 자체 메모리 spec은 Notion이 메모리 안 받게 만듭니다. > > 둘째 — **표준은 first mover가 정의합니다.** Solar가 memory.wiki spec을 공동 설계하면 그 spec이 사실상 Solar에 최적화됩니다. 나중에 OpenAI/Anthropic이 따라오면 Solar의 정의를 따르는 것이 됩니다. ### Q2: "1인 팀에 6개월 사업 맡기기 risky하지 않나?" **답변 전략**: > 정직한 우려입니다. 두 가지 답이 있습니다. > > 첫째 — **7개 채널을 2개월에 ship한 게 risk 증명이 아니라 capability 증명입니다.** 큰 팀이 6개월에 ship하지 못한 일을 1인 + AI가 가능한 시점에 와 있습니다. > > 둘째 — 본 사업으로 **한국 법인 설립 + 엔지니어 1-2명 채용**이 7-8월 일정에 포함됩니다. 6개월 끝나는 시점에 3-4명 한국 팀이 됩니다. ### Q3: "Mem.ai, Notion AI 같은 기존 경쟁자랑 어떻게 다른가?" **답변 전략**: > 이게 **fundamental vs incremental** 질문입니다. > > - Mem.ai는 *AI가 사용자에서 메모리 추출* — 정반대 방향입니다. 사용자 소유 아닙니다. > - Notion AI는 *Notion 안에서만* 작동. 다른 AI 도구가 Notion 컨텐츠를 읽으려면 export하거나 API 통합해야 합니다. > - mdfy/memory.wiki는 *사용자가 author하고 URL로 deploy* — RSS 같은 layer입니다. **카테고리 자체가 다릅니다.** ### Q4: "Upstage 입장에서 이 partnership의 ROI는?" **답변 전략**: > 세 가지 측정 가능한 결과를 6개월 안에 만들 수 있다고 봅니다. > > 1. **Reference customer 1-2건** — Upstage 엔터프라이즈 고객이 Solar + memory.wiki 통합으로 새 use case 검증 > 2. **카테고리 visibility** — `memory.wiki/spec`에 Solar 첫 partner 명시 → 다음 6-12개월에 다른 LLM 도구가 spec 채택할 때마다 Solar가 시조 위치 > 3. **R&D 인사이트** — 사용자 메모리 layer에서 어떤 retrieval/embedding 패턴이 production에서 작동하는지 real data 확보. Solar 모델 후속 개발에 input ### Q5: "K-Tech 사업비 2억으로 충분한가?" **답변 전략**: > 충분합니다. 본 사업비는 인건비 + 인프라 + R&D 비용이고, 우리가 가져오는 **기존 7-channel infrastructure가 따로 2-3억 가치의 sunk cost**입니다. > > 본 사업비는 공동 R&D 시간을 사는 것이고, infrastructure는 이미 ready 상태입니다. --- ## 톤 가이드 ### ❌ 절대 하지 말 것 - *"저는 1인 founder입니다"* (defensive) - *"vision driven"* 같은 마케팅 단어 - Upstage product 칭찬 (그쪽이 만든 거, sycophancy 느낌) - *"파트너십 통해 win-win"* 같은 식상한 표현 ### ✅ 항상 할 것 - *"Humain에서 봤을 때..."*, *"Aramco에서는..."* — first-hand evidence - *"솔직히 말씀드리면..."* — radical honesty 톤 - 숫자로 말하기 (2개월에 7-channel, 4 products simultaneous) - Upstage가 이미 알지만 말 안 하는 것을 명시화 (Anthropic dilemma 같은) - **peer-to-peer 톤** — 평가받는 게 아니라 동맹 협상하는 자세 --- ## 발표 직전 체크리스트 - [ ] 슬라이드 1-9 인쇄/태블릿에 backup - [ ] **mdfy.app live demo** 미리 열어두기 — Cursor/Claude에 mdfy URL paste 시연 - [ ] 7-channel 각각 screenshot 준비 - [ ] mdcore 엔진 GitHub 리포 url 준비 (MIT 라이선스 증거) - [ ] 결정자가 누가 올지 사전 파악 (CTO? VP R&D? BD?) → 톤 조절 - [ ] Upstage Solar 최근 announce 1-2개 미리 읽기 (대화에 자연스럽게 reference) - [ ] **raymind.ai/cv 미팅 1-2일 전에 calendar invite에 첨부** (사전 인지 형성) --- ## Founder 배경 — 발표 중 자연스럽게 끌어들이기 발표 도중 첫 사례를 *"제가 Humain에서..."*, *"카카오 IX 시절..."*, *"Aramco IPO 대응할 때..."* 식으로 자연스럽게 끌어들이면 *credentials를 따로 자랑할 필요 없음*. 이미 사례 안에 녹아 있음. | 회사 | 시기 | 사용할 수 있는 thread | |---|---|---| | Humain (Saudi 국가 AI) | 2025-26 | Application layer dilemma, 모델 회사가 풀 수 없는 gap | | Devsisters (쿠키런 VR) | 2021-24 | 0→1 새 카테고리 진입, Meta 같은 platform partnership | | Kakao IX UK | 2018-21 | 0→1 해외 법인 설립, 글로벌 확장 실행력 | | Saudi Aramco | 2017-18 | Enterprise scale 디지털 표준, 거대 조직 안에서의 product 거버넌스 | | AKQA London | 2015-17 | AI recommendation 시스템 (Nike/Barclays/Virgin) | 학력 reference (필요시): - Goldsmiths MFA Computational Studio Arts (Pass with Merit) - Central Saint Martins BA 1st Class Honours (Interaction Design) --- ## 미팅 후 남길 1-Pager (handoff) ``` Hyunsang Cho · Raymind.AI hi@raymind.ai · raymind.ai/cv Memory Protocol Partnership Proposal The opportunity: - Layer 3 (user memory protocol) is structurally empty - 6-12 month window before OpenAI/Anthropic ship closed alternatives - Solar can claim "first memory-friendly LLM" position — only achievable now, in partnership with neutral spec owner What we build together in 6 months: 1. Solar adapter for memory.wiki (first reference implementation) 2. Document Parse → Bundle automatic conversion pipeline 3. memory.wiki/spec public release with "Recognized by Solar" What we ask: - Solar API + embeddings access - Document Parse API + output spec - Enterprise validation environment (1-2 deployments) - Co-announce in December spec release What we bring: - memory.wiki infrastructure (7 channels, MIT-licensed Rust engine) - 1 founder + AI co-founder operating model (mdfy 7-channel ship in 2 months as proof) - All marketing references will cite "Solar-powered" Next step: - 30-min R&D sync to define mapping between Solar context window and memory.wiki URL spec - Target: schedule by end of next week ``` --- ## 발표 후 24시간 follow-up 미팅 후 24시간 안에 보낼 이메일 템플릿: > Subject: Following up — Memory Protocol partnership next steps > > [Upstage 결정자 이름] 님, > > 오늘 발표 자리 감사했습니다. > > 미팅 중 논의된 [구체적 한 가지 — Q&A에서 나온 토픽 등] 에 대해 추가로 정리한 자료를 첨부합니다: > > - 발표 슬라이드 (PDF) > - 1-pager partnership summary > - mdfy.app live demo URL: [실제 mdfy URL 1개] > - raymind.ai/cv (필요시 참고) > > 다음 단계로 **30-min R&D sync**를 제안드립니다. 의제는 Solar context window와 memory.wiki URL spec mapping의 초안 합의입니다. > > 다음 주 가능한 시간 2-3개 알려주시면 맞춰서 조정하겠습니다. > > 감사합니다. > 조현상 · Raymind.AI --- ## 추가 작업 옵션 필요시 작업할 수 있는 변형: - [ ] **영문 버전** — Upstage 글로벌 팀 참석 가능성 대비 - [ ] **5분 단축 버전** — 시간 빠듯할 때 fallback - [ ] **30분 확장 버전** — 질문 많을 경우 backup - [ ] **슬라이드 디자인 톤 가이드** — 시각 요소 추천 (Upstage 컬러와 mdfy 컬러 어떻게 같이) - [ ] **결정자별 톤 조정** — CTO 참석 vs BD 참석 시 강조점 차이 ## Facts - Memory protocol layer (Layer 3) is currently undefined between models and applications - Upstage Solar is positioned to be the first LLM natively supporting open memory specification within 6-12 month window - Six-month joint build deliverables include Solar adapter, document parsing pipeline, and public spec recognition by December - Model quality differentiates rapidly while protocol standardization (like RSS, OAuth, Open Graph) creates defensible positioning - Founder has shipped 4 products simultaneously with 1-person team including 7 channels for mdfy in 2 months --- id: 37MqmCM- title: Memory.Wiki v8 — UI & Brand Direction url: https://memory.wiki/37MqmCM- updated: 2026-05-22T17:03:34.942004+00:00 --- # Memory.Wiki v8 — UI & Brand Direction > Companion to v8 Plan ([memory.wiki/SKaY7VJP](https://memory.wiki/SKaY7VJP)). > Brand Phase 1 (Week 1-2) input. Decision-oriented, not exploratory. > **Captured 2026-05-23.** --- # 1. 진단 — 왜 현재 UI 가 올드스쿨 느낌인가 크게 5 가지 원인: ## A. "2023 Dev Tool" 시각 언어 - Dark zinc + 오렌지 accent + Geist sans - 단순 border + card 레이아웃 - 모든 모서리가 똑같은 radius - Vercel dashboard / Linear 2023 / Notion 2022 와 시각적으로 구분 안 됨 → "Linear 처럼 보이는데 Linear 아닌 product" 의 곤란. 2026 의 user 는 이미 이 미감에 saturated. ## B. Motion 부재 - Page transitions 없음 또는 default Next.js - Card hover 가 단순 background 변화 - Loading state 가 spinner 또는 skeleton (둘 다 cliché) - AI 가 생성한 결과가 그냥 갑자기 나타남 (streaming feel 없음) - 클릭 / drag 의 tactile feedback 없음 → 2026 의 user 는 streaming, 자연스러운 진입/퇴장, depth animation 에 익숙. 우리 UI 는 정적. ## C. 균질한 typography - Heading / body 모두 Geist sans - size scale 만 다름, character 없음 - code 만 Geist Mono - 모든 페이지가 같은 폰트 weight 분포 → Roam, Linear, Notion 셋 다 비슷. 식별 가능한 typographic identity 없음. ## D. 색이 너무 정직함 - `var(--accent)` = #fb923c orange - `var(--background)` = #09090b near-black - `var(--text-primary)` = #fafafa white - gradient 거의 없음 (단조) - 한 화면에 색이 2-3 개만 (배경/텍스트/accent) → 2026 의 trend 는 색이 더 풍부 + 더 organic. Apple Liquid Glass, Granola 의 subtle gradient, Arc 의 color spaces. ## E. 모든 UI 가 같은 trust level - 사용자가 쓴 doc 과 AI 가 만든 doc 이 시각적으로 같음 - 원본과 AI metadata 가 같은 카드 안에 평등하게 배치 - "이건 너 자신" / "이건 AI 가 도와준 것" 의 visual distinction 없음 → v8 의 dual-layer 철학 (original sacred, AI assistive) 이 UI 에서 안 보임. 이게 v8 의 가장 큰 visual 작업. --- # 2. 가야 할 방향 — "2026 AI-native warm" 세 가지 단어로 lock: > **Warm. Dimensional. AI-native.** 각 단어가 무엇을 의미하는지: ## Warm (정서적) Memory 는 차가운 데이터 저장소가 아님. 따뜻한 인격적 layer. - 색: 단조 dark 대신 약간 brown-tinted, 오렌지 accent 가 진짜로 빛나는 base - 폰트: serif 또는 humanist sans 의 character 있는 display - 여백: 더 generous, 빽빽한 dashboard 느낌 탈피 - 사진 / 일러스트: empty state 가 generic SVG 대신 인격적 비교: Granola 의 calm warm vs Linear 의 cold sharp. 우리는 **Granola 쪽**. ## Dimensional (공간적) 평면 카드 대신 깊이가 있는 surface. 2026 의 OS-level trend (Liquid Glass) 와 일치. - Glassy / blurred backgrounds (특히 modal, popover) - 살짝 elevation 있는 카드 (shadow + subtle border) - 호버 시 lift / scale 미세하게 - Parallax-ish scroll behavior (가벼운) - AI 가 생성한 element 는 깊이가 살짝 다름 (떠 있는 느낌) 비교: Apple Notes 2026 의 글래스 톤 vs 우리 현재의 flat dark card. ## AI-native (시간적) AI 가 product 의 핵심 actor 라는 게 매 frame 에서 보임. - Streaming text (AI summary 가 typing 효과로 나타남) - Generative loading (스피너 대신 "AI thinking" 의 시각화) - Subtle pulse / glow 가 AI-active element 에 - Auto-organize 가 진행 중일 때 "백그라운드 활동" 의 표시 (방해되지 않게) - AI vs user 의 시각적 distinction (border style, color tint, badge) 비교: Granola 의 "AI is working" 의 calm wave vs 우리의 무표정 spinner. --- # 3. 구체적 결정 — 5 영역 ## 3.1 Color system 현재: ``` --background: #09090b (zinc 950) --surface: #18181b (zinc 900) --text-primary: #fafafa (zinc 50) --accent: #fb923c (orange 400) --border: #27272a (zinc 800) ``` v8 변경: ``` --background: #0d0b08 (warm-black, 살짝 brown 빛) --surface: #1a1714 (warm zinc, 따뜻한 dark) --surface-elevated: #232019 (1단계 위, modal/popover) --text-primary: #faf5ed (warm white, 약간 cream) --text-secondary: #b8b0a0 (warm muted) --accent: #fb923c (그대로 — brand 핵심) --accent-glow: #fb923c1a (10% 투명 오렌지, glow 용) --ai-tint: #c4b5fd (light purple, AI 활동 표시용) --border: #2d2823 (warm border) --border-glass: #ffffff14 (8% white, glass effect) ``` 핵심 변화: **모든 회색이 warm-tinted**. neutral zinc 아니라 살짝 brown. Memory 의 "오래된 책" 정서. AI tint 신규: AI-generated element 에 light purple 약간. 사용자 영역 (orange + warm) 과 시각적 차별. ## 3.2 Typography 현재: Geist sans (모든 곳) v8: - **Display heading** (h1, hero text): "**Instrument Serif**" 또는 "**Editorial New**" — character 있는 serif - **Body / UI**: Geist sans 그대로 — 가독성 + brand 유지 - **Mono / code**: JetBrains Mono 또는 Geist Mono 유지 - **Numbers / data**: Tabular variant Geist (`font-variant-numeric: tabular-nums`) Why serif heading: AI/dev tool 들이 다 sans 만 씀. Serif 가 differentiation + literary warm 느낌. Granola, Mymind 가 이 방향. Linear / Vercel 과 즉시 구분. → Phase 1 (Week 1-2) 에 font 선택 final lock. 라이센스 + load weight 검토 필요. ## 3.3 Motion / animation 5 가지 micro-interaction lock: | Interaction | Behavior | | --- | --- | | **Page enter** | content slides up 8px + fades in over 220ms cubic-bezier(0.16, 1, 0.3, 1) | | **Card hover** | translateY(-1px) + shadow lift, 120ms | | **AI element appearance** | scale 0.96 → 1.0 + fade, 320ms, subtle purple glow pulse 1x | | **Streaming AI text** | char-by-char appear, 18ms per token (typing feel) | | **Save / capture confirm** | green checkmark scale-bounce, then fade after 1.4s | 표준 cubic-bezier: - `entrance`: cubic-bezier(0.16, 1, 0.3, 1) — strong overshoot-less ease-out - `exit`: cubic-bezier(0.4, 0, 1, 1) — fast departure - `tactile`: cubic-bezier(0.2, 0, 0, 1) — natural snap durations: 120ms (tactile), 220ms (transition), 320ms (entrance), 1.4s (success linger) ## 3.4 Layout & spacing 현재: 8px grid (Tailwind 기본) v8: - **Layout 단위**: 4px micro grid + 8px macro grid 병행 - **Content max-width**: 720px (현재 ~768) — 약간 좁아지면 reading 더 친밀 - **Asymmetric whitespace**: 좌측 narrow sidebar (288px), 우측 generous reading area - **Vertical rhythm**: 1.6 leading body, 1.15 leading display heading Modal / popover: - `backdrop-filter: blur(12px) saturate(140%)` (glass) - `background: var(--surface-elevated)` + 8% white border - Inner padding 24px (현재 16px) — breathing room ## 3.5 AI vs User visual distinction **Dual-layer 의 핵심**. 두 종류 element 의 visual rule: ### User-written / User-owned - Border: solid `var(--border)` - Background: `var(--surface)` - Avatar: 사용자 프로필 아이콘 - Badge: 없음 (default) - Hover: subtle lift ### AI-generated / AI-managed - Border: solid `var(--border-glass)` with subtle `var(--ai-tint)` outer glow (1px) - Background: `var(--surface)` + 2% AI-tint overlay - Avatar: `✨` Sparkle icon + agent name (e.g. "Claude") - Badge: `Generated by Memory.Wiki AI` (작은 chip, top-right) - Hover: lift + tint glow stronger ### Edited-by-you (was AI) - Border: solid `var(--border)` (사용자 영역으로 변환됨) - Badge: `🪶 Edited by you · originally AI` (작은 footnote) - Hover: 사용자 영역과 동일 → 한눈에 "내가 쓴 것" vs "AI 가 도와준 것" vs "edited" 구분. --- # 4. 로고 방향 현재: "Memory" (orange) + ".Wiki" (white/primary) 두-톤 wordmark, no symbol. ## 4.1 평가 **잘된 것**: - 도메인 = 브랜드. URL 의 시각화로 직관. - 두 톤이 분명 (오렌지 / 흰색). 무채색 회피. - 텍스트 기반 → scalable, accessible. **문제**: - **아이콘 없음**. 앱 아이콘, favicon, 작은 surface 에서 wordmark 가 안 읽힘. - character 가 약함. Geist 같은 generic sans 의 변형. - 한국어 surface 에서 "Memory.Wiki" 만 떠 있으면 약간 cold. - 모바일 앱 아이콘 자리에 wordmark 못 씀 (정사각형 비율 안 맞음). ## 4.2 V8 방향 — 두 layer 시스템 **Layer 1: Symbol (신규)** - 정사각형, app icon / favicon / 작은 곳 모두 사용 - 후보 (시각 brainstorm): - `M` 또는 `M.W` letter mark with weight contrast - 오버랩되는 두 사각형 (memory + wiki = layered) - `@` 의 stylized 변형 (v8 의 @username URL 과 연결) - 책갈피 / bookmark 형태 - 무한 / spiral (memory continuity) - URL 괄호 `[ ]` 또는 슬래시 `/` motif **Layer 2: Wordmark (현재 + 살짝 polish)** - 두-톤 (orange Memory + warm white .Wiki) 유지 - 단 폰트 weight / spacing 재검토 — 현재 Geist 800 너무 generic - 후보: Custom letterspacing, 살짝 condensed, 또는 다른 sans (Söhne, Greycliff CF) ## 4.3 추천 방향 — Symbol 후보 3 내가 가장 강하다고 보는 3 가지 symbol 방향: ### Option A: Layered M - "M" 두 개가 살짝 어긋나게 겹침 (orange + warm white) - "Memory" 의 layered identity 시각화 - 비교 reference: Notion 의 N, Linear 의 L - App icon 으로 적합 — 정사각형, scale OK - "Memory.Wiki" 의 M 을 직접 차용 → wordmark 와 자연 연결 ### Option B: @ symbol stylized - @ 의 inner spiral 을 더 강조한 mark - v8 의 `@username` URL 패턴과 직접 연결 - Identity layer 의 시각적 표현 - 비교 reference: Twitter 의 bird, Mastodon 의 elephant, Bluesky 의 butterfly - 위험: @ 는 이미 social media 가 점유 → 차별 어려움 ### Option C: Bookmark / sliver - 책갈피 모양의 minimal mark, 한쪽 끝이 살짝 휘어짐 - "기억한다" 의 가장 오래된 메타포 (책갈피) - 무한히 미니멀 가능 → favicon 16x16 에서도 작동 - AI 기술이 아닌 "warmth + memory" 강조 - 비교 reference: Pocket 의 P-with-tag, Raindrop 의 drop → 내 권고: **Option A (Layered M)**. 이유: - Wordmark 의 "M" 을 직접 차용 → brand consistency 최강 - App icon 으로 매우 적합 (정사각형, 두 색 분리 가능) - 추상이지만 의미 있음 (memory 의 첫 글자 + layered) - favicon 16x16 부터 1024 까지 다 작동 - "@ symbol" 의 social media 함정 회피 - 책갈피보다 더 "data + AI" 시대적 ## 4.4 Wordmark polish 현재 Geist 800 → 평이함. 후보: | 폰트 후보 | tone | trade-off | | --- | --- | --- | | **Söhne Buch / Halbfett** | Swiss modernist, premium feel | 라이센스 비용 | | **Greycliff CF** | 친근 + clean, geometric | 약간 generic 가능 | | **JetBrains Display** | 개발자 친화, 우리 ICP 와 일치 | technical 느낌 | | **Geist 800 + custom kerning** | 무료, 현재 유지 | improvement 폭 적음 | → Phase 1 Week 2 에 3 폰트로 mock 만들어서 비교 후 final lock. --- # 5. 즉시 적용 — Brand Phase 1 의 첫 deliverable Week 1-2 안에 production-ready 로 만들 것: 1. **Design tokens 파일** (`apps/web/src/styles/tokens.css`) - 위 color 시스템 + spacing + typography scale + motion curves - Tailwind config 에 mirror 2. **Component primitive 5 개** - `<Button>` (3 variant: primary, secondary, ghost) - `<Card>` (2 variant: user-owned, AI-generated) - `<Badge>` (status: AI, edited, locked) - `<Modal>` (glass backdrop, elevated surface) - `<TimelineCard>` (timeline 의 단일 entry) 3. **Symbol Option A prototype** - Figma 또는 raw SVG - 4 size (16, 24, 64, 1024) - Light + dark 변종 - Animated variant (logo entrance, subtle pulse) 4. **Motion playground** - Storybook 또는 단일 page 에서 5 micro-interaction 다 실행 - 디자인 reviewer (founder) 가 feel 검토 5. **Brand voice doc 1-pager** - product copy 의 tone: direct, calm, slightly playful - never: enterprise-y, corporate, overly formal - examples: "Saved." vs "Your document has been successfully saved." → 전자 6. **Type & spacing reference page** - 1 페이지에 모든 heading + body + UI text 의 visual hierarchy - 다른 페이지 만들 때 reference --- # 6. Brand Phase 2 — Final polish (Week 17) Phase 1 이 시스템 셋업, Phase 2 가 마무리: - Marketing assets (social cards, demo video, GIF) - Landing page final visual - Onboarding 일러스트 (4-5 장면, custom) - App Store / Play Store screenshots (8 surfaces × 5 screenshots = 40 장) - Brand guideline PDF (외부 reference 용) - Audio identity (선택, app launch sound) --- # 7. Anti-patterns — 절대 안 할 것 | 함정 | 왜 안 됨 | | --- | --- | | 무지개 그라데이션 (모든 AI startup 의 cliché) | 이미 saturated, 우리 brand 가 사라짐 | | 보라색 (purple) 을 primary 로 | 오렌지가 brand 정체성. purple 은 AI tint 로만 사용 | | 3D 일러스트 (Spline/Blender abstract) | 2024 trend, 이미 cringe | | "AI" 가 product 이름 어디든 노출 | 우리 thesis 는 "AI 를 위한 layer", "AI product 자체" 아님 | | 다크/라이트 모드 전환 토글을 hero CTA 자리에 | UX 의 가장 흔한 게으른 결정 | | 매 화면에 logo 반복 | 모바일 app icon = logo, 나머지 화면은 content first | | Generic empty state SVG (Lottie 라이브러리) | 인격 없음. 매 empty state 가 product 의 voice 보여줄 기회 | | 단색 illustration 이 인격적인 척 | 일러스트는 인격 아니면 안 함, 차라리 typographic empty state | --- # 8. 결정 매트릭스 | 항목 | 결정 | | --- | --- | | 시각 언어 | Warm + Dimensional + AI-native | | Color base | Warm-tinted dark, brown undertone | | AI distinction | Subtle purple tint (`--ai-tint`) + sparkle badge | | Heading font | Serif display (Instrument Serif 또는 Editorial New) — Phase 1 final | | Body font | Geist sans 그대로 | | Motion language | 4 cubic-bezier curves + 4 duration scales | | Logo symbol | **Option A — Layered M** (Phase 1 prototype 후 final) | | Logo wordmark | Söhne / Greycliff / Geist+custom 중 Phase 1 mock 비교 | | Glass / depth | Modal + popover 에 backdrop-filter blur | | 일러스트 | 인격적 custom 만, generic SVG library 금지 | | Empty states | Typographic + brand voice — copy 자체가 UI | | AI streaming | text typing 18ms/token, calm purple glow pulse | --- # 9. 다음 step (action) 1. 이 doc Hyunsang 검토 + 미세 수정 2. Phase 1 Week 1 시작 - design tokens 파일 - serif font 3 후보 mock - Symbol Option A 3-4 variant Figma 3. Week 2 review + lock 4. Week 3+ 부터 feature 작업이 design system 위에 build --- > **한 줄 정리** > 현재 UI 는 2023 dev tool 의 표준 좋은 버전. v8 는 2026 AI-native + warm 정서로 reposition. > 핵심 lever: warm-tinted color + serif display + calm motion + AI tint + Layered M symbol. --- *Companion to v8 Plan ([memory.wiki/SKaY7VJP](https://memory.wiki/SKaY7VJP))* *Author: Hyunsang × Claude pair* *Brand Phase 1: Week 1-2 of v8* *Brand Phase 2: Week 17 of v8* --- id: 0j1OUQh6 title: 기능적으로 정말 차별하고 싶어. url: https://memory.wiki/0j1OUQh6 updated: 2026-05-22T11:41:39.601+00:00 --- # 기능적으로 정말 차별하고 싶어. > Captured from ChatGPT on 5/22/2026 --- ## User 기능적으로 정말 차별하고 싶어. --- ## ChatGPT 기능 차별화는 “기능 개수”가 아니라 **AI가 실제로 더 잘 작동하는가**로 결정돼. 지금 시장의 대부분은: - 노트 앱 - RAG wrapper - vector DB UI - graph visualization - MCP connector catalog 이 중 하나야. 근데 memory.wiki가 진짜 커지려면 아래 중 최소 하나를 독점적으로 잘해야 해: --- # 1. “AI-optimized context packaging” 이게 가장 중요하다. 지금 세상은 문서가 인간용으로 작성돼 있음. 근데 LLM은: - context window 제한 있음 - relevance ranking imperfect - stale context 문제 있음 - narrative continuity 약함 - intent-aware compression 못함 즉 AI는 “raw docs”를 잘 못 먹는다. 그래서 memory.wiki의 핵심은: > 저장이 아니라 “AI consumption optimization” 이어야 함. --- # 여기서 진짜 차별 기능이 나온다 ## A. Intent-Adaptive Bundles 이건 매우 강력해질 수 있음. 사용자가 같은 graph를 갖고 있어도: - 투자자 미팅용 - 코드 작업용 - 논문 작성용 - 법률 검토용 - onboarding용 context가 달라야 함. 그러니까: ``` memory.wiki/project-x?intent=coding memory.wiki/project-x?intent=fundraising memory.wiki/project-x?intent=research ``` 를 만들면, AI가 읽는 bundle이 달라짐. 이건 단순 retrieval이 아님. 이건: - context hierarchy - relevance shaping - narrative ordering - token budgeting - contradiction filtering 을 포함함. 여기서부터 “AI OS” 느낌이 난다. --- # 2. Temporal Memory 이건 거의 아무도 제대로 안 함. LLM context의 가장 큰 문제 중 하나: > 시간이 없다. AI는: - 무엇이 최신인지 - 어떤 결정이 deprecated됐는지 - 왜 바뀌었는지 를 잘 모른다. memory.wiki는 graph edge에: - valid_from - valid_to - supersedes - confidence - source 를 넣을 수 있음. 그러면: > “현재 기준으로만 설명해줘” “지난달 기준 전략 보여줘” “왜 architecture 바뀌었는지 설명해줘” 가 가능해짐. 이건 단순 note app이 절대 못 한다. --- # 3. Contradiction-aware memory 이거 진짜 중요하다. 대부분 RAG는: - 모든 걸 retrieval함 - conflicting info 같이 줌 - hallucination 증가 근데 실제 인간 memory는: - old belief - discarded idea - current truth 를 구분한다. memory.wiki는: - archived beliefs - rejected decisions - experimental hypotheses 를 구조적으로 저장 가능해야 함. 예: ``` This architecture was abandoned because: - scaling issue - auth complexity - token cost ``` AI가 reasoning quality가 확 올라간다. --- # 4. AI-facing representation layer 이건 진짜 중요. 인간용 markdown ≠ AI optimal format memory.wiki는 내부적으로: - graph - entity map - semantic edges - episodic logs - summaries - canonical definitions 를 저장하고, AI에겐 dynamic compiled view를 보여줘야 함. 즉: ``` Human View AI View Condensed View Chronological View Decision View ``` 가 다 달라야 함. 이건 그냥 wiki가 아니다. --- # 5. “Canonical Self” 이건 매우 강력한 방향 가능성 있음. 지금 AI의 큰 문제: > 매 세션마다 사용자가 다시 자신을 설명함. memory.wiki는: ``` /about /current-focus /preferences /writing-style /project-state /decision-history ``` 같은 canonical identity layer를 만들 수 있음. 그리고 모든 AI가 이것을 참조. 이건: - persistent persona - working memory - epistemic continuity 를 제공한다. 엄청 큰 시장이다. --- # 6. Agent-ready Memory 진짜 장기적으로 가장 중요. 미래 AI는: - 단일 chat app이 아니라 - 여러 specialized agents ecosystem 으로 갈 가능성이 높다. 그러면 필요한 건: > shared memory substrate 다. memory.wiki가: - agent-readable - structured - permissioned - streamable - update-aware memory layer가 되면, AI ecosystem infra가 된다. 여기서 진짜 커진다. --- # 7. 너희가 반드시 피해야 할 함정 ## “그래프 시각화” 이거 founder들은 좋아하는데, 대부분 사용자 가치 거의 없음. graph visualization은: - retention driver 아님 - PMF driver 아님 - workflow core 아님 이다. 사람은 “보는 graph”보다: - AI 결과 품질 향상 - context loss 감소 - repeated explanation 제거 를 원함. --- # 8. 가장 중요한 differentiation 결국 핵심은 이것 하나다: > “memory.wiki URL을 넣으면 AI output quality가 실제로 좋아진다.” 이게 observable해야 함. 그러니까 앱의 중심 metric은: - uploads 수 - nodes 수 - graph density 가 아니라, ### “Context Success Rate” 같은 게 돼야 함. 예: - repeated clarification 감소율 - AI task completion 증가 - hallucination 감소 - onboarding latency 감소 이런 것. --- # 내가 생각하는 가장 강한 positioning 지금: > AI knowledge graph 아님. 대신: > AI-native memory infrastructure 또는 > Context operating system for AI 또는 > Shared memory layer across AI tools 이 더 강하다. --- 그리고 마지막으로 제일 중요: ## 절대 “AI second brain”으로 브랜딩하지 마. 너무 crowded다. 대신: > “The memory format AI actually understands.” 이 훨씬 새롭다. --- id: 4N8X52tq title: Memory.wiki Strategic Pivot and Product Evolution url: https://memory.wiki/4N8X52tq updated: 2026-05-21T02:50:03.911116+00:00 --- # Memory.wiki Strategic Pivot and Product Evolution > The documents chronicle memory.wiki's strategic evolution from a basic markdown sharing tool to an AI-native knowledge graph platform, with multiple rounds of scope refinement to achieve a focused launch strategy. ## Key claims - [EXTRACTED] The core value proposition is "A memory.wiki URL is an API for any AI" - users can paste URLs into ChatGPT, Claude, Gemini, or Cursor [doc-1, doc-2] - [EXTRACTED] The project underwent a major rebranding from "mdfy.app" to "memory.wiki" between v6 and v7, with the domain secured and finalized [doc-1, doc-7] - [EXTRACTED] The system operates on a 3-tier architecture: "수집/소화/활용" (Capture/Digestion/Utilization) where users author content, AI organizes it into graphs, and any AI can consume it via URLs [doc-1, doc-3] - [EXTRACTED] The launch scope was dramatically reduced from "8개 → 3개" features (8 to 3 features) to make the 16-week deadline achievable [doc-7] - [INFERRED] The project positioning shifted from being another note-taking app to serving as "LLM 서비스의 기본 지원 메모리 레이어" (fundamental memory layer for LLM services), targeting the knowledge delivery problem rather than AI memory [doc-5, doc-8] - [AMBIGUOUS] The business model and pricing structure underwent multiple revisions, settling on a 3-tier approach (Free/Pro/Team), though specific pricing details remain undefined [doc-7] ## Cross-references - The "URL as API" concept appears consistently across all versions, remaining the core architectural principle despite other strategic pivots [doc-1, doc-2, doc-5] - The founder's motivation (doc-5) directly connects to the product specification's "delivery problem" framing, reinforcing the strategic thesis [doc-3, doc-5] - The scope reduction in v7-revised reflects lessons learned from the ambitious v7 plan, showing iterative refinement of the launch strategy [doc-1, doc-7] ## Open questions / gaps - Technical architecture details for how URLs actually function as APIs across different AI platforms - Specific pricing tiers and monetization mechanics for the Free/Pro/Team model - Implementation timeline for post-launch features like Bundle Spec RFC and public hub sharing - Competitive differentiation strategy against established players like Notion and emerging AI memory solutions ## Provenance - [doc-1]: Original v7 business plan establishing the core vision and 3-tier architecture - [doc-2]: Duplicate content reinforcing the central value proposition - [doc-3]: Product specification defining technical requirements and brand positioning - [doc-4]: Meta-commentary on the business plan evolution and architectural principles - [doc-5]: Founder's manifesto articulating the knowledge delivery problem and solution rationale - [doc-6]: Product specification synthesis focusing on the dual-door vision - [doc-7]: Revised v7 plan with dramatically reduced scope for achievable launch - [doc-8]: Simplified explanation of the core concept and competitive positioning --- id: fz45GXXj title: 내가 memory.wiki를 만드는 이유 url: https://memory.wiki/fz45GXXj updated: 2026-05-21T02:49:51.771+00:00 --- # 내가 memory.wiki를 만드는 이유 memory.wiki를 5개월에 걸쳐 build했습니다. 대부분 야간과 주말. 그리고 풀타임으로 전환했습니다. 이게 그 이유입니다. ## 문제는 memory가 아닙니다. Delivery입니다. 매일 수백만 명이 ChatGPT, Claude, Gemini, Cursor에 자신의 사고를 쏟아붓습니다. 어려운 질문을 합니다. 정말로 유용한 답변을 받습니다 — 전략, 코드, 프레임워크, 전문가들이 수십 년에 걸쳐 개발한 통찰들. 그리고 탭을 닫습니다. 그 답변은 사라집니다. 문자 그대로는 아닙니다 — 어딘가의 채팅 기록에 남아있지만, 다시 검색하지 않습니다. 기능적으로는 사라진 겁니다. 찾을 수 없고, 지난주의 통찰과 연결할 수 없고, 내일의 대화에 다시 ship할 수 없습니다. 다음 날, 비슷한 질문을 합니다. 같은 컨텍스트를 다시 paste합니다. 내가 누구인지, 무엇을 하고 있는지, 이미 무엇을 결정했는지를 다시 설명합니다. 비슷한 답변을 받습니다. 다시 탭을 닫습니다. 업계는 이걸 "AI memory 문제"라고 부릅니다. 이를 공격하는 스타트업들 — Mem0, Letta, ChatGPT Memory — 모두 같은 것을 build합니다: LLM이 query해서 당신을 기억하는 memory store. 그게 실제 문제가 아닙니다. 진짜 문제는 **당신의 지식이 어떤 AI도 읽을 수 있는 곳에 살지 않는다**는 것입니다. 지식이 Notion에 살 수 있습니다 (단 AI는 인증 없이 fetch 못 함). Google Docs에 살 수 있습니다 (같은 문제). 로컬 파일에 살 수 있습니다 (AI가 보지 못함). ChatGPT Memory에 살 수 있습니다 (단 ChatGPT만 읽을 수 있음). 각 container가 닫혀있습니다. 또 다른 memory store가 필요한 게 아닙니다. **당신의 지식이 URL로 살아서, 어떤 AI든 읽을 수 있고, 편집하면 업데이트되고, 문서뿐만 아니라 그들 사이의 관계까지 담는 곳**이 필요합니다. 그게 memory.wiki입니다. ## 단 하나의 아이디어 memory.wiki URL은 어떤 AI든 사용할 수 있는 API입니다. `memory.wiki/<id>`를 ChatGPT에 paste하면, LLM이 fetch하고 깔끔한 markdown을 받습니다. `memory.wiki/b/<id>` (bundle)을 paste하면 LLM이 그 bundle 안의 docs가 어떻게 관련되어 있는지 pre-built map을 받습니다. `memory.wiki/hub/<slug>` (전체 hub)를 paste하면 LLM이 당신의 thinking의 shape를 받습니다 — 모든 concept, 모든 relation, 모든 bundle, AI가 읽기 좋게 organize된 채로. 설치할 앱 없음. 통합할 SDK 없음. 배울 format 없음. HTTPS 위의 markdown, 세 개의 nested scope, URL을 hit할 수 있는 어떤 LLM이든 ready. 그게 product의 전부입니다. 모든 feature는 이 URL들을 더 유용하게 만들기 위해 존재합니다. ## 세 단계: 수집, 소화, 활용 memory.wiki에는 세 layer가 있습니다. 단순한 workflow로 매핑됩니다. **당신이 수집합니다.** Markdown은 어디서든 옵니다 — ChatGPT의 Chrome 확장, VS Code, 터미널, Mac 클립보드, 웹 편집기. 각 수집은 Document URL이 됩니다. 살아있고, 편집 가능하고, address 가능합니다. **시스템이 소화합니다.** LLM이 저장한 모든 doc에서 concept을 추출하면서 당신의 개인 ontology를 build합니다. Docs를 함께 bundle하면 다른 LLM이 set 전체를 분석합니다 — themes, insights, 아이디어 사이의 edges. Embeddings가 semantic 검색을 power합니다. Concept index가 모든 bundle을 가로질러 자라면서, 당신이 어떻게 생각하는지의 graph가 누적됩니다. **당신이 활용합니다.** 세 URL scope — Doc, Bundle, Hub — 각각 목적에 맞게 tuned. Compact response는 full body 대신 AI가 build한 graph와 link를 ship해서, LLM이 \~95% 적은 토큰으로 map을 받습니다. Full response는 필요할 때 모든 것을 inline. 26-tool MCP server는 에이전트가 hub 안에 살면서 semantic 검색하고 write back할 수 있게 합니다. 그게 loop입니다. 한 번 수집, 시스템이 organize, 어디든 deliver. ## 그래프가 product입니다 대부분의 지식 도구는 docs를 저장합니다. memory.wiki는 docs *와* 그들 사이의 graph를 저장합니다. doc을 저장할 때마다, LLM이 concept을 추출하고 태그합니다. Docs를 bundle할 때마다, 다른 LLM이 themes를 찾고 edges를 그립니다. 모든 bundle을 가로지른 모든 concept이 당신의 개인 ontology로 누적됩니다 — typed relations, weights, cross-references. Bundle canvas가 이 graph를 보여줍니다. `/galaxy`의 galaxy view가 같은 graph를 zoom out해서 보여줍니다. Hub URL이 같은 graph를 LLM이 읽기 위한 markdown으로 ship합니다. MCP server가 같은 graph를 26개의 다른 tool을 통해 query합니다. **모든 memory.wiki surface는 같은 underlying graph의 다른 reader입니다. 그래프가 product입니다.** 이게 lock-in mechanism이고, 정직하게 말합니다. 당신의 markdown은 언제든 export 가능합니다 — plain text, 당신의 property. 하지만 몇 달 동안 누적된 graph — concept 가중치, cross-bundle relations, semantic embeddings — 는 다른 곳에서 reconstruct하기 어렵습니다. memory.wiki를 오래 사용할수록, 당신의 지식이 더 큰 shape를 가집니다. 어떤 도구는 exit을 닫아서 moat을 build합니다. memory.wiki는 open해서 — 머무는 게 떠나는 것보다 그냥 더 쉬워서 — moat을 build합니다. ## Mem0, Notion, LLM Wiki는 어때요? memory.wiki가 무엇이고 무엇이 아닌지 정직하게 말하겠습니다. **memory.wiki는 Mem0가 아닙니다.** Mem0는 당신의 대화에서 memory를 자동으로 추출합니다. 당신이 curate하지 않습니다; LLM이 무엇이 중요한지 결정합니다. 합리적인 design입니다. 단 다른 질문에 답할 뿐입니다. Mem0는 묻습니다: "AI가 당신에 대해 무엇을 기억해야 하는가?" memory.wiki는 묻습니다: "당신은 무엇을 AI에 deploy하고 싶은가?" 둘 다 자리가 있습니다. 함께 작동할 수도 있습니다. **memory.wiki는 Karpathy의 LLM Wiki가 아닙니다.** Karpathy의 LLM Wiki 패턴은 훌륭합니다 — local docs, LLM-compiled wiki, retrieval을 위한 organize, Obsidian에 거주. memory.wiki는 클라우드 기반, 인간-AI 협업, delivery를 위한 organize. LLM Wiki는 하나의 unified knowledge base. memory.wiki는 doc + bundle + hub — 당신이 compose하는 세 scope. 둘 다 사용 가능합니다: 로컬 query를 위한 LLM Wiki, cross-AI deployment를 위한 memory.wiki. 통합은 roadmap에 있습니다. **memory.wiki는 Notion이나 Google Docs가 아닙니다.** Notion은 closed workspace입니다. Notion AI는 Notion 안에서 작동합니다. Google Docs는 인증 없이 AI에 닫혀있습니다. memory.wiki는 어떤 AI든 fetch할 수 있는 open URL입니다. 당신의 지식이 누군가의 앱에 갇혀있지 않습니다. **memory.wiki는 ChatGPT Memory가 아닙니다.** ChatGPT는 ChatGPT 안에서 당신에 대해 기억합니다. memory.wiki는 당신의 지식, ChatGPT, Claude, Cursor에 deploy 가능 — URL을 paste할 수 있는 어디든. memory.wiki는 추출과 저장 사이의 layer입니다. **당신의 지식 그래프, AI와 함께 build, AI에 deploy, 당신이 소유.** ## 왜 지금인가 이게 중요한 좁은 창이 있습니다. 지난 2년간, 모든 AI 회사가 자신의 벽 안에 closed memory를 build해왔습니다. ChatGPT Memory. Google Memory Bank. SDK 안의 추출-memory 스타트업들. 각자 자신의 product 안에서 당신의 지식을 소유하려고 합니다. 또 다른 2년 후, 둘 중 하나가 진실이 될 것입니다. Closed system이 이기고, 당신의 지식은 당신이 사용하는 어떤 AI 안에 살게 됩니다 — 그들이 소유하고, 그들의 API로만 query 가능. 또는 open standard가 등장하고 — 어떤 AI든 fetch할 수 있는 markdown URL, vendor를 가로질러 휴대하는 지식, 당신이 통제하는 format. 저는 두 번째 결과를 더 가능하게 만들기 위해 memory.wiki를 build하고 있습니다. 이게 HTTP가 문서에 대해 한 같은 베팅입니다. HTTP가 이긴 건 누가 선언해서가 아닙니다. Primitive가 옳았고 대안들이 더 나빴기 때문에 이겼습니다. 마크다운 URL이 AI memory의 그것이 될 수 있습니다. Plain text. 보편적으로 읽기 가능. AI-native. Bundle과 hub로 composable. Format은 이미 모든 LLM이 사용 중. Transport는 이미 모든 브라우저가 사용 중. 우리는 그저 그들을 layer로 조립하면 됩니다. 그 layer가 memory.wiki입니다. ## 지금까지 build한 것 약 5개월 — 대부분 풀타임 전환 전 야간과 주말 — 동안 ship한 것: - Web 앱 (mdfy.app, 곧 memory.wiki)와 WYSIWYG markdown 편집, 세 URL scope (Doc, Bundle, Hub) - ChatGPT, Claude, Gemini에서 한 번 클릭 capture를 위한 Chrome 확장 - Marketplace의 VS Code 확장 - macOS 데스크톱 앱 (signed, notarized) - npm의 CLI - npm의 MCP server, 26 tools — MCP를 말하는 어떤 host (Claude Desktop, Cursor, Cline, Windsurf)든 full hub를 native AI 도구로 받음 - macOS QuickLook 플러그인 - Real-time 협업 편집 (Supabase Realtime 위의 Yjs CRDT) - 모든 doc save에 concept AI 자동 추출 - 모든 bundle에 graph AI 분석 (themes, insights, typed edges) - Semantic 검색을 위한 doc / chunk / bundle 단위 embeddings - `/galaxy`에 concept index를 라이브로 렌더링하는 galaxy 시각화 - Three-provider AI failover (Anthropic, OpenAI, Gemini) - 모든 viewer, embed, channel을 가로지르는 unified renderer 이걸 빠르게 ship할 수 있었던 건 primitive — 마크다운 URL — 가 옳기 때문입니다. 모든 surface가 compose합니다. 모든 surface가 같은 graph를 다른 form으로 ship합니다. 그게 memory.wiki의 현재 위치입니다. 인프라는 build됐습니다. 다음 4개월은 각 단계 — 수집, 소화, 활용 — 를 significantly 강하게 만드는 것에 관한 것입니다. ## 다음 16주 **수집 강화.** 어떤 iOS 앱이든 hub로 보낼 수 있는 iOS Share Sheet. Chrome 확장의 AI 대화 auto-suggest — 확장이 당신의 ChatGPT/Claude session을 지켜보다가 흥미로운 답변을 save할지 제안, 당신이 결정. 뉴스레터를 hub로 보내는 Email forward. 결국에는 모바일에서 voice capture. **소화 강화.** AI bundle 생성 — 자연어로 무엇을 bundle하고 싶은지 설명하면, LLM이 hub를 검색하고, bundle 초안을 만들고, 당신이 검토하고 저장. Question-driven exploration — hub에 질문하면 citation과 함께 답변. Cross-bundle 자동 linking — concept이 bundle을 가로지를 때, 시스템이 연결을 surface. **활용 강화.** Direct LLM platform 통합 — ChatGPT용 Custom GPT, Claude Desktop용 한 클릭 MCP 설정, Cursor용 cursor rules. memory.wiki 안에 임베드된 chat, hub를 자동 컨텍스트로. 사람들이 Substack feed를 공유하는 방식으로 당신의 thinking shape를 공유하는 public hub. Claude, GPT, Cursor에 대해 URL payload를 tune하는 AI 특화 format adapters. Launch는 2026년 8월 말입니다. memory.wiki bundle이 사용하는 open format인 Bundle Spec은 같은 주에 RFC로 GitHub에 공개됩니다. 어떤 도구든 구현할 수 있습니다. ## 다섯 가지 믿음 모든 product 결정 뒤에는 믿음이 있습니다. 이게 제 믿음입니다. **1. 마크다운은 AI 시대 지식의 올바른 primitive다.** Notion 블록이 아니라. 독점 format이 아니라. Plain 마크다운 — LLM이 native로 말하는 것, 인간이 직접 읽는 것, 모든 도구가 생성할 수 있는 것. 지금 지식을 잡으려 싸우는 모든 도구를 살아남을 것. **2. URL은 올바른 인터페이스다.** SDK가 아니라. Vendor lock-in이 아니라. URL은 가능한 가장 단순한 delivery mechanism입니다 — paste 가능, fetch 가능, 어떤 브라우저든 어떤 인간이든 어떤 AI든 열 수 있는. 가장 단순한 인터페이스가 가장 오래갑니다. **3. 그래프가 product다.** Docs 저장만으론 충분하지 않습니다. Docs 사이의 관계 — concepts, themes, typed edges — 가 knowledge base를 navigable하게 만드는 것입니다. Graph를 자동으로 build하고, 모든 URL response에 ship. **4. Retrieval이 아니라 delivery가 새 layer다.** 대부분의 memory 스타트업은 retrieval system을 build했습니다 — store를 query, chunks를 return. memory.wiki는 delivery를 build합니다 — graph를 pre-organize하고 URL에 ship. 어떤 AI든 구조를 상속합니다. 그게 AI 회사들이 쉽게 복제할 수 없는 layer입니다. **5. 기본은 open이다.** Bundle Spec은 공개됩니다. mdfy core engine은 open-source 역사가 있습니다. Self-hosting이 가능할 것입니다. 신뢰는 사용자가 자신의 데이터와 함께, 다른 도구가 읽을 수 있는 format으로 떠날 수 있어야 합니다. 처음부터 그것을 위해 build합니다. ## 열린 초대 여기까지 읽으셨다면, 아마 이 중 하나에 관심이 있을 겁니다: AI memory, 지식 그래프, open standard, primitive로서의 마크다운, 또는 당신을 가두지 않는 indie 도구. 여기 제가 부탁하는 것입니다. **매일 AI를 사용한다면**, mdfy.app에서 memory.wiki를 시도해보세요 (이름 변경 예정). Chrome 확장 설치. 좋은 답변 몇 개 capture. Bundle로 묶기. Bundle URL을 다음 AI 대화에 paste. 무엇이 변하는지 보세요. **AI 에이전트나 AI-native 도구를 build한다면**, MCP server를 보세요 — 26 tools, embeddings layer, graph queries. 당신의 product에 memory layer가 필요하다면, memory.wiki가 옳을 수도 있고, 아닐 수도 있고 — 어느 쪽이든 듣고 싶습니다. **Open standard에 관심이 있다면**, Bundle Spec이 launch 전에 RFC로 옵니다. Ship되기 전에 피드백을 원합니다. 채택되는 버전은 제가 혼자 쓸 버전보다 나을 것입니다. **Karpathy 스타일로 LLM Wiki를 build했다면**, memory.wiki는 당신이 가진 것을 보완하기 위한 것입니다. Query를 위한 local wiki, delivery를 위한 cloud hub. 통합이 어떻게 보일지 알려주세요. **AI 플랫폼에서 일한다면** — Anthropic, OpenAI, Cursor, Cognition, Continue — default 통합에 대해 이야기하고 싶습니다. Vision은 어떤 LLM이든 "memory.wiki 연결" 옵션을 제공하면 사용자의 지식 그래프가 모든 대화에 그냥 나타나는 것입니다. 그게 partnership 대화입니다. **투자자라면**, 지금은 raising하지 않습니다. 메트릭이 정당화할 때 raising할 것입니다. 이 thesis가 공명한다면, 가질 가치가 있는 대화는 그 시점입니다 — 그리고 closed unicorn이 아니라 open infrastructure를 신경 쓰는 투자자와 이야기하고 싶습니다. **그냥 이런 걸 읽기 좋아한다면**, 여기까지 읽어주셔서 감사합니다. AI 지식 layer에 관한 대화는 다음 10년의 많은 부분을 정의할 것입니다. 더 많은 사람들이 이걸 신중히 생각할수록, 더 좋습니다. ## 다음에 올 것에 대한 메모 저는 in public으로 build하고 있습니다. 다음 16주는 보일 것입니다 — 모든 ship된 feature, 모든 결정, 무언가가 작동하지 않을 때의 모든 pivot. 일부는 ugly할 것입니다. 일부는 틀릴 것입니다. 모두 정직할 것입니다. 첫 public launch — 수집 강화, AI bundle 생성, public hubs, direct LLM platform 통합, Bundle Spec — 는 2026년 8월 말로 예정됐습니다. 그때까지: product를 시도하고, 무엇이 작동하는지 공유하고, 무엇이 빠졌는지 알려주세요. --- *memory.wiki는 Raymind.AI의 Hyunsang이 build합니다.현재 홈: mdfy.app (memory.wiki migration 진행 중).Bundle Spec은 Phase 2 ship 전에 RFC로 공개됩니다.[hi@raymind.ai](mailto:hi@raymind.ai)로 연락주세요.* --- id: xv6A2DKS title: memory.wiki 사업계획 v7 (FINAL) url: https://memory.wiki/xv6A2DKS updated: 2026-05-20T14:29:32.291+00:00 --- # memory.wiki 사업계획 v7 (FINAL) > **Your knowledge graph as a URL for any AI**.Markdown URL = API for any AI. 사용자가 author. AI가 graph로 정리. 어떤 AI든 URL로 사용. > **Brand**: memory.wiki (final, 도메인 확보됨) **Founder**: Hyunsang at Raymind.AI **Build started**: 2026년 3월 (부업), 2026년 4월 풀타임 **Launch deadline**: 2026년 8월 말 (16주) **Last updated**: 2026-05-20 --- # 목차 1. [Executive Summary](#1-executive-summary) 2. [v6 → v7 핵심 변경](#2-v6--v7-%ED%95%B5%EC%8B%AC-%EB%B3%80%EA%B2%BD) 3. [The One Idea](#3-the-one-idea) 4. [Strategic Thesis](#4-strategic-thesis) 5. [3-Tier Architecture (수집/소화/활용)](#5-3-tier-architecture) 6. [Tier 1: 수집 (Capture)](#6-tier-1-%EC%88%98%EC%A7%91-capture) 7. [Tier 2: 소화 (Digestion)](#7-tier-2-%EC%86%8C%ED%99%94-digestion) 8. [Tier 3: 활용 (Utilization)](#8-tier-3-%ED%99%9C%EC%9A%A9-utilization) 9. [Strategic Position](#9-strategic-position) 10. [Business Model](#10-business-model) 11. [16-Week Launch Roadmap](#11-16-week-launch-roadmap) 12. [Launch Strategy](#12-launch-strategy) 13. [12-Month Outlook](#13-12-month-outlook) 14. [Risk Register](#14-risk-register) 15. [Brand Identity (TBD)](#15-brand-identity-tbd) 16. [Decisions Log](#16-decisions-log) --- # 1. Executive Summary ## 한 줄로 > **memory.wiki — your knowledge graph as a URL for any AI.** ## The one idea (from product itself) > A memory.wiki URL is an API for any AI. Paste `memory.wiki/<id>`, `memory.wiki/b/<id>`, or `memory.wiki/hub/<slug>` into ChatGPT, Claude, Gemini, or Cursor. LLM이 fetch해서 markdown으로 받음. No app to install. No format to learn. Just markdown over HTTPS. ## 핵심 차별화 ### "The graph is the product" memory.wiki는 모든 surface가 같은 underlying graph를 읽음: - Concept index (lifelong ontology) - Concept relations (typed edges) - Bundle graph_data (themes, insights, edges) - Embeddings (semantic recall) → User가 떠나려면 graph를 잃음. Graph = user의 thinking shape. ### Delivery model, not retrieval - Mem0/Letta: retrieve memory from extraction - LLM Wiki: retrieve knowledge from local compilation - memory.wiki: **deliver knowledge graph in URL** (any AI inherits) 이게 진짜 moat. AI 회사들이 못 copy하는 것. ## 8월 launch까지 도달 지점 - 3단계 (수집/소화/활용) 각각 핵심 enhancement 1개씩 ship - Beta 100명 → Public 2,000+ signup - HN Show HN top 3 - $1,500-2,500 MRR - 첫 partnership conversations (Cursor, Continue 등) - Bundle Spec v1.0 RFC 공개 ## 12개월 후 - $80-150K MRR - 10,000-20,000 paying users - "AI memory" 카테고리 top 5 인지 - 첫 LLM platform integration - Bundle Spec community 활성화 --- # 2. v6 → v7 핵심 변경 이건 진짜 큰 update예요. 실제 product (mdfy.app/bmZYfZez + mdfy.app/KRKz_MD-) 기반. ## 변경 1: Brand final commit **v6**: mori.wiki 후보 단계 **v7**: **memory.wiki** final commit, 도메인 확보됨 ## 변경 2: Strategic thesis sharpen **v6**: "Personal knowledge hub for the AI era" **v7**: "**Markdown URL = API for any AI**" + "**The graph is the product**" doc의 one-idea를 plan thesis로 elevate. ## 변경 3: 3단계 framework backbone **v6**: Three Pillars (Capture / Bundle / Deploy) **v7**: **수집 / 소화 / 활용** (Capture / Digestion / Utilization) Hyunsang님이 제안한 framework. 더 자연스럽고 funnel 명확. ## 변경 4: "Graph"가 핵심 컨셉 **v6**: Bundle, Hub URL 강조 **v7**: **Graph (concept ontology + relations + embeddings)** 강조 The graph is the product. Bundle/Hub는 graph의 view. ## 변경 5: Launch timing 수정 **v6**: 2026-06-16 (8주) **v7**: **2026년 8월 말** (16주, doc 명시) Sustainable timeline. Quality 시간 확보. ## 변경 6: Already-built 자산 명시 **v6**: Multi-surface는 언급 정도 **v7**: 다음 자산 모두 명시: - Real-time collaboration (Yjs CRDT) - 26 MCP tools - /galaxy 시각화 - Concept ontology auto-extraction - 3-provider AI failover - One renderer everywhere - Compact vs Full payload ## 변경 7: Rust engine 사실 정정 **v6**: mdcore (Rust) open source 자랑 **v7**: 2026-05-16에 sunset, markdown-it (JS) only Manifesto와 marketing에서 Rust 언급 제거. ## 변경 8: 도메인 정정 **v6**: mdfy.cc + /ko/ **v7**: memory.wiki (단일 도메인, 글로벌) mdfy.app은 현재 primary, launch 시점에 memory.wiki로 rename. --- # 3. The One Idea doc에서 직접 가져온 product의 정수: > **A memory.wiki URL is an API for any AI.** 이게 전부. 다른 모든 feature는 이 URL이 return하는 markdown을 더 useful하게 만드는 것. ## 3 URL 형태 ### `memory.wiki/<id>` — 한 문서 ``` 한 markdown 문서, frontmatter wrapper 원자 단위 ``` ### `memory.wiki/b/<id>` — bundle (compact 기본) ``` AI graph (themes, insights, edges) + Concepts subgraph + Documents (link + annotation) = ~95% 토큰 절약 vs concat ``` ### `memory.wiki/hub/<slug>` — 전체 hub (compact 기본) ``` Top-weighted concepts + Typed relations + Bundle distribution = 사용자 thinking의 shape ``` ## 4 moving parts | Part | What | Where | | --- | --- | --- | | Markdown | Source of truth | `documents.markdown` | | AI graph | Per-bundle 분석 | `bundles.graph_data` (JSON) | | Concept index | Lifelong ontology | `concept_index` + `concept_relations` | | Embeddings | Semantic recall | pgvector (`documents`, `bundles`, `document_chunks`) | 첫 3개는 LLM이 fetch하는 markdown에 포함됨. Embeddings는 MCP tool (`memory_search`)을 통해. --- # 4. Strategic Thesis ## Thesis 1: Delivery, not retrieval 대부분의 AI memory startup은 **retrieval system**. RAG, vector DB, semantic search. memory.wiki는 **delivery system**. Graph가 URL로 ship됨. ``` Retrieval system: AI → query → memory store → return chunks Delivery system: AI → fetch URL → receive pre-organized graph ``` 이게 진짜 moat: - 어떤 AI든 fetch 가능 (no SDK) - Pre-organized (LLM이 navigation 안 해도 됨) - \~95% 토큰 효율 (Compact mode) ## Thesis 2: The graph is the product ``` 모든 mdfy surface는 같은 underlying graph의 다른 reader다. - Galaxy 시각화 = graph의 visual reader - Bundle digest = graph의 LLM reader - Hub URL = graph의 navigation reader - MCP search = graph의 query reader Graph가 product. Surface는 그래프의 representation. ``` 이게 lock-in mechanism: - 사용자가 떠나려면 graph를 잃음 - Graph = 사용자의 thinking shape (수개월 누적) - Export 가능 (open) but reconstruction은 다른 도구로 불가 ## Thesis 3: Markdown URL = universal AI interface ``` Past: AI는 SDK로 접근 (lock-in) Present: AI는 URL로 접근 (open) Future: 모든 AI memory는 URL로 deliver ``` memory.wiki는 이 future를 만드는 시도. ## Thesis 4: Two-way LLM relationship ``` Pull (URL fetch): LLM이 URL을 GET하고 markdown 받음 → 모든 AI 도구 (ChatGPT, Claude, Gemini, Perplexity, Cursor) Push + Pull (MCP): MCP host가 26 tools 호출 → Claude Desktop, Cursor, Cline, Windsurf ``` URL이 paste용, MCP가 deep integration용. ## Thesis 5: LLM platform default integration (Hyunsang님 vision) 장기 목표: > "ChatGPT, Claude, Cursor가 'memory.wiki 연결하시겠어요?' 물어보고, 사용자가 yes 하면 모든 대화에 자동 컨텍스트." 지금: 사용자가 URL paste 미래: Platform 기본 지원 이 path는: 1. Phase 2-3: 사용자가 manual paste, partnership outreach 시작 2. Phase 4: 첫 partnership 발표 3. Year 2-3: Default integration 위치 차지 --- # 5. 3-Tier Architecture Hyunsang님의 framework. Plan의 backbone. ``` ┌────────────────────────────────────────┐ │ 1. 수집 (Capture) │ │ Multi-surface로 markdown 모음 │ │ ↓ │ │ Documents at URLs │ └────────────────────────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ 2. 소화 (Digestion) │ │ AI가 자동으로 graph build │ │ - Concept extraction │ │ - Relations 추출 │ │ - Bundle analysis │ │ - Embeddings │ └────────────────────────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ 3. 활용 (Utilization) │ │ 어떤 AI에든 URL로 deliver │ │ - Doc URL │ │ - Bundle URL (Compact / Full) │ │ - Hub URL (Compact / Full / Since) │ │ - MCP integration │ └────────────────────────────────────────┘ ``` 각 단계가 funnel: - 수집 = entry (모두 가능) - 소화 = engagement (사용 누적시 자동) - 활용 = lock-in (deploy하면 platform 종속) 각 단계가 pricing tier 자연 매핑: - Free: 수집 unlimited, 소화 limited, 활용 basic - Pro: 모두 풀 (개인 power user) - Build: 활용 + API/MCP (AI builder) - Team: 공유 활용 - Enterprise: self-host --- # 6. Tier 1: 수집 (Capture) ## 현재 상태 (이미 강함) ✅ **Web** — mdfy.app (live, Vercel) ✅ **Chrome extension** — ChatGPT, Claude, Gemini capture ✅ **VS Code extension** — Marketplace v1.4.0 ✅ **Desktop app** — DMG v2.2.0, signed + notarized ✅ **CLI** — npm v1.3.x ✅ **MCP server** — npm v1.3.x, 26 tools ✅ **macOS QuickLook** — Bundled in DMG ✅ **GitHub import** — repo → markdown ✅ **Drag-drop, paste-as-markdown** ## 진짜 강점: 다른 도구가 따라잡기 어려운 multi-surface 대부분 memory startup은 web + API만. memory.wiki는 7+ surface가 day one부터. 이게 product의 1st moat. ## 강화 후보 (모두 keep, launch까지 일부 build) ### A. Voice capture ⭐ (Tier 1 priority) **왜 중요**: Mobile에 가장 큰 missing piece. 출퇴근, 산책, 회의 후 즉시 사고 capture. **구현**: - iOS app + Android app - 음성 → Whisper → markdown - Auto-categorize (concept extract) - Hub에 자동 추가 **Launch 전 build 가능성**: Medium (1-2개월). Mobile app은 큰 effort. **Launch 후 priority**: 매우 높음 (가장 큰 새 surface) ### B. iOS Share Sheet / Android Intent ⭐ (Quick win) **왜 중요**: 시스템 레벨 통합. 어떤 앱에서든 "Share to memory.wiki". **구현**: - iOS Share Extension - Android Share Intent - Twitter thread, blog, AI 답변 → 한 번에 hub **Launch 전 build 가능성**: High (2-3주). 빠른 win. ### C. AI conversation 자동 capture suggest ⭐ **왜 중요**: 현재는 사용자가 click. 자동 suggest로 engagement 증가. **구현**: - Chrome extension upgrade - ChatGPT/Claude 대화 모니터링 (local) - "Interesting" 답변 detect (heuristics or AI) - "Save this?" subtle prompt **Launch 전 build 가능성**: Medium (3-4주). 가치 매우 큼. ### D. Email forward **왜 중요**: Viral mechanic. Newsletter, AI 답변 이메일 직접 hub로. **구현**: - `forward@memory.wiki` (또는 user-specific) - Email → markdown (HTML 정리) - Auto-add to hub - Newsletter sync 기반 **Launch 전 build 가능성**: Medium (2-3주). ### E. Slack/Discord integration **왜 중요**: Team tier에 deep. Slack 메시지 react → hub 저장. **구현**: - Slack app - React with custom emoji → memory.wiki에 save - Discord bot - Threads 전체 또는 single message **Launch 전 build 가능성**: Low (1개월+). Team feature이라 Phase 3에 적합. ### F. RSS/Newsletter sync **왜 중요**: 자동 input. Newsletter, blog, podcast description 자동 추가. **구현**: - RSS feed 등록 - New post → hub에 add (draft 또는 auto-publish) - Filter rules **Launch 전 build 가능성**: Medium (2-3주). 매우 niche. ## 수집 강화 우선순위 (Launch까지) | 우선순위 | Feature | Build 시간 | 효과 | | --- | --- | --- | --- | | **1** | **iOS Share Sheet** | 2-3주 | Universal capture, 즉시 ROI | | **2** | **AI conversation auto-suggest** | 3-4주 | Engagement 강화 | | 3 | Email forward | 2-3주 | Viral 가능성 | | 4 | Voice capture (POC) | 4-6주 | 새 surface, mobile 진입 | | 5 | RSS sync | 2-3주 | Niche | | 6 | Slack integration | 4주+ | Phase 3로 미루기 | **Launch 전 commit**: 1, 2 (iOS Share Sheet + AI auto-suggest). **Launch 후 즉시**: 3, 4 (Email + Voice). **Phase 3**: 5, 6 (RSS, Slack). ## 수집 KPI - Captures per user per week (engagement) - % users with 2+ surfaces (multi-surface adoption) - Daily active capture rate - Capture → first publish 시간 (UX) --- # 7. Tier 2: 소화 (Digestion) ## 현재 상태 (이미 강함, 단 underleveraged) ✅ **Concept ontology auto-extraction** (doc_ontology job, 30-min throttle) ✅ **Bundle graph analysis** (themes, insights, edges via LLM) ✅ **Embeddings** (doc + chunk via OpenAI text-embedding-3-small) ✅ **Concept relations** (typed edges between concepts) ✅ **Concept weights accumulation** (cross-bundle) ✅ **3-provider AI failover** (Anthropic → OpenAI → Gemini) ✅ **/galaxy 시각화** (concept index visual reader) ✅ **/canvas 시각화** (per-bundle graph visual) ✅ **analysis_stale tracking** (bundle freshness) ## 진짜 강점: Auto graph build 대부분 도구는 사용자가 organize. memory.wiki는 **AI가 자동**: - 매 doc save → concept 자동 추출 - Bundle 만들면 → graph 자동 분석 - Concept relations 자동 build - 모든 게 background 이게 product의 2nd moat. Lock-in mechanism. ## 강화 후보 (모두 keep) ### A. Bundle 자동 생성 ⭐ (Tier 2 priority) **왜 중요**: 현재는 manual. AI가 concept clustering으로 자동 제안. **구현**: - 사용자가 자연어 요청: "Project Acme 관련 묶어줘" - AI가 concept_index + embeddings 검색 - Bundle draft 생성 + annotations - 사용자 review/edit/save 또는 자동 suggest: - "이 5 docs가 X 주제로 cluster됩니다. Bundle 만들까요?" - 사용자 yes/no **Launch 전 build 가능성**: High (3-4주). Magic UX. ### B. Question-driven exploration ⭐ **왜 중요**: 사용자가 hub에 자연어 질문 → AI가 즉시 답변 + 관련 docs surface. **구현**: - memory.wiki/hub 페이지에 chat interface - "내가 LLM memory에 대해 뭐 알고 있어?" - AI가 embedding search + concept lookup - 답변 + cited docs **Launch 전 build 가능성**: High (2-3주). 가장 강력한 AI 활용. ### C. Auto-summarization (digest) **왜 중요**: Return user mechanic. 매일/매주/매월 review. **구현**: - Daily digest: "오늘 추가한 5 docs 요약" - Weekly digest: "이번 주 thinking" - Monthly review: "concept growth chart" - Email 또는 in-app notification **Launch 전 build 가능성**: Medium (3주). ### D. Cross-bundle auto-link **왜 중요**: Bundle A의 concept이 Bundle B에 등장 → 자동 cross-reference. **구현**: - Concept_relations 이미 있음 → activate - Bundle UI에 "Related bundles" 섹션 - 자동 link via shared concepts - Concept hub 자체에서 cross-bundle navigation **Launch 전 build 가능성**: Medium (2주). 이미 backend 80% 있음. ### E. Contradiction detection **왜 중요**: Power user feature. 두 doc이 contradictory하면 surface. **구현**: - LLM이 concept-level contradiction detection - "Doc A는 X라고 하는데 Doc B는 not X" - 사용자에게 surface - Resolve or reconcile prompt **Launch 전 build 가능성**: Low (4주+). Niche but impressive. ### F. Knowledge gap detection **왜 중요**: "이 concept group에 X 비어있다" → active learning. **구현**: - Concept cluster 분석 - Gaps surface ("X에 대한 doc 없음") - "Search/capture suggest" **Launch 전 build 가능성**: Low (4주+). Niche. ### G. Concept evolution tracking **왜 중요**: "내 thinking이 6개월 전 vs 지금 어떻게 변했나" **구현**: - Concept snapshot 매월 - Diff 비교 - Personal growth narrative - Visualization **Launch 전 build 가능성**: Low (4주+). Long-term value, not launch critical. ## 소화 강화 우선순위 (Launch까지) | 우선순위 | Feature | Build 시간 | 효과 | | --- | --- | --- | --- | | **1** | **Bundle 자동 생성** | 3-4주 | Magic UX, conversion driver | | **2** | **Question-driven exploration** | 2-3주 | 가장 강력한 AI 활용 | | 3 | Cross-bundle auto-link | 2주 | Backend 80% 준비됨 | | 4 | Auto-summarization digest | 3주 | Return user | | 5 | Contradiction detection | 4주+ | Phase 3 | | 6 | Knowledge gap detection | 4주+ | Phase 3 | | 7 | Concept evolution | 4주+ | Phase 3 | **Launch 전 commit**: 1, 2 (Bundle auto-gen + Question exploration). **Launch 후 즉시**: 3, 4 (Cross-link + Digest). **Phase 3**: 5, 6, 7 (Contradiction, Gap, Evolution). ## 소화 KPI - Bundles created per user (manual + AI) - AI bundle generation usage rate - Concept index size per user - Hub query frequency - Return user rate (digest engagement) --- # 8. Tier 3: 활용 (Utilization) ## 현재 상태 (이미 매우 강함) ✅ **Doc URL** — `mdfy.app/<id>` (markdown + frontmatter) ✅ **Bundle URL Compact** — `mdfy.app/b/<id>` (\~95% 토큰 절약) ✅ **Bundle URL Full** — `?full=1` (모든 body inline) ✅ **Hub URL Compact** — `mdfy.app/hub/<slug>` (concept digest) ✅ **Hub URL Since** — `?since=date` (incremental) ✅ **/raw payload** — for AIs / scrapers ✅ **/embed** — iframe-friendly ✅ **/d/** — reader-only viewer ✅ **MCP server (26 tools)** — push + pull integration ✅ **Visitor "Ask AI"** — 공개 doc에 누구나 AI 질문 ✅ **Real-time collaboration** — Yjs CRDT ✅ **Three permission roles** — owner / editor / readonly ✅ **Edit mode controls** — owner / account / token / view / public ## 진짜 강점: 3 scope URL + Compact/Full + MCP 이게 product의 3rd moat. AI 회사들이 "delivery model"을 못 copy. ## 강화 후보 (모두 keep) ### A. Direct LLM platform integration ⭐ (Tier 3 priority — Hyunsang님 vision) **왜 중요**: "LLM의 default memory layer" vision의 직접 구현. **구현**: - "Add memory.wiki to ChatGPT" 버튼 → Custom GPT 자동 설치 - "Add memory.wiki to Claude" → MCP 자동 연결 - "Add memory.wiki to Cursor" → cursor rules 자동 설정 - 한 번 click → 모든 대화에 자동 컨텍스트 **Launch 전 build 가능성**: Medium (3-4주). Custom GPT부터 시작 가능. **전략적 가치**: 매우 큼. Partnership 시작점. ### B. Embedded chat with hub context ⭐ **왜 중요**: memory.wiki에서 직접 chat, hub 전체 자동 context. ChatGPT 안 가도 됨. **구현**: - mdfy.app에 chat UI - 사용자 hub 자동 context (Compact) - 3-provider failover - Conversation history → 새 docs 생성 가능 **Launch 전 build 가능성**: High (2-3주). 기술 자산 이미 있음. **전략적 가치**: Sticky engagement. ChatGPT/Claude lock-out도 가능. ### C. Public hub sharing ⭐ **왜 중요**: 가장 viral mechanic. Substack-like "knowledge feed". **구현**: - "내 hub 공개" 옵션 - Public hub URL - 다른 사람이 따라가기 - Concept-level subscribe - "Following" feed **Launch 전 build 가능성**: Medium (3주). 가장 viral. ### D. AI-specific format adapters **왜 중요**: Claude/ChatGPT/Cursor 각각 최적 format. **구현**: - Claude: XML tags - ChatGPT: verbose markdown - Cursor: code-context 강조 - Gemini: structured URL parameter로 지정: - `?format=claude` - `?format=cursor` **Launch 전 build 가능성**: Medium (2-3주). Quality moat. ### E. Smart Hub digest **왜 중요**: Context-aware digest. "지금 작업 중인 것" 인식. **구현**: - Recent 활동 분석 - Active concept cluster surface - "Working context" vs "background" 구분 **Launch 전 build 가능성**: Low (4주+). UX polish. ### F. Hub-to-hub merge **왜 중요**: Team의 collective concept index. **구현**: - 두 hub 합치기 - Conflict resolution - Permission inheritance - Team tier 핵심 **Launch 전 build 가능성**: Low (4주+). Team feature, Phase 3. ### G. Time travel **왜 중요**: "3개월 전 내 hub vs 지금". Personal growth narrative. **구현**: - Hub snapshot 자동 - Diff 비교 - Timeline view **Launch 전 build 가능성**: Low (4주+). Power user. ## 활용 강화 우선순위 (Launch까지) | 우선순위 | Feature | Build 시간 | 효과 | | --- | --- | --- | --- | | **1** | **Direct LLM platform integration (Custom GPT)** | 3-4주 | Vision 직접 | | **2** | **Embedded chat with hub context** | 2-3주 | Sticky engagement | | **3** | **Public hub sharing** | 3주 | Viral mechanic | | 4 | AI-specific format adapters | 2-3주 | Quality moat | | 5 | Smart Hub digest | 4주+ | Phase 3 | | 6 | Hub-to-hub merge | 4주+ | Team tier | | 7 | Time travel | 4주+ | Power user | **Launch 전 commit**: 1, 2, 3 (Platform integration + Embedded chat + Public hub). **Launch 후 즉시**: 4 (Format adapters). **Phase 3**: 5, 6, 7. ## 활용 KPI - Hub URL deploys per user per week (활용 빈도) - LLM platform integrations active (partnership) - Public hub follows (viral signal) - MCP tool usage rate - Embedded chat engagement --- # 9. Strategic Position ## 시장 자리 ``` Retrieval-focused Delivery-focused (query systems) (URL-based) ↓ ↓ Auto-extracted Mem0, Letta [없음 — gap] OpenAI Memory Google Memory Bank User-authored Notion (closed) [memory.wiki] ⭐ Obsidian (local) LLM-compiled LLM Wiki (Karpathy) [memory.wiki Phase 3] (local Obsidian) (cloud variant) ``` memory.wiki의 자리: **User-authored + Delivery-focused + URL-based**. 이 자리가 비어있음. memory.wiki가 차지. ## 5 Pillars of memory.wiki 1. **URL as API** — 어떤 AI든 fetch 가능, no SDK 2. **Graph is product** — concept ontology + relations 3. **Multi-surface capture** — 7+ surfaces from day one 4. **AI-augmented authorship** — user author + AI organize 5. **Open Bundle Spec** — standard formation ## 차별화 narrative (sharp) ### vs Mem0/Letta > "They extract memory from your conversations. memory.wiki delivers your knowledge graph to any AI." ### vs Karpathy LLM Wiki > "LLM Wiki is one local knowledge base, LLM-compiled. memory.wiki is doc + bundle + hub — scoped composition for cloud delivery." ### vs Notion / Obsidian > "Notion locks knowledge in workspace. Obsidian locks in folder. memory.wiki ships knowledge as URL — readable by any AI." ### vs ChatGPT Memory / OpenAI > "ChatGPT remembers about you, inside ChatGPT. memory.wiki is your knowledge, deployable to ChatGPT, Claude, Cursor — anywhere." ## Honest positioning > Mem0와 Letta는 자동 추출에 훌륭합니다. Karpathy LLM Wiki는 local compilation에 훌륭합니다. Notion은 closed workspace에 훌륭합니다. memory.wiki는 그 사이의 layer입니다 — user-authored, AI-organized, URL-delivered, multi-AI compatible. ## Strategic moat 3 layers of defensibility: 1. **Multi-surface infrastructure** — 7+ surfaces, day one shipped 2. **Graph engine** — concept ontology auto-build, accumulating 3. **Delivery model** — URL-based, any AI inherits 이 셋이 합쳐지면: - 사용자 떠나기 어려움 (graph lock-in) - 경쟁사 따라잡기 어려움 (multi-surface) - AI 회사들이 copy 어려움 (delivery infrastructure) --- # 10. Business Model ## Pricing (v7 — 3-tier framework 반영) ``` Free - 수집 unlimited (모든 surfaces) - 소화 limited (월 50 docs concept extract, 3 bundles AI analyze) - 활용 basic (Doc URL public only) - Real-time collab (2 users) - Community MCP server (read-only) Pro $9/mo (개인) ⭐ 수집 + 소화 full - 수집 unlimited - 소화 unlimited (concept extract, bundle analyze) - 활용 essential: * Private docs * Custom domain * Bundle Compact + Full * Hub URL (basic) * 10 AI-generated bundles/month * Embedded chat (limited) - Tags, folders - Version history - Custom domain Build $19/mo (Power user, AI builder) ⭐ 활용 full - All Pro features - 활용 unlimited: * Unlimited AI-generated bundles * AI-specific format adapters (Claude/GPT/Cursor) * Embedded chat unlimited * Public hub sharing * Hub URL custom domain - API access (read/write) - MCP server full (write enabled) - Bundle versioning + snapshots - Webhook integrations - Voice capture (mobile) Team $19/seat/mo - All Build features - Shared workspaces - Shared bundles + hubs - Hub-to-hub merge - Permissions, audit log - SSO (Google → SAML) - Slack/Discord integration Scale $499+/mo - Public bundle marketplace - Custom rate limits - SLA, priority support - Dedicated MCP infrastructure - Multi-region Enterprise (협의) - Self-host option - SAML SSO - LLM Wiki integration support - Custom audit/compliance - Direct LLM platform partnership pricing ``` ## Pricing 의도 (3-tier driven) ### Free → Pro $9 - Free에서 publishing 충분 - Pro upgrade 동기: **AI-generated bundles 10개/월** (가장 강력) **Private docs** **Custom domain** **소화 unlimited** ### Pro → Build $19 - Bundle 무제한 AI generation - **AI-specific format adapters** (quality moat) - **Public hub sharing** (viral mechanic) - **API/MCP write access** (developer) ### Build → Team - Shared workspaces - Hub-to-hub merge - Audit log ### Team → Enterprise - Self-host - Platform partnership - SOC 2 ## Unit Economics ### Pro $9 - Stripe: $0.56 - Hosting: \~$0.50 - AI base (concept extract, bundle analyze): \~$1.00 - AI generation (avg 5/month): \~$0.30 - Embeddings: \~$0.05 - **Margin: \~74%** ### Build $19 - Stripe: $0.85 - Hosting: \~$0.80 - Unlimited AI generation: \~$2.00 - Format adapters processing: \~$0.30 - API/MCP infra: \~$0.50 - **Margin: \~71%** Margin이 v6보다 낮음 (AI cost 추가). 단 conversion이 더 강력해서 LTV 증가. ## Revenue Projections (12개월) ### Conservative - 3,000 paid users - ARPU $11 - $33K MRR / $400K ARR ### Realistic - 8,000 paid users - ARPU $11 - $88K MRR / $1.0M ARR ### Optimistic - 18,000 paid users - ARPU $12 - $216K MRR / $2.5M ARR --- # 11. 16-Week Launch Roadmap ## 전체 schedule (Now → 2026년 8월 말) ``` Week 1-4 Brand + Foundation Week 5-8 Tier 1 강화 (수집) Week 9-11 Tier 2 강화 (소화) Week 12-14 Tier 3 강화 (활용) Week 15 Beta + Polish Week 16 Public Launch ``` ## Week 1-4: Brand + Foundation ### Week 1 - Brand identity 결정 (visual) - About 페이지 v7 framing 적용 - Manifesto v7 작성 - memory.wiki landing page 활성화 (SEO 시작) ### Week 2 - mdfy.app → memory.wiki migration 시작 (phased) - Hero 새 카피 push - Three pillars 새 본문 (수집/소화/활용) - Bundle Spec v1.0 draft 공개 준비 ### Week 3 - 한국어 사이트 (선택, 또는 launch 후) - Pricing 페이지 update (Build tier 활성화) - Demo 영상 시나리오 작성 (3편) - Press kit 준비 ### Week 4 - Investor 자산 (one-pager, deck draft) - Beta tester 모집 시작 (50명 target) - Manifesto post (Substack/blog) ## Week 5-8: Tier 1 강화 (수집) ### Week 5-6: iOS Share Sheet - iOS Share Extension 개발 - Universal capture from any iOS app - TestFlight 배포 - 기존 사용자 (Hyunsang님) 자체 테스트 ### Week 7-8: AI conversation auto-suggest - Chrome extension upgrade - ChatGPT/Claude 대화 monitor - "Save this?" subtle prompt - A/B test heuristics ## Week 9-11: Tier 2 강화 (소화) ### Week 9-10: Bundle 자동 생성 - AI bundle generation backend - 자연어 요청 → bundle draft - 사용자 review/edit UX - Cross-bundle auto-link activate ### Week 11: Question-driven exploration - Hub chat interface - Embeddings + concept lookup - Cited answers UI ## Week 12-14: Tier 3 강화 (활용) ### Week 12: Embedded chat with hub context - mdfy.app/chat UI - Hub auto-context - Conversation history → docs ### Week 13: Public hub sharing - "Make hub public" option - Public hub URL - Following feed (basic) ### Week 14: Direct LLM platform integration (Custom GPT first) - ChatGPT Custom GPT for memory.wiki - One-click install - Optional: Claude MCP guide, Cursor rules ## Week 15: Beta + Polish - 50명 beta tester 본격 운영 - 매일 피드백 처리 - Bug fix - Onboarding 최적화 ## Week 16: Public Launch ⭐ ### Day 1-2: Final prep - Demo 영상 3편 완성 (수집/소화/활용) - Show HN 글 5개 후보 finalize - Twitter thread 10 tweets - Product Hunt 페이지 ### Day 3: Show HN - 오전 9시 PST - "Show HN: memory.wiki — your knowledge graph as a URL for any AI" ### Day 4: Twitter + dev community ### Day 5: Product Hunt ### Day 6: Manifesto post + Bundle Spec announcement ### Day 7: AI newsletters (Latent Space, AI Engineer, etc.) --- # 12. Launch Strategy ## Big Launch v7 3 narratives 동시에: ### 1. Product narrative > "memory.wiki — your knowledge graph as a URL for any AI." Multi-surface capture. AI auto-graph. Universal delivery. ### 2. Open standard narrative > "Bundle Spec v1.0 — open standard for AI-deployable knowledge." GitHub RFC. Reference implementation. Community formation. ### 3. Founder narrative > "I built memory.wiki in 5 months. Multi-surface, AI graph, MCP-ready. Now going full-time. Betting that markdown URLs become AI's universal interface." ## Launch Day 채널 (Week 16) ### Tuesday: Show HN **제목 후보**: 1. "Show HN: memory.wiki — your knowledge graph as a URL for any AI" 2. "Show HN: I built a delivery-first AI memory layer (vs Mem0's extraction)" 3. "Show HN: Bundle Spec — open standard for AI-deployable knowledge" 4. "Show HN: memory.wiki + 26-tool MCP server for any LLM host" 5. "Show HN: A wiki for AI that any LLM can fetch as a URL" 저는 **1 또는 5** 추천. Sharp + accessible. ### Wednesday: Twitter/X - 10-tweet thread - Demo GIFs (각 단계별) - Karpathy LLM Wiki 보완재 framing ### Thursday: Product Hunt - "memory.wiki — Your knowledge graph as a URL for any AI" ### Friday: Manifesto + Bundle Spec - Manifesto post (1,800 단어) - Bundle Spec announcement post (separate) - AI newsletters ## Pre-Launch Strategic Conversations Week 12-15에 outreach: ### Tier 1 (Partnership priority) - **Anthropic**: MCP integration showcase - **Cursor**: Memory layer integration (cursor rules) - **Continue (OSS)**: Reference implementation - **Cognition / Devin**: Agent memory backbone ### Tier 2 (Awareness) - **OpenAI**: Custom GPT showcase - **Perplexity**: Research memory - **Replit Agent**: Memory infrastructure ### Tier 3 (Community) - **LLM Wiki community**: Spec feedback, complementary framing - **Karpathy**: Spec 인지 (가능하면) - **Markdown community** (Obsidian, HackMD): Awareness ## Bundle Spec 발표 ### Pre-launch (Week 14-15) - GitHub: github.com/raymindai/bundle-spec - README + full spec - Reference impl: memory.wiki ### Launch day - Spec announcement post - HN/Twitter에 spec 링크 - LLM Wiki community에 보완재 framing ### Post-launch - RFC iteration - Community contributions - Other tools implement (Obsidian plugin 가능성) ## KPI 목표 (v7) ### Week 16 (Launch) - 2,000-3,000 signup - 500+ Chrome ext install - 100-150 paid (mix Pro $9 + Build $19) - $1,500-2,500 MRR - 100+ Bundle 생성 (50%+ AI-generated) - 50+ Hub URL 활성 - HN top 3 - Bundle Spec GitHub stars 200+ - 5-10 media mentions ### Month 3 (Post-launch) - 8,000-12,000 signup - $8-15K MRR - 500+ AI-generated bundles/week - 100+ Public hubs - 첫 LLM platform partnership 발표 ### Month 6 - 30,000-50,000 signup - $25-40K MRR - Voice capture launched (mobile) - AI agent integrations 15+ - Team workspace beta ### Month 9 - 100,000+ signup - $50-80K MRR - Bundle Spec v1.0 final - 첫 enterprise pilot - LLM Wiki Obsidian integration POC ### Month 12 - $80-150K MRR - 카테고리 인지 top 5 - Strategic conversations (Anthropic, OpenAI 등) - Series A 가능 시점 --- # 13. 12-Month Outlook ## Year 1 outcome 시나리오 ### Conservative - $50-100K MRR - 8,000-15,000 paying users - Bundle Spec published, 200+ stars - Voice capture launched - 첫 partnership announcement ### Realistic - $100-200K MRR - 15,000-25,000 paying users - Bundle Spec v1.0 final - LLM Wiki integration - 첫 enterprise pilot - Series A optional ### Optimistic - $250-400K MRR - 30,000+ paying users - Bundle Spec adoption (3+ tools) - 첫 LLM platform default integration - Series A active ## Year 2 ### Conservative - $500K-1.5M ARR - Sustainable indie + spec community - 강한 카테고리 brand ### Realistic - $2-5M ARR - Bundle Spec open standard - 첫 enterprise customers - 외부 자본 검토 또는 받음 ### Optimistic - $5-15M ARR - C2PA-style consortium - Strategic acquisition 제안 ($50-200M) - Series A ($30-100M valuation) ## Year 3 ### Conservative - $1.5-5M ARR sustainable ### Realistic - $10-25M ARR - Bundle Spec industry standard - Acquisition ($100-300M) - 또는 Series B ### Optimistic - $30M+ ARR - LLM platform default integration - Acquisition $200M-1B range - Series B 가능 ## Exit Scenarios ### Strategic Acquisition Candidates - **Anthropic**: Memory layer for Claude/MCP ecosystem - **OpenAI**: Personal memory infrastructure - **GitHub/Microsoft**: Knowledge hub for Copilot - **Notion**: AI memory acquisition (counter-positioning) - **Cursor / Cognition**: Agent memory backbone - **Atlassian / Linear**: Team docs + memory ### Sustainable Indie - $5M+ MRR - Spec community - Personal asset + freedom ### Standards Body - Bundle Spec → industry standard - Long-term shaping (W3C-like) --- # 14. Risk Register ## Risk 1: 거인들 진입 (확률 60%, impact 매우 큼) ### 시나리오 - Anthropic memory layer - OpenAI Memory 확장 - Google Memory Bank ### Mitigation - 16주 launch (first-mover advantage 빠르게) - Bundle Spec 발표 (표준 차지) - Multi-LLM agnostic (거인은 자기 ecosystem만) - Delivery model (closed system 따라잡기 어려움) - LLM Wiki community 동맹 ## Risk 2: Build scope creep (확률 50%, impact 매우 큼) ### 시나리오 - 3 tier 각각 enhancement 모두 build 시도 - Launch 16주 → 24주 → 무한 연기 ### Mitigation - 각 tier launch 전 commit features 명확 (1, 2번만) - 나머지는 Phase 3로 - 매주 progress review - Week 8, 12, 14 reality checks ## Risk 3: 첫 beta tester 모집 어려움 (확률 15%, impact 큼) ### Mitigation - 채널 5개 다각화 (Discord, HN, Twitter, LLM Wiki community, Markdown community) - mdfy.app 이미 사용 가능 (try first, no waitlist) - Manifesto post로 inbound ## Risk 4: Graph 개념 사용자 이해 못 함 (확률 40%, impact 중간) ### 시나리오 - "Concept graph"가 abstract - 사용자가 가치 못 느낌 ### Mitigation - /galaxy 시각화로 즉시 see - Demo 영상에서 use case - "그래프 자동" UX (사용자가 build할 필요 없음) - Question-driven exploration로 즉시 utility ## Risk 5: Bundle Spec adoption 안 됨 (확률 50%, impact 중간) ### Mitigation - memory.wiki가 reference impl - LLM Wiki community 협업 - Spec 단순함 (CommonMark + YAML) - Format adapters로 immediate value ## Risk 6: AI cost spiral (확률 30%, impact 중간) ⭐ NEW ### 시나리오 - Free tier 사용자가 AI feature 남용 - AI generation cost가 revenue 초과 ### Mitigation - Rate limits (월 50 docs concept extract for Free) - AI generation paywall (Pro 10/month) - 3-provider failover (cost optimize) - Embedding cache (`embedding_source_hash`) - Concept extraction throttle (30 min per doc) ## Risk 7: Solo burnout (확률 50%, impact 매우 큼) ### Mitigation - 16주 timeline (8주보다 sustainable) - 매주 1일 OFF - Week 8, 12 reality check - Month 3+ 자동화 - Month 6+ 외주 (콘텐츠, 카피) ## Risk 8: LLM platform 미협력 (확률 40%, impact 큼) ⭐ NEW ### 시나리오 - "Default memory layer" vision - 단 Anthropic/OpenAI가 자기 solution 우선 - Partnership 거부 ### Mitigation - Plan B: bottom-up (사용자 → request 압박) - Custom GPT, MCP는 platform 동의 필요 없음 - 사용자 base 충분히 크면 platform이 협력 동기 - 단기에는 ChatGPT Custom GPT부터 ## Risk 9: Brand rename confusion (확률 20%, impact 중간) ⭐ NEW ### 시나리오 - mdfy.app → memory.wiki migration - 기존 사용자 confusion - SEO 손실 ### Mitigation - Phased migration (Week 2 시작) - mdfy.app → memory.wiki 자동 redirect (영구) - Email 사용자 알림 - Brand story로 narrative 만들기 --- # 15. Brand Identity (TBD) ## 결정된 것 - **Name**: memory.wiki (final, 도메인 확보) - **Tone**: 진지함 + 따뜻함 (knowledge + craft) - **Voice**: Authoritative + accessible ## TBD (Visual) 이전에 mori.wiki 시절 결정한 "90% 숲 + 10% 해골 + pixel art"는 mori (memento mori) 의미와 align한 것. memory.wiki로 변경되면서 reconsider 필요. ### Visual 옵션 **A**: Pixel art forest + skull keep (narrative 조정) > "Memory like a forest. The skull is the reminder." **B**: 새 visual identity (memory에 fit) > Brain, neural network, library 등 motif **C**: Minimalist (no specific motif) > 단순 wordmark, monogram **D**: Decide at launch -2 weeks (doc 전략) ### 추천: D (Launch 임박 시 결정) doc의 strategy 따라 launch 2주 전 finalize. 그때까지 wordmark만 사용. ### Color palette 후보 **Tone 1: 깊고 진지함** - Deep blue + cream - Inkwell knowledge feel **Tone 2: 자연 + 지식** - Forest greens + bone cream (mori legacy) - Growth + memento **Tone 3: AI 시대 modern** - Charcoal + electric blue - Tech but human Launch 2주 전 결정. --- # 16. Decisions Log (v7) ## v6 결정사항 유지 | 결정 | 답 | | --- | --- | | Manifesto core | "Own your markdown, build your knowledge graph" | | Open source | Bundle Spec OSS | | Founder commit | 풀타임 100% | | Multi-surface | Day one core moat | | 3-tier funnel | 수집 / 소화 / 활용 | ## v7 신규 결정사항 | 결정 | 답 | | --- | --- | | **Brand name** | **memory.wiki** (final, 확보) | | **Strategic thesis** | **"Markdown URL = API for any AI" + "Graph is product"** | | **Three Pillars** | **수집 / 소화 / 활용 (Capture / Digestion / Utilization)** | | **Launch deadline** | **2026년 8월 말 (16주)** | | **Visual identity** | **TBD (launch 2주 전 결정)** | | **Existing domain** | **mdfy.app → memory.wiki phased migration** | | **Rust engine narrative** | **제거 (sunset된 사실)** | | **Graph 개념** | **Plan + marketing 중심** | | **Real-time collab** | **Marketing 자산으로 추가** | | **MCP 26 tools** | **자산으로 자랑** | | **/galaxy 시각화** | **Demo 자산** | ## Tier별 launch features (commit) ### 수집 (Tier 1) - ✅ iOS Share Sheet - ✅ AI conversation auto-suggest - ⏳ Voice capture (POC if time) - 🔜 Email forward (post-launch) - 🔜 RSS sync (Phase 3) - 🔜 Slack/Discord (Phase 3) ### 소화 (Tier 2) - ✅ Bundle 자동 생성 - ✅ Question-driven exploration - ✅ Cross-bundle auto-link - 🔜 Auto-summarization digest (post-launch) - 🔜 Contradiction detection (Phase 3) - 🔜 Knowledge gap detection (Phase 3) - 🔜 Concept evolution (Phase 3) ### 활용 (Tier 3) - ✅ Direct LLM platform integration (Custom GPT first) - ✅ Embedded chat with hub context - ✅ Public hub sharing - 🔜 AI-specific format adapters (post-launch) - 🔜 Smart Hub digest (Phase 3) - 🔜 Hub-to-hub merge (Phase 3) - 🔜 Time travel (Phase 3) --- # Mantra ## 매일 self-check > **"이 feature 없으면 launch 못 하는가?**"NO → Phase 3 list로 미룸 > **"3-tier 어느 부분 강화 중인가?**"수집 / 소화 / 활용 각각 1개씩 commit > **"Graph가 작동하는가?**"Graph = product. 깨지면 안 됨. > **"URL = API thesis가 살아있는가?**"모든 결정의 anchor > **"이게 movement를 만드는가?**"Standard-setting ambition. ## 한 줄 > memory.wiki — your knowledge graph as a URL for any AI. 수집은 multi-surface로. 소화는 AI graph로. 활용은 어떤 AI든 URL로. 16주 안에 launch한다. Markdown URLs become the universal AI memory interface. --- # 부록: 관련 문서 ## 작성 완료된 문서 1. mdfy-master-business-plan.md — v4 (deprecated) 2. mdfy-direction-v5.md — v5 (deprecated) 3. mdfy-direction-v6.md — v6 (deprecated) 4. mdfy-manifesto-v6-en.md — v6 manifesto (needs v7 rewrite) 5. mdfy-manifesto-v6-ko.md — v6 한국어 manifesto 6. mdfy-three-pillars-v6.md — v6 pillars 7. mdfy-bundle-spec-v1.md — Bundle Spec (v7 update 필요) 8. mdfy-claude-code-handoff.md — interim site (deprecated) 9. **mdfy-direction-v7.md** — 이 문서 (v7 FINAL) ## 다음 작성 필요 - **Manifesto v7** (memory.wiki + 3-tier + graph thesis 반영) ← 다음 task - Bundle Spec v2 (memory_bundle field 변경) - Three pillars v7 (수집/소화/활용) - Show HN 글 5개 후보 - Demo 영상 시나리오 3편 ## Ground truth references - **OVERVIEW.md**: <https://mdfy.app/bmZYfZez> - **HOW-IT-WORKS.md**: <https://mdfy.app/KRKz_MD-> --- *문서 작성: 2026-05-20Brand: memory.wiki (final)Launch: 2026년 8월 말 (16주)Built by: Hyunsang at Raymind.AIExisting: github.com/raymindai/* (mdfy → memory.wiki migration) *Contact: [hi@raymind.ai](mailto:hi@raymind.ai)* --- id: pBEnMXSs title: Memory.wiki Business Plan and Architecture url: https://memory.wiki/pBEnMXSs updated: 2026-05-20T14:29:26.281559+00:00 --- # Memory.wiki Business Plan and Architecture > These documents chronicle the evolution of memory.wiki from concept to finalized business plan, articulating a vision to solve AI knowledge delivery through URLs that serve as APIs for any AI system. The project underwent significant rebranding from "mdfy" to "memory.wiki" while maintaining its core architectural principle of URL-native knowledge sharing. ## Key claims - [EXTRACTED] "A memory.wiki URL is an API for any AI" - users can paste `memory.wiki/<id>`, `memory.wiki/b/<id>`, or `memory.wiki/hub/<slug>` into ChatGPT, Claude, Gemini, or Cursor [doc-1, doc-4] - [EXTRACTED] The system operates on a three-tier architecture: "수집/소화/활용" (capture/digestion/utilization) where users author content, AI organizes it into graphs, and any AI can consume it [doc-1, doc-4] - [EXTRACTED] The core problem is knowledge delivery, not AI memory: "매일 수백만 명이 ChatGPT, Claude, Gemini, Cursor에 자신의 사고를 쏟아붓니다... 그리고 탭을 닫습니다" [doc-5] - [INFERRED] The project underwent significant strategic pivoting between versions v6 and v7, including a complete rebrand from "mdfy.app" to "memory.wiki" while preserving the fundamental URL-as-API architecture [doc-3, doc-4] - [EXTRACTED] The business model positions memory.wiki as "LLM 서비스의 기본 지원 메모리 레이어" (fundamental memory layer for LLM services) [doc-1] - [AMBIGUOUS] The system involves four core components - markdown source, AI-generated graphs, concept index, and embeddings - but the exact automation boundaries between user authoring and AI organization vary across descriptions [doc-3, doc-4] ## Cross-references - **URL Architecture**: Both the original "mdfy" concept [doc-3] and final "memory.wiki" plan [doc-1, doc-4] emphasize the same three-tier URL pattern, showing consistency in technical vision despite branding changes - **AI Integration Philosophy**: Document 5's manifesto complements the business plans by framing the problem as knowledge delivery rather than memory, supporting the URL-native solution described in the technical documents - **Timeline Evolution**: The launch deadline shifted to "2026년 8월 말 (16주)" [doc-1, doc-4], indicating project acceleration from initial concept to full-time development ## Open questions / gaps - How will the platform handle authentication and privacy for sensitive knowledge graphs? - What specific competitive advantages exist over existing knowledge management tools that might add AI integration? - How will the semantic search and concept indexing perform at scale across diverse user knowledge domains? ## Provenance - [doc-1]: Business plan v7 providing executive summary and strategic positioning for memory.wiki - [doc-2]: Meta-document synthesizing the overall development journey and vision - [doc-3]: Technical architecture explanation for the original "mdfy" concept, detailing the four core system components - [doc-4]: Full business plan v7 with detailed roadmap, business model, and go-to-market strategy - [doc-5]: Founder's manifesto explaining the philosophical motivation and problem definition behind memory.wiki --- id: r-um_oJp title: Publish my meeting notes to mdfy url: https://memory.wiki/r-um_oJp updated: 2026-05-20T12:34:59.779+00:00 --- # Publish my meeting notes to mdfy > **You:** "Publish my meeting notes to mdfy" I'll create the document now. → mdfy_create({ markdown: "# Meeting Notes..." }) Document created: URL: https://mdfy.cc/d/abc123 Status: publicly accessible ``` ### Read a document ``` --- > **You:** "Read the document at mdfy.cc/d/abc123" → mdfy_read({ id: "abc123" }) Here's the content: # Meeting Notes ... ``` ### Update a document ``` --- > **You:** "Add a summary section to my doc" → mdfy_read({ id: "abc123" }) → mdfy_update({ id: "abc123", markdown: "# Meeting Notes\\n\\n## Summary\\n..." }) Document updated. Same URL: https://mdfy.cc/d/abc123 ``` ### List your documents ``` --- > **You:** "Show me my mdfy documents" → mdfy_list() Found 8 documents: 1. Meeting Notes (abc123) — shared — 12 views 2. API Design (def456) — private — 3 views ... ``` ### Make private / public ``` --- > **You:** "Make that document private" → mdfy_publish({ id: "abc123", published: false }) Document is now private (draft). ``` ### Cross-AI workflow ``` You (in Claude): "Summarize mdfy.cc/d/abc123" --- → reads the document → provides summary You (in ChatGPT): "Read mdfy.cc/d/abc123 and suggest improvements" --- fetches the URL → gives feedback You (in Claude): "Update mdfy.cc/d/abc123 with the improvements" --- → mdfy_update → same URL, updated content ``` ## Available Tools ### Core (6 tools — local stdio package) | Tool | Description | |------|-------------| | `mdfy_create` | Create document, get URL | | `mdfy_read` | Read document content | | `mdfy_update` | Update document | | `mdfy_list` | List your documents | | `mdfy_publish` | Toggle public/private | | `mdfy_delete` | Delete document | ### Extended (25 tools — hosted HTTP MCP) Append/prepend, sections (outline, extract, replace), duplicate, import URL, password protection, expiry, email restrictions, version history, diff, stats, folders, and more. --- ``` --- id: bmZYfZez title: mdfy — Product, Features, Technology (2026-05) url: https://memory.wiki/bmZYfZez updated: 2026-05-20T12:32:15.053+00:00 --- # mdfy — Product, Features, Technology (2026-05) > One-page reference. Skim it before any meeting, pitch, or > onboarding. Pairs with `HOW-IT-WORKS.md` (mental model) and > `ROADMAP`-style notes (what's next). --- ## 1. Product **Tagline.** The fastest way from thought to shared document. **One sentence.** mdfy turns any markdown — typed, pasted from an AI, imported from a file — into a clean public URL that any human reads in a browser and any LLM (Claude, ChatGPT, Gemini, Cursor) ingests as native context. **Why it has a moat.** | Moat | What it means | | -------------------- | ---------------------------------------------------------------------------------------------- | | **Viral badge loop** | Every shared doc carries a "Published with mdfy.app" badge → free distribution. | | **Cross-AI layer** | mdfy sits between *every* LLM and the human. No single AI company can replicate that position. | | **URL-native** | The doc isn't a file behind an app — it's an address. AI agents pull it directly. | | **Rendering quality**| GFM + KaTeX + Mermaid + ASCII diagrams + footnotes share one renderer across every surface. | **Strategic anchor.** A mdfy URL is an API for any AI. See `HOW-IT-WORKS.md` for the full mental model. --- ## 2. URL architecture (the user-facing shape) Three tiers, each with its own page route and its own LLM-ready `/raw` payload. | Tier | URL | Holds | | ---------- | -------------------- | --------------------------------------------------------------------- | | **Doc** | `mdfy.app/<id>` | A single markdown document. The atom. | | **Bundle** | `mdfy.app/b/<id>` | An ordered set of docs + an AI-extracted graph (themes, edges). | | **Hub** | `mdfy.app/hub/<slug>`| A user's whole bundle library + cross-bundle concept ontology. | Auxiliary surfaces: - `mdfy.app/d/<id>` — reader-only viewer for non-owners. - `mdfy.app/embed/<id>` — iframe-friendly stripped render. - `mdfy.app/raw/...` — plain-markdown payload for AIs / scrapers / RSS-like consumers. --- ## 3. Feature inventory ### Editing & rendering - Tiptap (ProseMirror) **Live** tab — WYSIWYG over the same markdown-it parser the viewers use, so output is identical across editor / viewer / embed. - CodeMirror 6 **Source** tab — raw markdown editing with selection, paste, image-upload handlers. - **Split** view that wires Source ↔ Preview. - GFM tables, task lists, footnotes, KaTeX (`$..$`, `$$..$$`), Mermaid (dark/light aware), code highlighting (highlight.js), ASCII box-diagram detection. ### AI integration - Three-provider failover: Anthropic → OpenAI → Gemini, runtime-chosen via `lib/ai-providers.ts`. - In-doc actions (selection toolbar): polish / shorten / expand / translate. - AI side panel (chat about the active doc / bundle / hub). - Visitor "Ask AI about this doc" on the public viewer — uses a dedicated `visitor_chat` action so the LLM answers, never echoes the doc. - Concept index (ontology extraction per doc) → cross-bundle graph at the Hub level. - Embeddings: per-doc + per-chunk pgvector vectors backing semantic search via MCP. ### Real-time collaboration - Yjs CRDT over **Supabase Realtime broadcast** (`yjs-doc-{cloudId}` channel). - Storage shape is markdown-string Y.Text, not y-prosemirror — sync works the same whether you're on Live, Source, or Split. - Remote cursor presence: - Source pane: line/col carets via a CM6 StateField. - Live pane: ProseMirror Decoration plugin keyed on `pmPos` (both peers parse identical markdown to identical PM docs, so positions match across clients without y-prosemirror). - Header presence avatars (`usePresence`): up to **5 collaborator avatars**, then an overflow `+N` chip. Self is filtered out. Per-user color from a stable 8-hue palette (`lib/user-color.ts`) so identity persists across reconnects/devices. ### Permissions - Three roles per doc: `owner` (created by you, full control) / `editor` (in `allowed_editors`) / `readonly` (in `allowed_emails` only). - `edit_mode`: `owner` / `account` / `token` / `view` / `public`. - Editor-role users land on the live editor, not the read-only viewer (the `/d/<id>` route auto-redirects them). - Snapshot + auto-save endpoints both accept owner-or-editor (verified via JWT bearer OR `x-user-*` header fallback). ### Sharing & visibility - Short URLs (nanoid). - Per-user nanoid Hub slug (auto-created on sign-in). - Restricted docs gate non-allowed visitors with a password / sign-in flow. - Permanent URLs — docs **never expire** (pricing policy: free during beta, future Pro for auto-analysis; expiry never). - Public viewer carries a "Published with mdfy.app" badge. ### Multi-channel app surfaces | Channel | Status | | --------------------------- | --------------------------------------- | | `mdfy.app` web | Live on Vercel | | VS Code (mdfy-vscode) | Marketplace v1.4.0 | | Desktop (DMG) | v2.2.0, Developer ID signed + notarized | | Chrome Web Store | v2.x | | CLI (mdfy-cli) | npm v1.3.x | | MCP server (mdfy-mcp) | npm v1.3.x | | macOS QuickLook plugin | Bundled inside Desktop DMG | ### Misc UX - Dark / light themes with CSS-variable token system; mobile-responsive. - Drag-and-drop import, paste-as-markdown, GitHub repo import, GFM tables paste support. - "Start" landing — Recent / Create / Drop zone / Deploy to AI sections, foldable. - Sidebar tabs with persistence, multi-select, drag-reorder. - Export all user data as JSON (`/api/user/export`). - Visit log per signed-in user (Shared with Me, Recently Visited). --- ## 4. Technology stack ```text ┌───────────────────────────────┐ typing ───────► │ Tiptap Live (ProseMirror) │ │ ↕ tiptap-markdown serializer│ │ CodeMirror 6 Source pane │ └──────────────┬────────────────┘ │ markdown string ▼ ┌───────────────────────────────┐ │ lib/render.ts │ │ markdown-it + footnote │ │ + KaTeX, Mermaid, │ │ highlight.js, ASCII boxes │ └──────────────┬────────────────┘ ▼ ┌───────────────────────────────┐ │ HTML in every viewer/embed/ │ │ /raw payload (one renderer) │ └───────────────────────────────┘ ``` ### Frontend - **Next.js 15** (App Router), client-rendered editor via `dynamic({ ssr: false })`. - **Tiptap** for the Live tab; **CodeMirror 6** for Source. - **TailwindCSS** + CSS-variable token system (`globals.css`). - **Lucide** icons. ### Persistence & sync - **Supabase Postgres** — `documents`, `bundles`, `concept_index`, `document_chunks`, `document_versions`, `notifications`, `user_visits`, … - **Supabase Auth** — OAuth (Google), email; JWT bearer + `x-user-id` / `x-user-email` header fallback so non-browser clients (CLI, MCP, Chrome ext) still resolve identity. - **Supabase Realtime** — broadcast channels: - `yjs-doc-{cloudId}` — Yjs CRDT updates. - `doc-cursor:{cloudId}` — remote-cursor presence. - `doc-presence-{cloudId}` — durable "who's here" via `usePresence`. ### AI infrastructure - `lib/ai-providers.ts` failover (Anthropic → OpenAI → Gemini). - `lib/embeddings.ts` — OpenAI text-embedding-3-small for doc + chunk vectors. - `lib/chunk-doc.ts` — heading-aware chunking for RAG retrieval. - pgvector for similarity search. ### Hosting & CI - **Vercel** — `git push origin main` → Actions CI → auto-deploy mdfy.app. - **GitHub Actions** (`.github/workflows/ci.yml`) — build-web + e2e-test. - Domains: **mdfy.app** primary; mdfy.online redirects in; mdcore.ai / .org / .md parked (historical, sunset planned). ### One renderer everywhere Every non-edit surface — web viewer, embed, bundle, hub, VS Code preview, Desktop preview, Chrome extension popup, raw payload — runs the **same `lib/render.ts`** (vendored to each channel). That's why "looks different in viewer than in editor" can't structurally happen. --- ## 5. Repository layout ```text mdcore/ # repo name is historical — product is "mdfy" ├── apps/ │ ├── web/ # Next.js 15 web app → mdfy.app (the main product) │ ├── vscode-extension/ # mdfy-vscode (Marketplace) │ ├── desktop/ # mdfy Desktop (Electron DMG) │ ├── chrome-extension/ # mdfy Chrome (Web Store) │ ├── cli/ # mdfy-cli (npm) │ └── quicklook/ # macOS QuickLook ├── packages/ │ └── mcp/ # mdfy-mcp (npm, MCP server) ├── docs/ # strategy notes, gap analyses, this file ├── .github/workflows/ci.yml └── vercel.json ``` The Rust → WASM engine that used to live in `packages/engine` was fully sunset on 2026-05-16. All surfaces are now JS-only via the markdown-it pipeline. --- ## 6. Strategic notes (Aug 2026 launch context) - Public launch held for end of August 2026; beta is free. - Two-door product framing: **personal knowledge hub for the AI era**, accessed via memory (capture / publish) AND wiki (curate / share). - Brand rename is deferred until ~2 weeks before public launch (shortlist: brains.wiki, mind.wiki, itsmy.wiki). - mdfy IS Graph RAG, but the differentiation is **delivery model, not retrieval** — the graph ships in the URL payload so any external AI inherits it. - vs Karpathy's LLM Wiki: mdfy is hub + N bundles + M docs (scope composition); Karpathy is one unified wiki. Per-project AGENTS.md / .cursor/rules want context shaped like bundles, not like one wiki. --- id: QF-bp5G_ title: How memdo 멤도 works url: https://memory.wiki/QF-bp5G_ updated: 2026-05-19T17:14:56.469+00:00 --- # How memdo 멤도 works > Read this once and you'll be able to explain mdfy.app to anyone — a teammate, a journalist, an investor, the AI you're about to paste a URL into. It assumes nothing. --- ## The one idea **A mdfy URL is an API for any AI.** When you paste `mdfy.app/d/abc123` or `mdfy.app/b/xyz` or `mdfy.app/hub/yourname` into ChatGPT, Claude, Gemini, or Cursor, the LLM fetches that URL and gets back clean markdown — *your* thinking, already shaped for an AI to read. No app to install. No format to learn. No JS to render. Just markdown over HTTPS. That is the entire product. Every other feature exists to make the markdown that comes back from those URLs more useful. --- ## The four moving parts Inside mdfy there are exactly four things to know about: | Part | What it is | Where it lives | | --- | --- | --- | | **The markdown** | Source of truth. What the human types. | `documents.markdown` | | **The AI graph** | What Claude/GPT extracted from a *bundle*: themes, insights, edges. | `bundles.graph_data` (JSON) | | **The concept index** | The user's lifelong ontology — concepts pooled across every bundle. | `concept_index` + `concept_relations` | | **The embeddings** | Vectors. Power semantic recall (“which docs cover X?”). Internal. | `documents.embedding`, `bundles.embedding`, `document_chunks.embedding` | The first three end up in the markdown an LLM fetches. Embeddings never go to the LLM — they power the *second* way an LLM talks to mdfy (via MCP search). See "Two ways an LLM talks to mdfy" below. --- ## What an LLM gets when it fetches a mdfy URL There are three URL shapes. Each one returns markdown shaped for the shape's purpose. ### 1. `mdfy.app/d/<docId>` — a single document ``` --- title: "..." url: https://mdfy.app/d/abc123 updated: 2026-05-18T... --- # Doc title …the full markdown body… ``` No AI processing. Just the source markdown wrapped in frontmatter. This is the cheapest payload — and the link target the bundle and hub digests point *into* when an LLM needs deeper context. ### 2. `mdfy.app/b/<bundleId>` — a bundle (default: **Compact**) ``` --- type: bundle url: https://mdfy.app/b/xyz analysis_stale: false --- # Bundle title > intent: "why I made this bundle" ## Summary ← AI graph ## Themes ← AI graph ## Cross-document insights ## Concepts ← AI graph (this bundle's concept subgraph) ## Concept relations ## Documents - [Doc A](https://mdfy.app/d/...) — annotation - [Doc B](https://mdfy.app/d/...) — annotation ``` The bundle digest gives the LLM the **map** — what's in the bundle, how the pieces relate, what the prior AI thought after reading the whole set — plus a clickable index. The LLM follows the inline doc links only when it needs full bodies. Same context, \~95% fewer tokens than concatenating every doc. Append `?full=1` to inline every doc body. Expensive, occasionally the right call. ### 3. `mdfy.app/hub/<slug>` — a person's whole hub (default: **Compact**) ``` --- type: hub_digest url: https://mdfy.app/hub/yourname concept_count: 40 --- # Yourname's knowledge — concept digest ## Concepts ### Concept Label ← from concept_index *tag • weight 14 • 4 docs* > short description - [Linked doc](https://mdfy.app/d/...) … _Related:_ depends on → **Other concept** · contradicts → **Another** _In bundles:_ [Bundle A](https://mdfy.app/b/...) (3 docs) · [Bundle B](https://mdfy.app/b/...) (2) ## Concept relations - **Concept X** part_of **Concept Y** - **Concept Z** contradicts **Concept W** … ``` A hub digest is the **shape of someone's thinking** — top 40 concepts by weight, the typed edges between them, which bundle each concept lives in. Each entry is clickable, so the LLM navigates from "I see this person cares about X" → "X is most discussed in bundle Y" → fetch bundle Y for the rich AI graph. Useful extras: - `?full=1` — flat per-doc and per-bundle listing instead of the concept map. - `?since=2026-04-01` — only concepts that emerged after that date. Lets an LLM ask "what's new in this hub since last month?". --- ## Two ways an LLM talks to mdfy 1. **URL fetch (pull)** — covered above. The LLM has the URL, it wants the content, it `GET`s and reads. Works in every AI tool that can fetch a webpage (ChatGPT, Claude.ai web, Gemini, Perplexity, Cursor, your terminal). 2. **MCP server (push + pull)** — `mdfy-mcp` is a published npm package. Hosts that speak MCP (Claude Desktop, Cursor, Cline, Windsurf) load it once and gain 26 tools the LLM can call by itself: `mdfy_create`, `mdfy_append`, `mdfy_search`, `mdfy_outline`, `mdfy_versions`, `mdfy_publish`, etc. This is where embeddings earn their keep — `mdfy_search` uses vector similarity, not keyword match. So when someone asks "what does embeddings even do for me?" — the answer is: they let the LLM *search* your library by meaning. The URL payload is for pasting; MCP is for living inside. --- ## What happens when you create things ### You write a new document 1. `POST /api/docs` writes the markdown. 2. An `extraction_jobs` row is enqueued (`kind=doc_ontology`, 30-minute throttle per doc so autosaves don't burn LLM budget). 3. Fast path: same request runs the extractor inline — Claude Haiku reads the markdown and pulls out concepts/entities/tags. Each one upserts into your `concept_index`. 4. If the serverless instance dies mid-extraction, a cron worker picks the pending row up within a minute. Nothing silently fails. 5. Separately the doc gets embedded (`/api/embed/[id]`) — title + markdown for global search, plus each section as its own chunk for finer recall. 6. The moment you publish (un-draft), `mdfy.app/d/<id>` becomes fetchable by any AI in the world. Your hub digest already reflects the new concepts. ### You create a new bundle 1. `POST /api/bundles` creates the row. 2. You add N docs — `bundle_documents` join rows record order and per-doc annotations ("why this belongs"). 3. First time you open the bundle (or click Analyze), the canvas triggers `POST /api/bundles/[id]/graph`. The first \~10 doc bodies (truncated to 2000 chars each) are sent to Claude/GPT with your bundle's *intent* string prepended. The LLM returns a structured JSON: themes, insights, concept nodes, typed edges, takeaways, document summaries, open questions. 4. That JSON lands in `bundles.graph_data`. From this moment, the bundle URL serves the rich Compact payload above. 5. Same call also merges every concept into your `concept_index`(weights and `doc_ids` accumulate across bundles — this is how your hub digest grows). 6. A separate request embeds the bundle (`title + description + member titles`) for MCP search. ### You edit a doc that's in a bundle The bundle's `graph_data` is now older than the source. The next fetch of `mdfy.app/b/<id>` includes `analysis_stale: true` in the frontmatter so the LLM knows the AI summary may not match the current text. The owner sees a "stale" pill in the canvas and can re-analyze. --- ## The galaxy: same graph, two readers The **Galaxy** view at `mdfy.app/galaxy` is a constellation visualization of your hub: concept nodes (sized by weight), typed edges between them, doc nodes, bundle clusters, time-slider. It reads from a single endpoint: `/api/user/hub/constellation`. That endpoint pulls from the same four tables that feed every other mdfy surface: - `concept_index` — the nodes - `concept_relations` — the typed edges - `documents` — leaf nodes - `bundles` + `bundle_documents` — clusters This is important: **the visualization is not a separate dataset**.What you see in the galaxy is what an LLM gets in the hub digest — just rendered for eyes instead of for a context window. When you extend one, you extend the other. (The 2026-05-18 change that added `Related:` lines and `In bundles:` lines to the hub digest brought the LLM payload up to parity with the galaxy's edges and clusters.) The mental model: every mdfy surface — bundle canvas, hub galaxy, raw markdown digest, MCP search results — is **a different reader of the same underlying graph**. The graph is the product. --- ## Why this is different from a PDF, Notion, or Google Doc | Property | PDF / Doc upload | Notion / Google Doc share | mdfy URL | | --- | --- | --- | --- | | Any AI can read it with no setup | ✓ | ✗ (auth, JS, scraping) | ✓ | | Updates automatically as you edit | ✗ | ✓ | ✓ | | AI gets pre-built navigation + summary | ✗ | ✗ | ✓ (bundle/hub digests) | | Single URL composes many docs | ✗ | ✗ | ✓ (bundle, hub) | | Cross-AI portable | per-AI re-upload | per-AI re-share | one URL, every AI | | LLM can write back via standard tools | ✗ | ✗ | ✓ (MCP, 26 tools) | The thing AI companies cannot copy is the **delivery model**: a universal URL that any LLM fetches into its context, carrying both the source and the pre-built graph over it. That's the moat. --- ## Trust: permissions and staleness - `is_draft=true` — never served to a public fetch. Owner-only. - `allowed_emails: [...]` — served only if the request carries a verified token for one of those emails. - `password_hash` — gates the raw endpoint with HTTP basic. - `expires_at` — past expiry returns 410 Gone. - `analysis_stale: true` in bundle frontmatter — LLM knows the graph reflects an older version of the docs. - `embedding_source_hash` — embedding pipeline skips re-embedding unchanged content; you don't pay for no-op updates. Every protection is enforced at the raw endpoint layer, so the exact same rules apply whether the consumer is the browser, an MCP host, a curl from a script, or an LLM following an inline link. --- ## Glossary - **Document (MD)** — a markdown file. Lives at `mdfy.app/d/<id>`. - **Bundle** — a curated set of docs analyzed as a group. URL: `mdfy.app/b/<id>`. Has its own AI graph. - **Hub** — your personal home: every doc, every bundle, your concept index, your galaxy. URL: `mdfy.app/hub/<slug>`. - **Compact** — the default URL response shape. AI graph or concept map + links instead of full bodies. \~30x cheaper to paste than Full. - **Full** — `?full=1`. Concatenates everything. - **Concept index** — the user-scoped ontology. Updated whenever a doc is saved (`doc_ontology` jobs) or a bundle is analyzed. - **Galaxy** — the visual reader of your concept index and its relations. - **Canvas** — the visual reader of a single bundle's AI graph. - **Intent / annotation** — short text the user attaches to a bundle ("why I made this") or per-doc ("why this belongs"). Both get woven into the AI's analysis prompt and the rendered digest. - **MCP** — Model Context Protocol. The standard hosts use to give LLMs structured tool access. mdfy-mcp ships 26 tools. --- *Last updated 2026-05-18. If anything here drifts from the code, the code wins — file an issue.* --- id: _4iafQ8K title: mdfy.cc 사업계획 v6 (FINAL) url: https://memory.wiki/_4iafQ8K updated: 2026-05-19T16:39:37.328+00:00 --- # mdfy.cc 사업계획 v6 (FINAL) > **Personal Knowledge Hub for the AI Era**URL이 모든 것의 단위. Document, Bundle, Hub 모두 URL. > **Founder**: Hyunsang at Raymind.AI **Build started**: 2026년 3월 (부업) **Full-time start**: 2026년 4월 **Launch deadline**: 2026년 6월 16일 (Week 7 Tuesday, HN Show HN) **Last updated**: 2026-04-27 --- # 목차 1. [Executive Summary v6](#1-executive-summary-v6) 2. [v5 → v6 핵심 변경](#2-v5--v6-%ED%95%B5%EC%8B%AC-%EB%B3%80%EA%B2%BD) 3. [Core Vision](#3-core-vision) 4. [The URL Architecture](#4-the-url-architecture) 5. [AI as Collaborator](#5-ai-as-collaborator) 6. [Manifesto](#6-manifesto) 7. [Hero & Messaging](#7-hero--messaging) 8. [Strategic Position](#8-strategic-position) 9. [Product](#9-product) 10. [Bundle Spec](#10-bundle-spec) 11. [Business Model](#11-business-model) 12. [12-Month Roadmap](#12-12-month-roadmap) 13. [Launch Strategy](#13-launch-strategy) 14. [Risk Register](#14-risk-register) 15. [Operational Plan](#15-operational-plan) 16. [Long-term Outcomes](#16-long-term-outcomes) 17. [Decisions Log](#17-decisions-log) 18. [Mantra](#18-mantra) --- # 1. Executive Summary v6 ## 한 줄로 > **mdfy is your personal knowledge hub for the AI era.** ## 두 줄로 > Capture knowledge from anywhere. Bundle it by topic — manually or with AI. Every document, every bundle, your entire hub — one URL deployable to any AI. ## 세 줄로 > mdfy는 AI 시대 개인의 지식허브다. 핵심 mechanic은 URL — 단일 문서, 주제별 번들, 전체 허브 모두 URL이 된다. 모든 URL은 살아있는 문서: 항상 편집 가능, 버전 추적, 어떤 AI에든 paste하면 컨텍스트로 작동. AI가 collaborator — 사용자가 자연어로 요청하면 AI가 번들을 생성하고, 사용자는 검토/편집한다. ## 핵심 차별화 **The URL Architecture** — 같은 primitive, 3가지 scope: 1. **Document URL** — 한 markdown 파일 (한 답변, 한 노트) 2. **Bundle URL** — 주제로 묶은 collection (manual or AI-generated) 3. **Hub URL** — 사용자의 전체 지식허브 모두 **같은 URL primitive**. 모두 **deployable to any AI**. 모두 **living, editable, versioned**. ## AI의 새 역할 AI는 **librarian + collaborator**: - 사용자가 자연어로 요청 → AI가 bundle 생성 - 사용자가 검토하고 편집 - 결과는 사용자의 hub에 저장 - 다시 deploy 가능 이건 Mem0의 자동 추출과도, LLM Wiki의 LLM 단독 build와도 다름. **Human-AI 협업.** ## 8주 후 도달 지점 - Hero: "Personal knowledge hub for the AI era" - Phase 1 (Document URL) Live - Phase 2 (Bundle + Hub + AI generation) Launch - Bundle Spec v1.0 RFC 공개 - HN Show HN top 5 - 75+ paid (Pro $9 → $675 MRR) ## 12개월 후 목표 - $80-150K MRR - 10,000-20,000 paying users - AI hub의 기본 brand 인지 - Bundle Spec community 활성화 - 첫 enterprise pilot --- # 2. v5 → v6 핵심 변경 ## 변경 1: Single concept으로 단순화 **v5**: "Two layer markdown tool + memory layer + Bundle Spec + LLM Wiki integration..." **v6**: "Personal knowledge hub for the AI era" 이유: - v5는 너무 복잡함 - 사용자가 mdfy를 한 단어로 인지해야 - Notion = workspace, Linear = project tracker, **mdfy = knowledge hub** ## 변경 2: URL Architecture 명시 **v5**: Bundle이 핵심 차별화 **v6**: URL = 모든 것의 단위 (Document/Bundle/Hub 같은 primitive) 이유: - "URL이 단위"가 진짜 정수 - Bundle 하나만 강조하면 partial - 3 scope (doc/bundle/hub)이 progressive disclosure ## 변경 3: Hub URL 컨셉 추가 **v5**: 없음 **v6**: 사용자 전체 hub가 한 URL — auto-organized + AI queryable 이유: - "내 모든 지식을 한 URL로 AI에 paste" magical UX - LLM Wiki와 직접 비교 가능 (둘 다 hub-level) - 진짜 큰 차별화 ## 변경 4: AI Bundle Generation 추가 **v5**: Bundle은 manual **v6**: AI에게 자연어 요청 → Bundle 자동 생성 → 사용자 검토/편집 이유: - 사용자 부담 절감 - 진짜 새로운 UX 패러다임 - Notion AI와 다름 (Notion은 doc 안에서, mdfy는 cross-doc) ## 변경 5: AI를 collaborator로 격상 **v5**: AI는 polish/summary 도구 **v6**: AI는 librarian + bundle generator + queryable assistant 이유: - 단순 도구 → 협업 파트너 - "사용자 + AI"가 함께 hub 만듦 - Karpathy LLM Wiki 패턴의 진화 버전 ## 변경 6: 메시지 단순화 **v5**: "Compile vs deploy", "Author vs extract", "Layer 1 vs 2" **v6**: "Personal knowledge hub. Everything is a URL." 이유: - 메시지 절제 - 비교는 manifesto에서만 - Hero는 universal --- # 3. Core Vision ## What mdfy is > **mdfy is your personal knowledge hub for the AI era.** 지식이 폭발하는 시대. ChatGPT/Claude에 매일 사고를 쏟아붓고, 좋은 답변을 받고, 그리고 잃는다. mdfy는 그 지식을 hub로 만든다. URL 기반. 어디서든 capture. 어디서든 deploy. 어디서든 편집. AI와 협업한다. 사용자가 무엇을 원하는지 표현하면, AI가 organize한다. 사용자는 검토하고 결정한다. 이게 mdfy다. 단순하고 강력한 hub. ## How it works (one paragraph) ``` You collect knowledge from anywhere — AI chats, your editor, your terminal. Each piece becomes a markdown document at a URL. You bundle related URLs into themed collections — manually, or by asking AI. Your entire hub is itself a URL. Every URL is a living document — editable, versioned, addressable. Share any URL with any AI as context. That's it. ``` ## Why now 세 가지 trends 동시 발생: **1. AI 답변 폭발** - 매일 trillion+ 토큰 AI 답변 생성 - 저장/재사용 인프라 부재 - 사용자가 자기 사고를 hub로 만들 도구 필요 **2. URL이 AI 시대 자연 interface** - LLM이 native로 URL fetch - MCP가 URL-based tool calling - Markdown URL = LLM이 가장 자연스러운 input **3. Hub vs Extract paradigm 갈림길** - 닫힌 시스템: Mem0, Letta, OpenAI Memory (각자 자기 영역) - 열린 시스템: 표준 부재 - mdfy가 그 표준을 시도 **6개월 늦으면**: 거인들이 자기 closed hub 굳힘. **6개월 일렀으면**: 시장 부재. **지금이 정확한 timing.** --- # 4. The URL Architecture ## v6의 핵심 framework mdfy의 본질은 **URL Architecture**. 같은 primitive, 3가지 scope. ``` ┌──────────────────────────────────────────────┐ │ Collecting Layer │ │ Chrome, VS Code, Mac, CLI, MCP, paste │ │ ↓ 모든 surface가 markdown 생성 │ └──────────────────────────────────────────────┘ ↓ ┌──────────────────────────────────────────────┐ │ Document URL │ │ https://mdfy.cc/abc123 │ │ - 한 markdown 파일 │ │ - 한 AI 답변, 한 노트, 한 글 │ │ - Living, editable, versioned │ └──────────────────────────────────────────────┘ ↓ ┌──────────────────────────────────────────────┐ │ Bundle URL │ │ https://mdfy.cc/bundle/xyz789 │ │ - 주제로 묶은 documents │ │ - Manual selection OR AI-generated │ │ - Editable like a document │ │ - Versioned with snapshots │ └──────────────────────────────────────────────┘ ↓ ┌──────────────────────────────────────────────┐ │ Hub URL │ │ https://mdfy.cc/hub/hyunsang │ │ - 사용자의 전체 지식허브 │ │ - Auto-organized by AI │ │ - Queryable as one URL │ │ - "내 모든 것" deployment unit │ └──────────────────────────────────────────────┘ ↓ ┌──────────────────────────────────────────────┐ │ Deployment (Any AI, Anywhere) │ │ Paste URL into Claude, Cursor, ChatGPT │ │ AI fetches, reads as context │ └──────────────────────────────────────────────┘ ``` ## 3 URL Scopes ### 1. Document URL — atomic unit - 한 markdown 파일 - 가장 작은 단위 - 사용자가 직접 작성 또는 capture - Editable, versioned **Example**: ``` https://mdfy.cc/abc123 → A single document about LLM memory architecture ``` ### 2. Bundle URL — themed collection - 주제로 묶은 documents - Manual: 사용자가 직접 묶음 - AI-generated: 사용자 요청 → AI가 묶음 - Editable: 사용자가 final review - Bundle of bundles 가능 (recursive) **Example**: ``` https://mdfy.cc/bundle/xyz789 → "Project Acme Context" - 5 documents about the project - Annotated by user - Versioned snapshots ``` ### 3. Hub URL — entire knowledge - 사용자의 모든 지식 - Auto-organized (LLM이 librarian) - Queryable (AI가 navigate) - Deployable (한 URL로 모든 컨텍스트) **Example**: ``` https://mdfy.cc/hub/hyunsang → Everything Hyunsang knows - Auto-categorized - AI-queryable index - Deploy as full personal context ``` ## 핵심 properties (모든 URL 공통) 1. **Living** — 항상 편집 가능 2. **Permanent** — URL 안 바뀜 3. **Versioned** — 히스토리 추적 4. **Addressable** — 어디서든 paste 5. **Composable** — 다른 URL과 묶을 수 있음 6. **Deployable** — AI에 컨텍스트로 --- # 5. AI as Collaborator ## v6의 새 핵심: AI는 도구가 아니라 collaborator 기존 도구의 AI: - Notion AI: doc 안에서 polish/write - Mem0: 자동으로 추출 (사용자 invisible) - LLM Wiki: LLM 혼자 build mdfy의 AI: - **Librarian**: 사용자 hub를 organize - **Bundle generator**: 자연어 요청 → bundle 자동 생성 - **Query assistant**: 사용자 hub에서 정보 찾기 - **Editor**: polish, refine, suggest ## AI Bundle Generation — 핵심 UX 가장 강력한 새 mechanic. ### 사용자 요청 예시 - "프로젝트 Acme 관련 답변들 다 묶어줘" - "내가 LLM memory에 대해 배운 거 정리해줘" - "내 글쓰기 voice 보여주는 sample 5개 골라줘" - "지난 주 가장 useful했던 답변들 bundle로" - "이 답변과 비슷한 주제 묶어줘" ### AI 처리 1. 사용자 hub 검색 2. 관련 documents 찾기 3. 의미 있는 grouping 4. Bundle markdown 생성 5. Annotation 자동 추가 ### 사용자 검토 - AI가 만든 bundle 보기 - 추가/제거/재정렬 - Annotation 편집 - Save (bundle URL 생성) ### Use case 사용자가 새 프로젝트 시작 → "이 프로젝트 관련 컨텍스트 bundle 만들어줘" → AI가 hub에서 관련 자료 찾아 bundle 생성 → 사용자 검토 → Cursor에 paste → 즉시 작업 시작. 이전: 사용자가 매번 manual로 컨텍스트 모아 paste. 이후: AI가 organize, 사용자가 deploy. ## AI의 다른 역할 ### 1. Hub Auto-organization - 새 document 추가 시 자동 categorize - Tag 자동 제안 - 비슷한 documents 자동 grouping - Orphan documents 알림 ### 2. Query Assistant - "내 hub에서 X에 대해 알려줘" - "이 주제로 내가 어떤 답변 받았었지?" - 자연어로 hub 검색 ### 3. Polish & Refine - Document 편집 시 suggest - Bundle annotation 자동 생성 - Version diff 설명 ### 4. Cross-reference - "이 doc과 관련된 다른 doc 있나?" - 자동 link 추천 - Knowledge graph 시각화 (Phase 3) ## AI 사용 흐름 (전체 cycle) ``` 1. User captures (Chrome, CLI, etc.) → Document URL 생성 2. AI auto-categorizes → Hub 자동 organize 3. User asks AI → "Acme 관련 bundle 만들어줘" 4. AI generates bundle → 관련 docs 찾아 bundle 생성 5. User reviews + edits → Bundle URL 확정 6. User deploys → Cursor/Claude에 paste 7. AI reads as context → Bundle 안 documents 모두 fetch 8. User outputs back to mdfy → 새 documents → Hub 누적 9. Cycle continues ``` 이게 진짜 hub. 단순 storage가 아니라 living knowledge organism. --- # 6. Manifesto ## Manifesto 핵심 > **Own your markdown. Build your hub. Deploy anywhere.** ## 7 Beliefs (v6 — 새 추가) ### 1. Markdown is the right primitive LLM native, human readable, tool agnostic. ### 2. URLs are the right interface 가장 단순한 interface. 모든 경계를 넘는다. ### 3. Memory is something you author Mem0/Letta의 추출과 다른 paradigm. ### 4. AI is a collaborator, not just a tool ⭐ (NEW) AI에게 요청하면 bundle을 만든다. 사용자가 검토한다. 협업. ### 5. Knowledge has scopes — document, bundle, hub ⭐ (NEW) 같은 URL primitive, 3가지 scope. Progressive disclosure. ### 6. Memory should be deployable Bundle이 deployment unit. ### 7. Open by default mdcore OSS, Bundle Spec OSS, self-host 가능. ## Manifesto post 핵심 메시지 (재구성) ### Section 1: The state of AI knowledge today - 매일 ChatGPT/Claude에 사고 쏟아붓고 잃는다 - 저장도 못하고, 재사용도 못하고, deploy도 못함 - 세상에서 가장 비싼 망각 기계 ### Section 2: The hub paradigm - 단순 저장이 아니라 hub - Document, Bundle, Hub 모두 URL - 항상 deployable ### Section 3: AI as collaborator - 사용자가 manual로 다 할 필요 없음 - 자연어로 요청 → AI가 organize - 사용자가 review + decide ### Section 4: Why mdfy specifically - Multi-surface (이미 build됨) - Markdown-native (publish 후 export 아님) - Open from day one ### Section 5: How it relates to others - Mem0/Letta: 자동 추출 (다른 paradigm) - LLM Wiki: LLM 혼자 build (다른 collaboration model) - Notion: closed format - mdfy: human + AI 협업, open URLs ### Section 6: Roadmap - Phase 1: Live (publishing tool) - Phase 2: Bundle + Hub + AI generation (8주 후) - Phase 3: Year 1 (LLM Wiki integration, Team, Marketplace) - Phase 4: Year 2-3 (standard, enterprise) ### Section 7: Open invitation - Try mdfy - Read the spec - Join the conversation --- # 7. Hero & Messaging ## 영문 Hero (확정) **H1**: Your personal knowledge hub for the AI era. **Sub**: Capture from anywhere. Bundle by topic. Deploy to any AI as a URL. Your knowledge — owned, edited, portable. **CTA primary**: Start your hub → **CTA secondary**: Install Chrome extension ## 한국어 Hero (확정) **H1**: AI 시대의 개인 지식허브. **Sub**: 어디서든 캡처하고, 주제별로 묶고, 어떤 AI에든 URL로 deploy하세요. 당신의 지식 — 소유하고, 편집하고, 어디든. **CTA primary**: 허브 시작하기 → **CTA secondary**: Chrome 확장 설치 ## Three Pillars (재구성) ### Pillar 1: Capture **From any AI, anywhere.** Surfaces: - 🌐 Chrome Extension — One click on AI chats - 💻 VS Code — Save markdown directly - 🖥️ Mac App — Clipboard watch - ⌨️ CLI — `cat | mdfy` - 📋 Paste — Drop anything Each capture becomes a Document URL. ### Pillar 2: Bundle **Group by topic — manually or with AI.** Methods: - ✋ **Manual** — Multi-select your docs, create bundle - 🤖 **AI-generated** — Ask "create a bundle about X", AI does it - ✏️ **Editable** — Review and edit AI bundles - 📜 **Versioned** — Snapshot moments in time Bundles are URLs you can paste anywhere. ### Pillar 3: Deploy **Use anywhere as one URL.** Scopes: - 📄 **Document URL** — A single markdown file - 📦 **Bundle URL** — A themed collection - 🌐 **Hub URL** — Your entire knowledge as one URL Paste into Claude, Cursor, anywhere. AI reads as context. ## 차별화 메시지 ### 강한 메시지 (사용) ✅ "Your personal knowledge hub for the AI era." — Hero ✅ "Capture, Bundle, Deploy." — 3 verbs ✅ "Everything is a URL." — primitive ✅ "Ask AI to bundle. You decide what stays." — AI 협업 ✅ "Document, Bundle, Hub — same URL primitive." — architecture ### 약한 메시지 (피함) ❌ "Black-box memory" (부정확) ❌ "Vendor lock-in" (부정확) ❌ "Don't let AI extract you" (부정형) ❌ "Markdown Hub" (commodity) ❌ "Compile vs deploy" (너무 abstract) ## Comparison Tables ### vs Other Knowledge Tools | | mdfy | Notion AI | Mem0/Letta | LLM Wiki | | --- | --- | --- | --- | --- | | Personal knowledge hub | ✓ | ✓ | — | ✓ | | Markdown native | ✓ | △ | — | ✓ | | URL-based deployment | ✓ | — | — | — | | Multi-surface capture | ✓ | △ | △ | — | | AI bundle generation | ✓ | — | — | — | | Hub URL (whole knowledge) | ✓ | — | — | △ | | Open standard | ✓ | — | △ | △ | | Cloud + AI accessible | ✓ | △ | ✓ | — | ### Note > Mem0 and Letta are excellent at extracting memory automatically. LLM Wiki is excellent at LLM-compiled local knowledge. Notion AI is excellent at workspace integration. > > mdfy is for the layer in between — your personal knowledge hub, built with AI, deployed to AI, owned by you. --- # 8. Strategic Position ## 시장 자리 (v6 매트릭스) ``` Local Cloud (Obsidian/local) (URL-based) ↓ ↓ LLM-compiled LLM Wiki [없음 — gap] (Karpathy) Human-AI [없음 — gap] [mdfy의 자리] ⭐ collaborated Personal Hub Auto-extracted Mem0 self-host Mem0/Letta cloud OpenAI Memory Google Memory Bank ``` **mdfy의 자리**: Cloud + Human-AI collaborated knowledge hub. 이 자리가 비어있다. mdfy가 들어간다. ## Five Pillars of mdfy (v6) 1. **URL primitive** — Everything is a URL 2. **Multi-surface** — Capture from anywhere 3. **AI collaboration** — Ask AI to organize, user decides 4. **Three scopes** — Document, Bundle, Hub 5. **Open infrastructure** — mdcore OSS, Bundle Spec OSS ## 차별화 narrative (재구성) ### vs LLM Wiki > "LLM Wiki is your local knowledge base, built by LLM. mdfy is your personal hub, built by you and AI together, in the cloud, deployable to any AI." ### vs Mem0/Letta > "Mem0 extracts memory from your AI conversations. mdfy is the hub where you and AI collaborate to organize knowledge — and deploy it anywhere as URLs." ### vs Notion > "Notion is a workspace. mdfy is a knowledge hub. Notion is closed. mdfy is open URLs. Notion AI works inside Notion. mdfy AI organizes for any AI." ### vs ChatGPT Memory > "ChatGPT remembers about you, inside ChatGPT. mdfy is your hub of knowledge, deployable to ChatGPT, Claude, Cursor — anywhere." ## 경쟁자 인식 (정직하게) ### Document URL 경쟁자 - GitHub Gist, HackMD, StackEdit (publishing tools) ### Bundle 경쟁자 - 정면: 없음 (개념 unique) - 인접: Notion subpages, Obsidian folders ### Hub URL 경쟁자 - Notion (private workspace, 다른 paradigm) - Obsidian Publish (PKM publish) ### AI Memory 경쟁자 - Mem0, Letta (다른 paradigm — 추출) - OpenAI/Google Memory (closed vendor) ### LLM Wiki 관계 - 보완재 (local vs cloud) - 둘이 함께 사용 가능 (Phase 3 integration) --- # 9. Product ## Already Built (Phase 1 — Live) ### Engine - ✅ mdcore (Rust, open source) ### Web - ✅ mdfy.cc (WYSIWYG editor) - ✅ Permanent URLs - ✅ Sharing controls ### Surfaces - ✅ Chrome extension - ✅ VS Code extension - ✅ Mac desktop app - ✅ CLI - ✅ MCP server (read) ### Features - ✅ AI tools (polish, summary, translate, chat) - ✅ KaTeX, Mermaid, syntax highlighting - ✅ 14+ file format imports - ✅ Version history ## Phase 2 Build (8주 — Launch) ### Memory Essentials - 🔜 Tagging - 🔜 Folders - 🔜 Privacy controls - 🔜 **Semantic search** (embeddings + pgvector) ### Bundle Layer (manual) - 🔜 Multi-select bundle 생성 - 🔜 Bundle 페이지 (inline preview) - 🔜 "Copy as context" - 🔜 Bundle 편집 (add/remove/reorder, annotation) - 🔜 Bundle URL share - 🔜 **Bundle Spec v1.0 conformant** ### Bundle Layer (AI-generated) ⭐ NEW - 🔜 AI bundle generation chat interface - 🔜 자연어 요청 → AI가 hub 검색 → bundle 생성 - 🔜 사용자 review + edit - 🔜 Save as Bundle URL - 🔜 "Suggested bundles" (AI 자동 제안) ### Bundle Excellence - 🔜 **Bundle versioning** (snapshot, diff) - 🔜 Token estimation - 🔜 Recursive bundle resolution ### Hub Layer ⭐ NEW - 🔜 Hub URL (사용자별 단일 URL) - 🔜 Auto-organization (LLM categorize) - 🔜 Hub query (자연어로 자기 hub 검색) - 🔜 Hub deploy (전체 knowledge as context) 이게 v6의 가장 ambitious 부분. Hub URL + AI bundle generation 둘 다 launch에 포함. ## Phase 3 (Year 1) ### Bundle 진화 - MCP write access - Format adapters (Claude XML, OpenAI, Gemini) - Bundle analytics - Webhook integrations ### LLM Wiki Integration - Obsidian sync - Wiki page → mdfy publish - mdfy hub → wiki source ### Team - Workspace - Shared hubs (가족, 팀) - Permissions, audit ### Bundle Spec - v1.0 final release - Reference implementations - Community contributions ## Phase 4 (Year 2-3) - Bundle marketplace - Public hub library - Enterprise self-host - Standard-setting consortium --- # 10. Bundle Spec Bundle Spec v1.0은 별도 문서 (`mdfy-bundle-spec-v1.md`) 참조. ## 핵심 update (v6 framing) ### Bundle은 hub의 sub-unit Bundle Spec에 새 컨텍스트 추가: - Bundle = Hub 안의 themed collection - AI-generated bundles도 spec conformant - Hub URL은 special bundle (전체 hub) ### AI Bundle Generation 정의 Spec에 추가: - AI-generated bundle metadata (`generated_by: ai`, `prompt: "..."`) - User edit history (`generation_step: ai-initial | user-edited`) - Suggested bundles vs saved bundles ### Hub URL Spec Hub URL은 special bundle subtype: ```yaml mdfy_bundle: 1 type: hub auto_organized: true ``` Hub의 references는 dynamic — 사용자 hub의 모든 documents를 자동 포함. --- # 11. Business Model ## Pricing 구조 (v6 — Hub 차별화 강화) ``` Free - Unlimited document publishing - Permanent URLs - WYSIWYG editor - Public posts only - Chrome extension capture - 3 bundles - Basic hub view (no auto-organization) Pro $9/mo (개인) ⭐ Hub 활성화 - Private posts - Custom domain - Tags, folders - Semantic search - AI tools (polish, summary, translate) - 20 bundles - AI bundle generation (10/month) ⭐ - Auto-organized hub ⭐ - Hub URL (public/private) - Version history Build $19/mo (Power user) ⭐ 무제한 + API - Unlimited bundles - Unlimited AI bundle generation - Hub URL with custom domain - API access (read/write) - MCP server (full) - Bundle versioning + snapshots - Format adapters - Token budget management - Bundle analytics - Webhook integrations Team $19/seat/mo - Shared workspace - Shared hubs - Permissions, audit log - SSO - Slack integration Scale $499+/mo - Public bundle marketplace - Custom rate limits - SLA - Multi-region - Dedicated MCP Enterprise (협의) - Self-host option - SAML SSO - LLM Wiki integration support ``` ## Pricing 의도 (v6) ### Free → Pro $9 - Free에서 publishing 충분 (broad audience) - Pro 진입 동기: - **AI bundle generation 10개/월** (가장 강력한 hook) - **Auto-organized hub** (Hub URL 활성화) - Bundle 수 (3 → 20) - Search, custom domain ### Pro → Build $19 - AI bundle generation **무제한** - API/MCP write - Hub URL custom domain - Power user 본격 ### 핵심 monetization driver - **AI bundle generation** = 가장 strong upgrade trigger - 사용자가 "이거 더 쓰고 싶어" 자연 발생 - Free 10개 한도가 제한 명확 ## Unit Economics ### Pro $9 - Stripe: $0.56 - Hosting + AI base: \~$1 - AI bundle generation (avg 5/month): \~$0.50 - Embeddings: \~$0.05 - **Margin: \~78%** ### Build $19 - Stripe: $0.85 - Hosting + AI: \~$3 - Unlimited AI generation: \~$1.50 - API/MCP infra: \~$0.50 - **Margin: \~70%** 마진이 v5보다 살짝 낮음 (AI generation 비용 추가). 단 conversion이 더 강력 → 더 높은 LTV. --- # 12. 12-Month Roadmap ## Phase 구조 | Phase | 기간 | Primary 메시지 | 핵심 build | | --- | --- | --- | --- | | **Phase 1** | Now (Live) | "Markdown publishing" | Already done | | **Phase 2** | Month 1-2 | "Personal knowledge hub launch" | Bundle + Hub + AI generation | | **Phase 3** | Month 3-6 | "Hub for any AI" | API/MCP, Wiki integration, Team | | **Phase 4** | Month 7-12 | "Standard + Marketplace" | Spec final, Marketplace, Enterprise | ## Phase 2 — 8주 Detailed (v6) 이게 v5보다 더 ambitious. Hub + AI generation 둘 다 추가. ### Week 1: Foundation Reset - About 페이지 update (Hero, Vision, Comparison) - Manifesto 페이지 build - Bundle Spec v1.0 draft 공개 준비 - Pricing 페이지 update - 한국어 사이트 - **시간 분배**: 주 35시간 build, 5시간 콘텐츠 ### Week 2-3: Bundle MVP (manual) - Multi-select bundle 생성 - Bundle 페이지 view - "Copy as context" - Bundle 편집 (add/remove/reorder, annotation) - Bundle versioning (snapshot) ### Week 4: Memory Essentials + Hub Foundation ⭐ - Tagging, folders, privacy - **Semantic search** - **Hub URL infrastructure** (auto-categorization 시작) ### Week 5: AI Bundle Generation ⭐ NEW - AI bundle generation chat interface - 자연어 요청 처리 - Hub 검색 + bundle 생성 logic - 사용자 review/edit UX - Suggested bundles (자동 제안) ### Week 6: Hub URL Polish + Beta - Hub URL UX 다듬기 - AI auto-organization 강화 - Hub query 기능 - **Beta tester 50명 모집** 시작 - 매주 피드백 ### Week 7: Iteration + Launch Assets - Beta 피드백 fix - Demo 영상 3편 (Capture/Bundle/Hub) - Show HN 글 - Manifesto post finalize - Twitter thread - Bundle Spec v1.0 RFC 공개 (GitHub) ### Week 8: Public Launch ⭐ - 월: 점검 - **화: Show HN — "I built a personal knowledge hub for the AI era"** - 수: Twitter thread + dev community - 목: Product Hunt - 금: Manifesto post + Bundle Spec announcement **주의**: v6 scope이 v5보다 큼. AI bundle generation + Hub URL 둘 다 6주 안에 build. 풀타임 + fast velocity로 가능하지만 **scope creep 절대 금지**. **필요시 trade-off**: - AI bundle generation은 simple version만 (free 5 bundle/month, GPT-4o 사용) - Hub URL은 simple list view (auto-categorization은 Phase 3로) - 나머지는 그대로 이 trade-off는 Week 4 시점에 결정. 만약 Week 1-3에서 build 빨라서 여유 있으면 풀버전 launch. 늦으면 simple version. ## Phase 3 (Month 3-6) ### Month 3 - Bundle hero campaign (post-launch) - AI agent integrations (Cursor, Claude Code, Continue) - 첫 Build tier 30명 - $5-8K MRR - LLM Wiki integration POC ### Month 4 - MCP write access - Format adapters (Claude XML, OpenAI) - Team workspace beta - 첫 partnership - $10-15K MRR ### Month 5 - LLM Wiki ↔ mdfy sync (Obsidian plugin) - Hub auto-organization 강화 - Bundle Spec community feedback - $15-20K MRR ### Month 6 - 사용자 30,000+ - $20-30K MRR - AI agent integrations 15+ - 첫 enterprise inquiry - Bundle Spec v1.1 draft ## Phase 4 (Month 7-12) ### Month 7-9 - Self-host enterprise pilot - SOC 2 process - Bundle Spec v1.0 final release - Strategic conversations - LLM Wiki integration GA ### Month 10-12 - 첫 enterprise customer - $80-150K MRR - Bundle marketplace 베타 - Public hub library 베타 - Series A 또는 acquisition 검토 --- # 13. Launch Strategy ## Big Launch v6 핵심 메시지: **"Personal knowledge hub for the AI era"** 이건 단순 product launch가 아님: - Standard-setting movement - Founder narrative (build velocity, vision) - Open ecosystem (mdcore + Bundle Spec OSS) - New paradigm (URL architecture + AI collaboration) ## Launch Day 채널 (Week 8) ### Tuesday: Show HN **제목 후보**: - "Show HN: mdfy — personal knowledge hub for the AI era" - "Show HN: I built a knowledge hub where every URL deploys to any AI" - "Show HN: mdfy + Bundle Spec — open standard for AI-deployable knowledge" **핵심 messaging**: - "Personal knowledge hub" 즉시 이해 - URL = primitive (architecture 명확) - AI bundle generation (새 UX) - Bundle Spec 공개 (open ecosystem) **목표**: HN top 5, 10,000+ visitors ### Wednesday: Twitter/X - 10-tweet thread - Demo gif: AI bundle generation 작동 - "URL is the primitive" thesis ### Thursday: Product Hunt - "mdfy.cc — Your personal knowledge hub for the AI era" ### Friday: 종합 - Manifesto post 발표 - Bundle Spec announcement post - AI newsletters - LLM Wiki community 알림 ## Pre-Launch Strategic Conversations - **Anthropic**: MCP integration - **Cursor / Continue**: Memory layer integration - **LLM Wiki community**: Spec feedback + 보완재 framing - **Karpathy**: Spec 인지 (가능하면) - **AI newsletter editors**: pre-launch heads up ## Bundle Spec 발표 전략 ### Pre-launch (Week 6-7) - GitHub repo: github.com/raymindai/bundle-spec - README + spec full text - Reference implementation: mdfy.cc ### Launch day (Week 8) - Spec announcement post - HN/Twitter에 Spec 링크 - LLM Wiki community에 보완재 framing 명확 ### Post-launch (Phase 3) - RFC iteration - Community contributions - Other tools implement ## KPI 목표 (v6) ### Week 8 (Launch) - 1,500-2,000+ signup - 300+ Chrome ext install - 100+ paid (Pro $9 → $900 MRR) - 50+ Bundle 생성 (50% AI-generated) - HN top 5 - Bundle Spec GitHub stars 100+ - 10+ media mentions v6 KPI가 v5보다 약간 높음 (AI generation + Hub URL 효과). ### Month 3 - 사용자 5,000+ - DAU 300+ - $5-10K MRR - 1,000+ Bundle (60% AI-generated) - Build tier 30명 ### Month 6 - 사용자 30,000+ - $20-30K MRR - AI agent integrations 15+ - LLM Wiki integration POC live ### Month 9 - 사용자 100,000+ - $50-80K MRR - Bundle Spec v1.0 final - Enterprise pilot ### Month 12 - $80-150K MRR - Top 5 memory layer brand - Strategic conversations --- # 14. Risk Register ## Risk 1: 거인들 진입 (확률 60%, impact 매우 큼) ### 시나리오 - Anthropic memory layer - OpenAI Memory 확장 - Google Memory Bank ### Mitigation - 8주 launch first-mover - Bundle Spec 빠른 발표 - Open ecosystem (mdcore + Spec) - AI bundle generation은 unique (거인이 따라잡기 어려움) - Hub URL paradigm (closed system이 복제 어려움) ## Risk 2: Build scope creep (확률 50%, impact 매우 큼) ⭐ v6 더 위험 v6는 v5보다 scope 큼 (AI bundle generation + Hub URL 추가). ### Mitigation - Tier 1 + 2 + 2.5 + Hub + AI generation 외엔 launch 전 build 금지 - Week 4 시점 reality check (build 진행도 vs 데드라인) - Trade-off 결정: 풀버전 vs simple version - Week 8 hard deadline - 매일 self-check ## Risk 3: AI bundle generation 품질 (확률 40%, impact 중간) ⭐ NEW ### 시나리오 - 사용자가 "X 관련 bundle 만들어줘" 했는데 AI가 엉뚱한 것 묶음 - 사용자가 disappointed, churn ### Mitigation - GPT-4o 또는 Claude Opus 사용 (가장 좋은 모델) - Prompt engineering 정교하게 - 사용자 review/edit UX 강화 (AI가 만든 거 쉽게 수정) - Beta tester로 빠른 iteration - "Suggested bundles"로 자동 제안 (사용자가 reject 가능) ## Risk 4: Hub URL UX 복잡 (확률 30%, impact 중간) ⭐ NEW ### 시나리오 - "내 전체 hub가 한 URL"이 사용자에게 abstract - Auto-organization이 의도와 안 맞음 ### Mitigation - Simple version부터 (자동 list) - Auto-organization은 Phase 3로 점진 - Demo 영상에서 use case 강조 - Hub URL은 power user 기능으로 positioning ## Risk 5: 첫 50명 beta tester 못 찾음 (확률 15%, impact 큼) ### Mitigation - 채널 5개 다각화 (Discord, HN, Twitter, LLM Wiki community, Markdown community) - Cold outreach - Manifesto post로 inbound ## Risk 6: Bundle Spec adoption 안 됨 (확률 50%, impact 중간) ### Mitigation - mdfy가 reference impl - LLM Wiki community와 협업 - Spec 단순함 (CommonMark + YAML) - Format adapters로 immediate value ## Risk 7: Solo burnout (확률 50%, impact 매우 큼) ⭐ v6 더 위험 v6 scope 크니 burnout risk 더 높음. ### Mitigation - 매주 1일 OFF 강제 - Week 4 reality check (trade-off 결정) - Month 3+ 자동화 - Month 6+ 외주 --- # 15. Operational Plan ## 시간 배분 (풀타임 40시간/주) ``` Build (50%): 20시간/주 - Bundle MVP (Week 2-3) - AI bundle generation (Week 5) - Hub URL (Week 4 + 6) - Excellence features (Week 4) Spec maintenance (5%): 2시간/주 Launch prep (15%): 6시간/주 Marketing / Content (10%): 4시간/주 Customer / Beta (10%): 4시간/주 (Week 6-8) Strategy (5%): 2시간/주 Rest (5%): 2시간/주 (필수) ``` 매주 1일 OFF. ## Tech Stack ### Existing - Frontend: Next.js - Backend: Founder 결정 - DB: Supabase (Postgres + pgvector + Auth) - Engine: mdcore (Rust) - Payments: Stripe + PortOne ### Phase 2 추가 (v6) - Embeddings: OpenAI text-embedding-3-small - Vector DB: pgvector - AI APIs: OpenAI GPT-4o + Anthropic Claude (bundle generation) - Email: Resend - Analytics: PostHog ### Phase 3 추가 - Obsidian plugin (TypeScript) - Bundle Spec parser library - Format adapters ## 자동화 우선순위 1. Self-serve 결제 2. AI customer support (Claude) 3. Onboarding 자동화 4. Dev support (docs + Discord) 5. Content marketing 6. Bundle Spec maintenance --- # 16. Long-term Outcomes ## Year 1 ### Conservative - $50-80K MRR - 5,000-10,000 paying users - Bundle Spec published - LLM Wiki integration POC - AI bundle generation established UX ### Realistic - $100-150K MRR - 10,000-20,000 paying users - Bundle Spec v1.0 final - 첫 partnership ### Optimistic - $200-300K MRR - mdfy Bundle Spec adoption (3+ tools) - 첫 enterprise customers - Series A 가능 ## Year 2 ### Conservative - $500K-1M ARR - Sustainable indie + spec community ### Realistic - $1-3M ARR - Bundle Spec open standard - Hub URL as new paradigm - 외부 자본 검토 ### Optimistic - $5M+ ARR - C2PA-style consortium - Strategic acquisition ($30-100M) - Series A ($30-100M valuation) ## Year 3 ### Conservative - $1-3M ARR sustainable ### Realistic - $5-15M ARR - Bundle Spec industry standard - Acquisition ($50-200M+) - Series A 본격 ### Optimistic - $20M+ ARR - "Personal AI hub" 표준 카테고리 - Acquisition $100M-500M - Series B ## Exit Scenarios ### Strategic Acquisition - **Anthropic**: Hub for Claude/MCP ecosystem - **OpenAI**: Personal memory infrastructure - **GitHub/Microsoft**: Knowledge hub for Copilot - **Notion**: AI hub acquisition - **Cursor / Cognition**: Agent memory backbone ### Sustainable Indie - $1M+ MRR - Spec community - Personal asset ### Standards Body - Bundle Spec → industry standard - Long-term shaping --- # 17. Decisions Log ## v5 결정사항 유지 | 결정 | 답 | | --- | --- | | Manifesto 핵심 | "Own your markdown. Use it anywhere." (sub로 격하) | | Bundle Spec | v1.0 RFC GitHub 공개 | | Pro pricing | $9/month | | Build pricing | $19/month | | Launch deadline | 2026-06-16 (HARD COMMIT) | | 한국어 도메인 | mdfy.cc/ko/ | ## v6 신규 결정사항 | 결정 | 답 | | --- | --- | | **Core concept** | **Personal knowledge hub for the AI era** | | **Hero 영문** | **"Your personal knowledge hub for the AI era."** | | **Hero 한국어** | **"AI 시대의 개인 지식허브."** | | **Sub 영문** | **"Capture from anywhere. Bundle by topic. Deploy to any AI as a URL. Your knowledge — owned, edited, portable."** | | **Sub 한국어** | **"어디서든 캡처하고, 주제별로 묶고, 어떤 AI에든 URL로 deploy하세요. 당신의 지식 — 소유하고, 편집하고, 어디든."** | | **Three Pillars** | **Capture / Bundle / Deploy** | | **URL Architecture** | **Document / Bundle / Hub — same primitive** | | **AI 역할** | **Collaborator (not just tool)** | | **AI Bundle Generation** | **Launch 포함 (Pro 10/month, Build unlimited)** | | **Hub URL** | **Launch 포함 (auto-organized + queryable)** | | **Karpathy framing** | **Local-LLM vs Cloud-Human-AI 협업** | | **CTA primary** | **"Start your hub →"** | | **Manifesto 7th belief** | **"AI is a collaborator, not just a tool"** | --- # 18. Mantra ## 매일 self-check > **"이 feature 없으면 launch 못 하는가?**"NO → Phase 2 list로 미룸 > **"AI bundle generation 작동하는가?"** (NEW) 핵심 차별화. 반드시 동작. > **"Hub URL이 magical한가?"** (NEW) "내 모든 것을 paste" UX 검증. > **"Bundle Spec에 conform하는가?**"Spec과 product 일관성. > **"Hero는 universal한가?"**"Personal knowledge hub" 즉시 이해. > **"이게 movement를 만드는가?**"Big ambition. Standard-setting. ## 한 줄 요약 > mdfy is your personal knowledge hub for the AI era. Document, Bundle, Hub — every scope is a URL. Capture from anywhere. Bundle with AI. Deploy to any AI. 8주 안에 launch한다. Owned, edited, portable. Living, versioned, deployable. ## 12개월 success 정의 ### Minimum - $50K MRR - 5,000 paying users - AI bundle generation established - Bundle Spec published ### Realistic - $100K MRR - 10,000-20,000 paying users - Hub URL as recognized paradigm - 첫 partnership ### Optimistic - $200K+ MRR - "Personal AI hub" 카테고리 정의 - 첫 enterprise customers - Acquisition 제안 가능 --- # 부록: 관련 문서 ## 작성 완료된 문서 1. **mdfy-master-business-plan.md** — v4 마스터 plan 2. **mdfy-claude-code-handoff.md** — Interim website implementation 3. **mdfy-manifesto-en.md** — 영문 Manifesto 단일 파일 4. **mdfy-bundle-spec-v1.md** — Bundle Spec v1.0 (technical RFC) 5. **mdfy-direction-v5.md** — v5 plan (참고용) 6. **mdfy-direction-v6.md** — 이 문서 (v6 FINAL) ## 다음 작성 필요 - Manifesto v6 update (7 beliefs, hub paradigm) - Bundle Spec v6 update (AI generation, Hub URL) - Bundle Spec announcement post (마케팅) - Demo 영상 시나리오 3편 - Show HN 글 5개 후보 - Twitter thread ## 추후 결정 - Hub URL UX 디테일 - AI bundle generation prompt design - LLM 선택 (GPT-4o vs Claude Opus) - Karpathy outreach timing - Series A timing --- *문서 작성: 2026-04-27Launch deadline: 2026-06-16 (Week 8 Tuesday, HN Show HN)Built by: Hyunsang at Raymind.AIOpen source engine: github.com/raymindai/mdcoreBundle Spec: github.com/raymindai/bundle-spec (예정)Contact: hi@raymind.ai* --- id: r5GcmMrT title: K-테크 파이오니어즈 아세안 권역 대면평가K-테크 파이오니어즈 아세안 권역 대면평가 url: https://memory.wiki/r5GcmMrT updated: 2026-05-18T08:56:37.978+00:00 --- # K-테크 파이오니어즈 아세안 권역 대면평가K-테크 파이오니어즈 아세안 권역 대면평가 **참가팀 안내 (비대면)** 조현상 님 안녕하십니까, K-TECH PIONEERS 아세안 권역 대면평가 운영사 이김컨설팅 **김지희**입니다. K-TECH PIONEERS 대면평가 관련하여 발표 일정 및 자료 제출 안내드립니다.\ 회신 요청 사항도 함께 전달드리오니 기한 내 회신 부탁드리며,\ 문의사항은 아래로 회신 부탁 드립니다. \- 발표 일정 관련 문의 : 이김컨설팅 ([victoria@leekim.com](mailto:victoria@leekim.com)) \- 발표 자료 관련 문의 : K-TECH PIONEERS 운영사무국 ([ktechpioneers.contact@gmail.com](mailto:ktechpioneers.contact@gmail.com)) **1. 발표 일정 — 비대면** <table class="tiptap-table" style="min-width: 50px;"> <colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>구분</strong></p></td><td colspan="1" rowspan="1"><p><strong>내용</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>일시</strong></p></td><td colspan="1" rowspan="1"><p>2026년 5월 21일 (목) 10:20 ~ 11:00 (싱가포르 현지 시각, SGT)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>한국 시각 (참고)</strong></p></td><td colspan="1" rowspan="1"><p>11:20 ~ 12:00 KST</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>평가 슬롯</strong></p></td><td colspan="1" rowspan="1"><p>2일차 평가 2</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>발표 시간</strong></p></td><td colspan="1" rowspan="1"><p>40분 (발표 + Q&A)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>평가 방식</strong></p></td><td colspan="1" rowspan="1"><p>비대면 — Zoom 화상회의</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>선정 과제</strong></p></td><td colspan="1" rowspan="1"><p>업스테이지, KT</p></td></tr></tbody> </table> **2. Zoom 접속 정보 — 비대면** <table class="tiptap-table" style="min-width: 50px;"> <colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>구분</strong></p></td><td colspan="1" rowspan="1"><p><strong>내용</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Zoom 링크</strong></p></td><td colspan="1" rowspan="1"><p>★ 추후 제공 예정 — 평가일 직전(5/19) 본 메일 thread에 별도 발송드립니다.</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>입장 시각</strong></p></td><td colspan="1" rowspan="1"><p>발표 시작 10분 전 대기실 입장 부탁드립니다.</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>운영 안내</strong></p></td><td colspan="1" rowspan="1"><p>입장 후 LKC 운영팀이 위원실 입실 안내드립니다.</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>녹화</strong></p></td><td colspan="1" rowspan="1"><p>운영 차원에서 발표·Q&A 전체 클라우드 녹화 예정 (영상 활용 동의서 §4 참조)</p></td></tr></tbody> </table> **※ Zoom 링크는 추후 제공 예정입니다. 평가일 직전 별도 안내드리오니, 본 메일 thread를 보관 부탁드립니다.** **3. 발표자료 제출 — 마감 2026년 5월 18일 (월) 오후 6시 (KST)** <table class="tiptap-table" style="min-width: 50px;"> <colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>구분</strong></p></td><td colspan="1" rowspan="1"><p><strong>내용</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>템플릿 다운로드</strong></p></td><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow" href="https://leekim.com/ktp-asean/ktp-asean-presentation-template.pptx">https://leekim.com/ktp-asean/ktp-asean-presentation-template.pptx</a></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>파일명</strong></p></td><td colspan="1" rowspan="1"><p>ktp-asean-presentation_Raymind (mdfy).pptx (팀명으로 변경 후 회신)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>작성 원칙</strong></p></td><td colspan="1" rowspan="1"><p>· 발표자료는 선정 과제 수와 무관하게 팀별 1개 제출을 원칙으로 하며, 선정 과제 수가 2개 이상일 경우 발표자료(템플릿) 표지 안내에 따라 작성<br>· 발표자료는 위 템플릿을 준용하여 작성하되, 자체 발표자료 제출 가능 (단, 평가 기준에 부합하는 발표 내용 포함 필수)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>주의</strong></p></td><td colspan="1" rowspan="1"><p>동봉 영상·음향 있을 시 사전 테스트 필요 — 알림 부탁드립니다.</p></td></tr></tbody> </table> **4. 영상 촬영 동의서 — 2026년 5월 18일 (월) 오후 6시 (KST)까지 회신** <table class="tiptap-table" style="min-width: 50px;"> <colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>구분</strong></p></td><td colspan="1" rowspan="1"><p><strong>내용</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>동의서 다운로드</strong></p></td><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow" href="https://leekim.com/ktp-asean/ktp-asean-video-consent.docx">https://leekim.com/ktp-asean/ktp-asean-video-consent.docx</a></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>내용</strong></p></td><td colspan="1" rowspan="1"><p>Zoom 녹화·활용 사전 동의</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>회신</strong></p></td><td colspan="1" rowspan="1"><p>서명 후 회신 부탁드립니다.</p></td></tr></tbody> </table> **5. 비대면 평가 사전 점검** <table class="tiptap-table" style="min-width: 50px;"> <colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>구분</strong></p></td><td colspan="1" rowspan="1"><p><strong>내용</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>네트워크</strong></p></td><td colspan="1" rowspan="1"><p>유선 권장 / 백업 회선(모바일 핫스팟) 준비 권장</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>카메라·마이크</strong></p></td><td colspan="1" rowspan="1"><p>사전 테스트 권장 (<a target="_blank" rel="noopener noreferrer nofollow" href="https://zoom.us/test">https://zoom.us/test</a>)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>발표 환경</strong></p></td><td colspan="1" rowspan="1"><p>조용한 공간, 노이즈 캔슬링 헤드셋 권장</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>화면 공유</strong></p></td><td colspan="1" rowspan="1"><p>PPT 외 영상·음향 공유 시 「컴퓨터 소리 공유」 옵션 체크</p></td></tr></tbody> </table> **6. 회신 요청 사항** · 발표 일정 확인 (참석 가능 여부) · 사전 테스트 일정 협의 필요 시 알림 부탁드립니다 · 시차상 특이사항 (불가능 시각대) 있으시면 회신 · 연락처 / 국가 **7. 비상 컨택** <table class="tiptap-table" style="min-width: 50px;"> <colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>담당</strong></p></td><td colspan="1" rowspan="1"><p><strong>연락처</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>김지희 (Victoria) — 참가팀 담당</strong></p></td><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow" href="mailto:victoria@leekim.com">victoria@leekim.com</a> / +65 6978 1526</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>박재기 (JK) — PM</strong></p></td><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow" href="mailto:jk@leekim.com">jk@leekim.com</a> / +65 9247 3040</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>이서현 매니저 (NIPA)</strong></p></td><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow" href="mailto:ashleylee@nipa.kr">ashleylee@nipa.kr</a> / +65 9769 6314</p></td></tr></tbody> </table> **8. 자료 다운로드 링크** <table class="tiptap-table" style="min-width: 50px;"> <colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>구분</strong></p></td><td colspan="1" rowspan="1"><p><strong>링크 / 위치</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>발표자료 템플릿</strong></p></td><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow" href="https://leekim.com/ktp-asean/ktp-asean-presentation-template.pptx">https://leekim.com/ktp-asean/ktp-asean-presentation-template.pptx</a></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>영상 촬영 동의서</strong></p></td><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow" href="https://leekim.com/ktp-asean/ktp-asean-video-consent.docx">https://leekim.com/ktp-asean/ktp-asean-video-consent.docx</a></p></td></tr></tbody> </table> 다음 주 5/21(목) 10:20에 Zoom으로 만나뵙겠습니다.\ 감사합니다. **김지희 드림** ㈜이김컨설팅 (LEE KIM ALLIANCE PTE. LTD.) Assistant Manager / 법인팀 [victoria@leekim.com](mailto:victoria@leekim.com) --- id: ZVfnXzCU title: Hyunsang Cho - AI Product Executive url: https://memory.wiki/ZVfnXzCU updated: 2026-05-17T19:56:44.35598+00:00 --- # Hyunsang Cho - AI Product Executive > This document profiles Hyunsang Cho, an AI product and experience executive with over 15 years of experience building teams, shipping products, and running organizations across the UK, Korea, and Saudi Arabia. He currently operates Raymind.AI, an independent product studio, while having previously led major AI initiatives including Saudi Arabia's national AI project at Humain. ## Key claims - [EXTRACTED] Cho has "over 15 years of experience across the UK, Korea, and Saudi Arabia" in product and design leadership [doc-1] - [EXTRACTED] He currently runs Raymind.AI, "an independent product studio building consumer apps, developer tools, and AI engines" with live products including mdfy.app, pastlife.app, jolong.ai, screenstyler.ai, and ddalggak.ai [doc-1] - [EXTRACTED] At Humain, he "set up the product and experience organization for Humain OS, Saudi Arabia's national AI project" [doc-1] - [EXTRACTED] His work spans diverse domains including "Enterprise AI platforms, VR, consumer products" [doc-1] - [INFERRED] Cho has experience in both large-scale organizational leadership and independent product development, transitioning from corporate roles to entrepreneurship [doc-1] - [AMBIGUOUS] The document suggests extensive leadership experience but the VR project description at Devsisters appears incomplete, limiting full assessment of this role [doc-1] ## Cross-references - AI experience appears across multiple roles: leading Saudi Arabia's national AI project at Humain and currently building AI-focused products at Raymind.AI - Geographic diversity spans three regions (UK, Korea, Saudi Arabia) suggesting international experience in different markets - Role progression shows evolution from corporate director-level positions to independent founder ## Open questions / gaps - What specific outcomes or metrics were achieved at Humain OS? - What was the scope and result of the VR project at Devsisters (description appears cut off)? - What is the business model and scale of the current Raymind.AI products? - What was the nature of his UK experience, which is mentioned but not detailed? ## Provenance - [doc-1]: Professional profile/resume providing career overview, current role, and contact information for Hyunsang Cho's background in AI product leadership --- id: jryfJV4D title: SNS Launch Execution Plan url: https://memory.wiki/jryfJV4D updated: 2026-05-16T04:42:48.281+00:00 --- # SNS Launch Execution Plan ## Messaging Principles | Wrong | Right | | --- | --- | | “Free” repeated | “Start free” — first life free, full journey is premium | | “AI-powered” | “Seer Mir reads your soul” — character-driven | | Soul Cinema only | Feature rotation — portraits, videos, chat, Soul Cinema | | Feature listing | Emotion-driven — curiosity, chills, connection | --- ## Phase 0: Asset Preparation ### Profile Image - Logo symbol, circular crop -> same across all 5 channels - Source: `public/images/` ### Header/Banner - X (Twitter): 1500x500px - YouTube: 2560x1440px - Source: hero-bg or gate-of-time image, resized ### Content Assets - Location: `temp/sample-downloads/` - 16 personas, each with: image-1~~5.webp, video-1~~5.mp4, soul-cinema.mp4 - soul-cinema.mp4 = hero content (30sec, vertical 9:16) --- ## Phase 1: Profile Setup (30 min) ### Instagram (@pastlife.app) ```text Display Name: PastLife — Past Life Readings Bio: Seer Mir reveals your 5 past lives Portraits. Cinematic videos. Soul Cinema. Chat with who you were. Start free ↓ Link: pastlife.app ``` Highlights (create 5 folders): - How It Works - Solo - Couples - Pets - Soul Cinema ### TikTok (@pastlife.app) ```text Display Name: PastLife Bio: Seer Mir reveals your 5 past lives. Portraits. Videos. Chat. Start free ↓ Link: pastlife.app Category: Entertainment ``` ### X / Twitter (@pastlifeapp) ```text Display Name: PastLife Bio: Seer Mir reads your soul and reveals 5 past lives — portraits, cinematic videos, Soul Cinema, and you can even talk to who you were. Start free. Link: pastlife.app ``` Upload header image (1500x500) ### YouTube (@pastlifeapp) ```text Channel Name: PastLife Description: Who were you in your past lives? Seer Mir reads your soul and reveals your 5 past lives. What you get: - 5 past life portraits — your face reimagined across centuries - 5 cinematic videos — each past life brought to life - Soul Cinema — a 30-second film of your soul's journey - Chat with your past selves — talk to who you were Solo / Couples & Friends / Pets Start free: https://pastlife.app --- 넌 전생에 누구였을까? 시어 미르가 너의 영혼을 읽고 너의 전생을 보여줘. - 전생 초상화 5장 — 시대를 넘어 너의 얼굴을 재현 - 시네마틱 영상 5편 — 전생의 이야기가 살아남 - 소울 시네마 — 영혼의 여정을 담은 30초 필름 - 전생 채팅 — 과거의 나와 대화 솔로 / 커플 & 친구 / 반려동물 무료로 시작: https://pastlife.app --- 你的前世是谁? 先知 Mir 读取你的灵魂,揭示你的5段前世。 - 5幅前世肖像 — 跨越世纪重现你的面容 - 5部电影级视频 — 每段前世栩栩如生 - Soul Cinema — 30秒灵魂之旅影片 - 前世对话 — 与过去的自己交谈 单人 / 情侣 & 朋友 / 宠物 免费开始: https://pastlife.app ``` Upload banner (2560x1440) ### Threads (@pastlife.app) ```text Bio: ``` --- ## Phase 2: Seed Content Day 1\~3 (Before Gate Open) Minimum 6 posts before opening the prelaunch gate. Empty accounts have no trust. ### Cross-posting Rule (EVERY post) 모든 포스트는 아래 5개 플랫폼에 동시 업로드: | Platform | Format | Notes | | --- | --- | --- | | TikTok | 영상 원본 (9:16) | 워터마크 없는 원본 사용 | | Instagram Reels | 같은 원본 | 캡션 동일, 해시태그 동일 | | YouTube Shorts | 같은 원본 | 캡션 동일 | | Threads | 캡션 텍스트 + pastlife.app 링크 | 영상 첨부 가능 | | X (Twitter) | 캡션 텍스트 + pastlife.app 링크 | 영상 첨부 or 스크린샷 | ### Day 1 | Time (EST) | Post | Format | Feature Focus | | --- | --- | --- | --- | | 12:00 PM | #1 Brand Intro | Soul Cinema full video | Soul Cinema | | 7:00 PM | #2 How It Works | Screen recording 30sec | Full flow | **Post #1 — Priya Soul Cinema**Asset: `Priya_solo-indian-woman/soul-cinema.mp4` ```text Seer Mir read her soul. 5 past lives. A healer in ancient India. A rebel poet in Persia. A navigator crossing unknown seas. This is Priya's Soul Cinema — a 30-second film of her soul's journey across centuries. What would yours look like? pastlife.app #PastLife #SoulCinema #PastLifeReading #SeerMir #WhoWasI #Reincarnation #SpiritualTikTok ``` **Post #2 — How It Works**Screen recording of pastlife.app quiz flow, 30 seconds, fast cuts. Text overlay: ```text Step 1: Answer 7 soul questions Step 2: Upload a selfie Step 3: Seer Mir reads your soul Step 4: Meet your 5 past selves — portraits & videos Step 5: Watch your Soul Cinema Step 6: Chat with who you were Start free. The full journey awaits. ``` Caption: ```text Seer Mir reveals your 5 past lives in under 2 minutes. Portraits of who you were. Cinematic videos of each lifetime. A Soul Cinema film. And you can actually talk to your past selves. The first life is free. The rest... you'll want to see them all. pastlife.app #PastLife #HowItWorks #SeerMir #PastLifeTest #SpiritualTikTok ``` --- ### Day 2 | Time | Post | Format | Feature Focus | | --- | --- | --- | --- | | 7:00 AM | #3 Cat Past Life | Soul Cinema | Pet mode | | 7:00 PM | #4 Past Life Portraits | Image slideshow | Portraits | **Post #3 — Cat Past Life (highest viral potential**)Asset: `Kai-Luna_man-cat/soul-cinema.mp4` ```text Seer Mir said my cat was a temple guardian in ancient Japan. 5 past lives. From samurai companions to monastery cats. Always protecting. Always loyal. 88% chance we'll find each other in the next life. Your pet has a story too. pastlife.app #PastLife #CatPastLife #PetPastLife #CatsOfTikTok #SeerMir #Reincarnation #SoulCinema ``` **Post #4 — Past Life Portraits (new feature showcase**)Asset: `Kwame_solo-african-man/image-1~5.webp` -> 5 images, 3 sec each = 15 sec slideshow Text overlay per image: ```text Image 1: "LIFE I — Guardian of the Mali Empire, 1300s" Image 2: "LIFE II — Egyptian temple priest, 800 BC" Image 3: "LIFE III — ..." Image 4: "LIFE IV — ..." Image 5: "LIFE V — ..." ``` Caption: ```text One soul. Five faces across history. Seer Mir reveals who you were — and shows you exactly what you looked like. These are Kwame's 5 past life portraits. From the Mali Empire to ancient Egypt. What does your soul look like across centuries? pastlife.app #PastLife #PastLifePortrait #WhoWasI #SeerMir #Reincarnation #AfricanHistory ``` --- ### Day 3 | Time | Post | Format | Feature Focus | | --- | --- | --- | --- | | 12:00 PM | #5 Couple Reveal | Soul Cinema | Duo + reunion % | | 7:00 PM | #6 Past Life Chat | Screen recording/screenshots | Chat feature | **Post #5 — Marcus & Zara Couple**Asset: `Marcus-Zara_black-couple/soul-cinema.mp4` ```text Marcus and Zara. Lovers across 5 lifetimes. Warriors in ancient Africa. Rebels in the Ottoman Empire. Star-crossed in every century. Seer Mir says: 94% chance they'll meet again in the next life. Discover your bond. pastlife.app #PastLife #Soulmates #CoupleGoals #PastLifeLove #CoupleTest #SeerMir #SoulCinema ``` **Post #6 — Past Life Chat (key differentiator**)Asset: Screen recording or screenshot compilation of chat with past life character ```text I just had a conversation with who I was 500 years ago. She was a healer in medieval Korea. I asked her what she regrets. She said "not trusting my own visions." Seer Mir lets you talk to your past selves. It's... a lot. pastlife.app #PastLife #TalkToYourPastSelf #PastLifeChat #SeerMir #SpiritualTikTok #Reincarnation ``` --- ## Phase 3: Gate Open (Day 3 evening or Day 4) After 6 posts are live, remove the prelaunch gate from proxy.ts. --- ## Phase 4: Full Posting Day 4\~10 ### Feature Rotation — show a different feature each day | Day | Morning/Noon | Evening | | --- | --- | --- | | Day 4 | Dog Soul Cinema (Sofia & Buddy) | Cinematic video highlight reel (5-sec clips compilation) | | Day 5 | Solo Soul Cinema (Astrid) | Couple reunion % focus (Hiro & Mei — “92%”) | | Day 6 | Orange Cat solo (Mango) | Chat POV (“POV: talking to yourself from 1400s”) | | Day 7 | Couple (Amir & Layla) | “Tag someone” viral format | | Day 8 | Solo (Diego) | Husky past life (Storm) | | Day 9 | Couple (Joon & Claire) | Portrait before/after compilation | | Day 10 | Reaction (film yourself) | “Which past life wins?” comparison format | ### Format Rotation (weekly targets) - Soul Cinema (full 30sec) — 2\~3x/week - Past life portrait slideshow — 1\~2x/week - Past life chat screenshot/recording — 1\~2x/week - Cinematic 5-sec video clips — 1x/week - Reunion % focus (couples/pets) — 1x/week - Viral format (POV, Tag, Reaction) — 1\~2x/week ### Cross-posting Order (every post) 1. TikTok (original, no watermark) 2. Instagram Reels (same original) 3. YouTube Shorts (same original) 4. Threads/X -> text + screenshot + link --- ## Phase 5: Community Seeding (Day 4\~7, parallel) Max 1\~2 subreddits per day. Natural tone, never ad-like. | Day | Subreddit/Community | Tone | | --- | --- | --- | | Day 4 | r/pastlives | “Found this site where a seer named Mir reads your past lives. Mine was a healer in Goryeo dynasty. You can actually chat with them too” | | Day 5 | r/cats + r/dogs | Pet result screenshot + “My cat’s past life was a samurai temple guardian lmao” | | Day 6 | r/InternetIsBeautiful | “PastLife — a seer reads your soul, shows 5 past lives with portraits and videos, and you can chat with who you were” | | Day 7 | r/spirituality | Chat screenshot + “I asked my past self what they regret…” | Also: - Facebook groups: Past lives / Reincarnation / Spiritual groups, same natural tone - Quora: Answer “Do past lives exist?” type questions, mention pastlife.app naturally --- ## Phase 6: Influencer Outreach (Day 7+) ### Target Categories - Spiritual/tarot TikTokers (10K\~100K followers) - Pet accounts (offer pet past life content) - Couple accounts (offer free duo experience) ### DM Template ```text Hey [name]! Love your content. We built PastLife — a seer named Mir reads your soul and reveals 5 past lives with portraits, cinematic videos, and a Soul Cinema film. You can even chat with who you were. Would love to gift you the full experience. No strings — just thought your audience would be into it. pastlife.app ``` ### What to offer - Free premium ticket (create dedicated promo code per influencer) - Request review/reaction video (not mandatory) - No revenue share at this stage --- ## Promo Codes (Ready) | Code | Audience | Discount | Limit | | --- | --- | --- | --- | | EARLYBIRD50 | Waitlist subscribers | 50% off | 500 uses, first purchase only | | FIRST100 | General (SNS, viral) | 50% off | 100 uses, first purchase only | --- ## Immediate Action Items 1. Prepare profile image + header images 2. Set up all 5 channel bios (copy text above) 3. Upload Post #1 (Priya Soul Cinema) 4. Screen-record How It Works -> Upload Post #2 5. Continue Day 2\~3 schedule 6. Notify to remove prelaunch gate after 6 posts --- id: GAaYIkii title: MCP authenticated test url: https://memory.wiki/GAaYIkii updated: 2026-05-15T18:42:04.256051+00:00 --- # MCP authenticated test Created via `mcp__mdfy__mdfy_create` after `mdfy login`. The MCP server should now forward `hi@raymind.ai` as the owner via the `Authorization: Bearer` header read from `~/.mdfy/config.json`. End-to-end expectation: 1. MCP → `POST mdfy.app/api/docs` with auth header → doc created with `user_id=14b7e152-...` 2. Postgres `documents` INSERT trigger fires 3. pg_net → `POST mdfy.app/api/hooks/doc-created` with webhook secret 4. Handler sees `user_id`, queues `/api/embed/{id}` (not skipped this time) 5. `embedding_updated_at` fills within ~3s Verifying now. --- id: apv_1MYu title: Webhook Lifecycle Testing Documentation url: https://memory.wiki/apv_1MYu updated: 2026-05-15T18:21:43.369848+00:00 --- # Webhook Lifecycle Testing Documentation > This collection documents a systematic test of webhook functionality, specifically verifying that the complete webhook lifecycle operates correctly when documents are pushed through the /api/docs endpoint. The three test documents demonstrate end-to-end webhook verification across multiple sequential operations. ## Key claims - [EXTRACTED] The webhook testing involves pushing documents via the /api/docs endpoint to verify end-to-end lifecycle functionality [doc-1, doc-2, doc-3] - [EXTRACTED] Each test document uses a unique identifier in the format 177886885X where X increments sequentially [doc-1, doc-2, doc-3] - [INFERRED] The webhook system is designed to handle multiple sequential document operations, as evidenced by the three consecutive test pushes [doc-1, doc-2, doc-3] - [INFERRED] This appears to be part of a quality assurance or integration testing process for webhook infrastructure [doc-1, doc-2, doc-3] ## Cross-references - All three documents share identical structure and purpose, differing only in their sequential numbering and body identifiers - Each document explicitly states its role in webhook lifecycle verification, suggesting this is part of a coordinated test suite ## Open questions / gaps - What specific webhook events are being tested in the lifecycle? - What constitutes successful webhook verification versus failure? - Are there additional test scenarios beyond these three basic document pushes? - What system or service is receiving and processing these webhook events? ## Provenance - [doc-1]: Initiates the webhook testing sequence with the first verification document - [doc-2]: Continues the sequential testing pattern with the second verification document - [doc-3]: Completes the three-part webhook verification test sequence --- id: NpXe_CnP title: Native skills vs current surfaces — what should we replace url: https://memory.wiki/NpXe_CnP updated: 2026-05-15T17:04:40.63+00:00 --- # Native skills vs current surfaces — what should we replace > Companion to the "Native skills + connectors" note. Native integrations aren't only *additive* — some of them are better-shaped versions of what we already ship. This walks each current surface and calls out replacement candidates. ## Obvious replacement candidates (cost > value today) | Current surface | Replacement | Why | | --- | --- | --- | | **Desktop app (Electron, mac/win)** | **PWA install + macOS Share Sheet ext + QuickLook plugin** | Electron wraps mdfy.app web — value ≈ web. Maintenance is heavy (build / signing / auto-update / memory). The actual mac-native value (Share Sheet, Spotlight, QuickLook) is not reachable from Electron. **Drop Electron → split into three mac-native pieces. All three together are still lighter than Electron upkeep.** | | **Chrome extension's "AI capture" mode** | **Claude Skill + ChatGPT GPT + Gemini Extension** (once all three ship) | A native skill in each AI is one click in the AI's own surface — and reaches iOS / Android / desktop apps the Chrome ext can't. **But the Chrome ext's GitHub README + generic web-page capture stays.** Scope down to "web page capture only." | ## Partial replacement / depends on usage | Current surface | Alternative | Verdict | | --- | --- | --- | | **VS Code extension** | Claude Code hooks + Cursor MCP | Case is weaker — if the user is already in Claude Code / Cursor, they don't open the VS Code ext separately. **But the VS Code ext is an *editor*, not just an integration.** Audit usage; consider freezing new feature work; invest in Claude Code hooks instead. | | **Manual AGENTS.md / CLAUDE.md / .cursor/rules wiring** | Claude Code hooks auto-managing the file | **Keep.** The manual one-line recipe is the *universal* path that works in every tool, current and future. Hooks are an additive convenience layer for Claude Code specifically. Both. | ## Keep as-is | Surface | Reason | | --- | --- | | **MCP server** | IDE-tier integration (Claude Desktop, Code, Cursor). Complementary to a web-tier Skill, not redundant. | | **GitHub Action sync** | Repo / team-level source-of-truth on push. Claude Code hooks are individual + real-time — different scope. Both. | | **6 import routes (PDF / DOCX / Obsidian / Notion / GitHub / URL)** | Content ingestion paths. Orthogonal to AI integrations. | | **REST API** | Every native skill calls this. Turning it off kills everything else. | ## Strongest single recommendation **Drop the Electron desktop app → "mac-native triplet."** The Electron app has the highest current upkeep cost (auto-update, code signing, RAM footprint, separate GitHub Releases channel) and the lowest unique value vs. the web app. Three real mac-native scenarios users would actually use are *not* reachable from Electron: 1. **Spotlight / Raycast search for mdfy docs** — PWA install + URL scheme handler 2. **"Save to mdfy" from Safari / Mail / Notes** — macOS Share Sheet extension (Swift App Extension) 3. **Finder space-bar on a** `.md` **file → rendered preview** — QuickLook plugin The three combined are still lighter than maintaining Electron. After they ship, give the Electron app a 1-year deprecation notice and point the download page at PWA install. ## Second recommendation **Migrate Chrome ext's AI-capture path to native skills incrementally.** The Chrome ext's per-AI capture (ChatGPT / Claude / Gemini chat selectors) is the most fragile piece in our stack — every UI redesign at OpenAI/Anthropic/Google forces a selector patch. Native skills don't have that brittleness. Plan: ship Claude Skill + ChatGPT GPT first, then narrow the Chrome ext to "generic web-page + GitHub README capture only." ## Re-prioritised order (combining build + replace decisions) 1. **ChatGPT GPT + Actions** — relieves Chrome ext AI-selector maintenance for ChatGPT users 2. **Claude Skill (web)** — relieves Chrome ext AI-selector maintenance for Claude users 3. **Electron → PWA + Share Sheet + QuickLook** — net upkeep reduction 4. **VS Code ext usage audit** — decide freeze vs. continue based on telemetry #1 + #2 are net-positive on day one (broader reach, lower upkeep). #3 needs the three mac-native pieces shipped before deprecation can start. --- id: dEgO6Qml title: First-principles check: are we drifting? url: https://memory.wiki/dEgO6Qml updated: 2026-05-15T16:43:23.889601+00:00 --- # First-principles check: are we drifting? > Strategy reflection. Mapping today's product surface against the 8 founding principles. Where we're aligned, where we're drifting, what to double down on. ## The 8 first principles 1. **LLMs read markdown natively.** (empirical) 2. **URLs cross every boundary.** (empirical) 3. **Authored, not extracted.** (conviction) 4. **Cross-AI is a structural moat.** (argument) 5. **The graph lives in the response, not behind a service.** (conviction) 6. **Per-project + per-person scopes compose.** (observation) 7. **Zero friction.** (founding principle) 8. **Build in public.** (tactic) ## Per-principle assessment | Principle | Alignment | Comment | |---|---|---| | **1. LLMs read markdown** | ✓ strong | Every output is markdown. No drift. | | **2. URLs cross every boundary** | ✓ strong | `/llms.txt`, `?compact`, `?graph=0` are all URL-native. The image-rehost work today was a direct expression of "URL must be self-contained." | | **3. Authored, not extracted** | ⚠ half | The product is aligned. **Risk: auto-analyze, concept index, related-in-hub may read as "AI organizes for you" if marketed naively.** The verb order matters — *"you write, the AI links"* must always be in that order. | | **4. Cross-AI = structural moat** | ⚠ at risk | If the 4 native-skill plan is *framed* as "we support every AI," the cross-AI thesis reduces from "one URL works in 3 AIs" to "Claude one + ChatGPT one + Gemini one." Strictly worse framing. | | **5. Graph in the response (not a service)** | ✓ strong | The auto-queue-on-bundle-create work shipped today is exactly this. Fresh bundles' URLs carry graph_data from the start. | | **6. Doc / Bundle / Hub composable scopes** | ✓ strong, ⚠ marketing | This is our most differentiating part, but marketing emphasizes hub. **Bundle deserves equal billing — AGENTS.md fit is *bundle*, not hub.** | | **7. Zero friction** | ⚠ weakening | "Zero friction to *try*" is intact. "Zero friction to *use well*" is weakening (image rehost / edit token / GitHub Action all need an account). Healthy for monetization but the founder narrative needs to be honest about it. | | **8. Build in public** | ✓ strong | Today's GitHub Action dogfood is the proof. | ## Biggest single drift risk **Feature breadth is growing faster than spine consolidation.** One conversation today shipped: image rehost (6 import paths), 4 Marp decks + PDF/PPTX, native skill roadmap, GitHub Action dogfood, sign-out bundle clear, demo 50-doc seed + ID renumber, bundle readiness pill + auto-queue. Each piece is justifiable. The risk: after 5 minutes of using mdfy, a user should be able to answer *"what is this?"* in 8 words — **"URL is the unit. Markdown is the substrate."** If they can't, breadth is hurting positioning. ## Three concrete recovery moves 1. **Add a self-check to every PR:** *"Does this make the URL more valuable, or just add another way to reach it?"* The first kind compounds. The second is breadth without spine. 2. **Lock native-skill positioning before any of them ship.** Each skill UI must say *"Your URL: mdfy.app/<X>"* somewhere visible — the skill is the *on-ramp* to the URL, not a substitute for it. Otherwise we accidentally train users that mdfy *is* the ChatGPT GPT. 3. **Promote bundle in the launch copy.** Current Show HN draft leans on hub. The hub URL is the "personal layer"; the bundle URL is the "per-project layer" — and that's exactly what AGENTS.md / .cursor/rules need. Add a bundle slide. In /spec, change the order to doc → bundle → hub (small to large, composition first). ## One-line summaries **What's working:** Layered architecture on a markdown-URL foundation. Each new feature deepens that layering, not flattens it. **What to watch:** "We have a Claude thing AND a ChatGPT thing AND a Gemini thing" is a concession framing. The principle is "one URL, every AI reads it." Hold that frame even while shipping the skills. ## Action items (this week) - [ ] Add the PR-self-check rule to CLAUDE.md - [ ] Lock the "Your URL: ..." visibility rule in any native skill mockup - [ ] Add a bundle-first slide to the Show HN draft - [ ] Reorder /spec sections: doc → bundle → hub --- id: LpLbS250 title: Native skills + connectors: what improvements are possible url: https://memory.wiki/LpLbS250 updated: 2026-05-15T16:43:23.665772+00:00 --- # Native skills + connectors: what improvements are possible > Strategy note. What changes when we ship native skills / connectors on Claude, ChatGPT, and Gemini vs. the current URL-paste-only path. ## What changes at the "layer above AI" level | Today (URL / Chrome ext only) | With native skill / connector | |---|---| | User has to *remember* the URL and paste it | "Save this to my mdfy hub" as a single sentence | | Capture is Chrome-desktop-only | iOS / Android / Claude Desktop all covered | | Read-only (paste-as-context) | Bidirectional read + write — AI writes docs / updates bundles directly | | User has to *decide* "I should save this now" | End-of-conversation auto-capture (with consent) | | Hub search means going to mdfy.app | In-AI autocomplete: `@my-decisions`, `@cross-ai-thesis` | ## Per-platform menu ### 1. ChatGPT — `GPT + Actions` The most mature surface. OpenAPI schema is a single config file. - Wrap our public REST API (`/api/docs`, `/api/hub/<slug>/recall`, `/api/bundles`) as actions - "mdfy memory" GPT — mid-conversation: *"what did I write about my cross-AI thesis?"* → action fires recall → answer cites the doc URL - End-of-conversation: *"Should I save this?"* → action POSTs `/api/docs` - Build cost: **near-zero**. OpenAPI spec + GPT instruction text. ### 2. Claude — `Claude Skill` + `Claude Code plugin` MCP server is already shipped (Desktop / Code / Cursor ✓). - **Claude.ai web Skill**: trigger `/mdfy` inside any Claude.ai conversation, including iOS Claude app — the surfaces our Chrome extension can't reach. - **Claude Code hooks package** (`mdfy-hooks` npm): pre-edit / post-edit / pre-commit hooks that auto-update `mdfy.app/d/<repo-knowledge-id>` in real time. Same idea as the GitHub Action shipped this week, but at Claude Code session granularity. - Future: Anthropic **Computer Use** — experimental, Claude actually drives mdfy.app UI directly. ### 3. Gemini — `Gemini Extension` The largest potential user pool (Android default AI). - **Workspace fit**: Gmail → *"save this email as a memo"* → mdfy URL - **Docs fit**: Google Docs → *"cite from my mdfy hub"* → inline fetch + citation - Approval path is the heaviest of the three (Google review). ### 4. Cross-cutting (one-time build, three platforms benefit) - **iOS Share Sheet extension**: Safari / Mail / Slack → "Save to mdfy" - **macOS QuickLook plugin**: Finder space-bar on a `.md` URL → mdfy-rendered preview - **VS Code AI side panel deepening**: existing VS Code ext gets Cursor-style inline AI invocation ## Highest-leverage order (priority) 1. **ChatGPT GPT + Actions** — near-zero build cost, largest install base, public REST API already exists. Ship-able in 1-2 days. 2. **Claude Skill (.ai web)** — covers mobile Claude + the desktop Claude app that the Chrome ext can't reach. Available the moment Anthropic Skills API GA's. 3. **Claude Code hooks** — straight at the ICP. `mdfy-hooks` npm package. More real-time than the GitHub Action. 4. **iOS Share Sheet** — mobile capture is currently missing entirely. Apple review 1-2 weeks + Swift code ~1 week. ## Skip / defer (at least until post-v6 launch) - Gemini Extension — Google approval path is heavy + Android ICP fit is weak - NotebookLM connector — cannibalisation risk (NotebookLM is itself a hub product) - OpenAI Apps SDK — too new (stability uncertain) ## The single biggest synergy effect Shipping ChatGPT GPT + Claude Skill **simultaneously** turns the cross-AI thesis into a demonstrable artifact: > Save in ChatGPT → search from Claude immediately → 30-second video clip → goes into the Show HN post as evidence. That's the cross-AI moat made visible at the system level, not just at the URL-paste level. --- _Token cap (120,000) reached. 13 more documents available — fetch on demand:_ - [Rust Error Handling: From Beginner to Production](https://memory.wiki/raw/orlirmor?compact=1) - [Frequently Asked Questions](https://memory.wiki/raw/SfYEsN5E?compact=1) - [Interim Website Update — Summary](https://memory.wiki/raw/21Bwb3-8?compact=1) - [mdfy.cc — Interim Website Update & Business Direction](https://memory.wiki/raw/f3f32npB?compact=1) - [mdcore Engine Architecture Decision](https://memory.wiki/raw/g-jo1g9s?compact=1) - [VS Code Extension — Quick Start](https://memory.wiki/raw/zOjZPXY7?compact=1) - [mdfy for Mac — Quick Start](https://memory.wiki/raw/CaQ31sfk?compact=1) - [Chrome Extension — Quick Start](https://memory.wiki/raw/mcRfLTP7?compact=1) - [법률 내비게이션 서비스](https://memory.wiki/raw/zggFXgUL?compact=1) - [QuickLook — Quick Start](https://memory.wiki/raw/womPEbUm?compact=1) - [OAuth 2.0 + PKCE Implementation Guide](https://memory.wiki/raw/Oss2bUN8?compact=1) - [mdfy.cc Manifesto](https://memory.wiki/raw/3Ug2sp5E?compact=1) - [mdfy.cc 사업화 방향성 v4 (FINAL)](https://memory.wiki/raw/-2UojXG0?compact=1)