Inspiration

I use ChatGPT, Claude, and Gemini daily. Each has strengths — ChatGPT for coding, Claude for long-form analysis, Gemini for research. But my work gets trapped. A 2-hour research session in ChatGPT cannot move to Gemini. A Claude artifact cannot reach ChatGPT. The silos are real, and there is no bridge.

I built ConvoSync to break them.

What It Does

ConvoSync is a Chrome extension that extracts full AI conversations — with roles, code blocks, tables, file references, and context — then bridges them to any other AI platform.

  • Extract from ChatGPT, Claude, Gemini, Perplexity, or Copilot
  • Preserve context with smart semantic chunking that never splits a code block
  • Bridge the conversation to Gemini or Claude with one click
  • Export to NotebookLM as a structured research source

How I Built It

Architecture: Manifest V3 Chrome extension. React 18 popup UI. TypeScript strict mode. Pure client-side — no server, no data leaves the browser.

Core Engine:

  • Multi-platform parsers — Each AI renders conversations differently (React hydration, shadow DOM, lazy loading). ConvoSync handles all of them.
  • Smart chunking — Splits long conversations at message boundaries, preserves semantic flow, adds overlap context so the receiving AI understands continuity.
  • Context preservation — System instructions, code blocks with language tags, tables, file attachments, and metadata are all preserved.
  • Bridge injection — Uses Chrome's scripting API to inject formatted conversations directly into target AI text areas, with graceful clipboard fallback.

How Codex Accelerated This

I built the core architecture and UX flow. Codex handled the heavy technical lifting:

  • DOM parsers — ChatGPT, Claude, and Gemini each use different DOM structures. Codex wrote the resilient extractors that handle dynamic content and lazy loading.
  • Smart chunking algorithm — The semantic boundary detection, token-aware splitting, and code-block preservation logic.
  • Bridge injection layer — Navigating MV3 restrictions, cross-tab messaging, and target platform text area detection.
  • Context engine — System instruction extraction, topic detection, and platform-specific formatting (Claude loves XML, Gemini prefers markdown).

Codex turned architectural decisions into production code in hours, not days.

Challenges

The content script problem. MV3 content scripts must be self-contained IIFE bundles — no ES module imports. My initial build split chunks that Chrome could not load. I had to reconfigure Vite to inline everything into a single content.js.

File attachment detection. ChatGPT renders Excel files as rich React components, not simple <a> tags. My scanner initially found 5 false positives from spreadsheet cell content. I rebuilt the detection to distinguish file headers from data cells using parent context and icon proximity.

Cross-origin injection. Browser security prevents direct file transfer between AI platforms. I pivoted to a "Research Package" model — downloading files locally and guiding users to re-upload — which is honest about limitations while still delivering value.

What I Learned

  • MV3 extension architecture in depth
  • DOM parsing across React-hydrated, dynamically loaded pages
  • Semantic text chunking without external tokenization libraries
  • When to fight browser security and when to design around it

What's Next

  • Direct file download-and-bridge using background fetch + blob handling
  • Conversation diffing across AI versions
  • Team workspace for shared research corpora

Built With

Share this project:

Updates