← SOP Library

SOP: Migrate Claude Desktop (Claude.ai) Projects + Conversations into Claude Code

Version: 1.0 Last Updated: 2026-06-29 Owner: Sondra (run with her AI operator in Claude Code)


Purpose Recover *everything* from a Claude.ai (web/desktop) account — every project, every conversation, with full content — into a local, permanently searchable library, so no past work is ever lost and any conversation can be found on demand. Your conversations are your IP; this protects them and makes them usable.

Scope Run this when someone has done a lot of work inside Claude.ai Projects and chats and wants it consolidated into Claude Code / their knowledge base. It is a point-in-time snapshot — re-run it every so often to capture new conversations (that's the "do another sweep" step).

Tools & Resources Required

thing the export leaves out: which project each conversation belongs to


Procedure

  1. Trigger the official export (USER does this). In Claude.ai: click your initials (bottom-left) → SettingsPrivacy tab → Export data → confirm. Claude emails a download link (minutes for small accounts, up to a few hours for big ones; link expires in 24h). Download the ZIP and drop it in the intake folder.
If the file is named ...batch-0000: large accounts get split into several ZIPs (batch-0001, 0002...). Check the email for more links and grab them all.
  1. Parse the export. Unzip it. Inside: projects/<uuid>.json (each project's name, custom instructions, and uploaded knowledge docs), conversations.json (ALL chats with full messages + an AI summary each), and memories.json (account memory). Run the parser to split it project-by-project and produce a manifest you can eyeball.
Critical gotcha: the export does NOT tag conversations with their project. Any project where the work happened in *chats* (not uploaded files) will look empty — it isn't. The content is in the conversation pile, just unlabeled.
  1. Get the real project labels from Claude itself (the key step). Open a browser, log into claude.ai, and pull Claude's own data: GET /api/organizations/{orguuid}/chatconversations — **every conversation returns its project_uuid and project name.** That is the exact link the export drops. Save the full map.
  1. Combine the two sources by conversation ID. The browser map gives the correct project label; the export gives the full content. Match on UUID and file each conversation into its real project folder, with the complete transcript.
  1. File the loose ones too. Conversations with no project, plus any that were deleted from Claude but still in the export, get filed with full content and topic-tagged. Use a unique ID in each filename so none overwrite.
  1. Build the findability layer (this is what makes it bulletproof).

one-line summary. This is what the agent searches when you ask "where's that chat about…".

index *before* ever saying a conversation can't be found.

  1. Surface it where you live. Put the library + a clean project index on the daily home (e.g. the CEO Dashboard) so it's one click away on desktop and phone.
  1. Verify (don't assert). Counts must reconcile: *projects + loose = export total* (nothing lost). Open a project, open a conversation, confirm the full back-and-forth is there. Grep the index for a known topic and confirm it returns the right chat.

Definition of Done

real project, loose ones topic-tagged.

Common Mistakes to Avoid

API/browser, or everything files into the wrong place.


This SOP documents the migration run on 2026-06-29 (577 conversations, 18 projects recovered). Scripts live in PROJECTS/Brain Migration/.