Contact
Let's work together
AI Chat Export

AI Chat Export

A multi-browser extension that exports AI chatbot conversations to clean, structured Markdown - supporting 8 platforms, published on Chrome Web Store, with 20 releases delivered in 2 months.

January 2026 - March 2026
2 months
Solo Developer & Product Owner
TypeScript 5.9React 19Vite 6Tailwind CSS 4Manifest V3Chrome Extensions APIGitHub ActionsVitestPlaywrightTerserjavascript-obfuscatorrelease-itJSZiphtml2canvas

Source Lines

20,734

TypeScript + React

Platforms

8

AI chatbots supported

Releases

20

In 2 months

Commits

84

By a single contributor

Project Overview

What AI Chat Export is and why it exists

AI Chat Export is a browser extension (Chrome, Firefox, Edge, Brave, Opera) that exports conversations from the major AI chatbots to clean, well-structured Markdown. It addresses a concrète, widespread frustration: the native copy and export buttons built into ChatGPT, Gemini, Claude, and other AI interfaces systematically lose formatting, strip hyperlinks, omit citations, and offer no control over the exported content.

The extension sits at the intersection of developer productivity tools and the AI assistant ecosystem. It targets the rapidly growing population of regular AI chatbot users - developers, researchers, students, technical writers - who need to archive, share, or reuse their conversations outside the chatbot interface. It is distributed through the Chrome Web Store and GitHub Releases.

Supported Platforms

ChatGPT

Deep Research, Canvas, React Fiber

Active

Gemini

Deep Research, iframes, charts

Active

Claude

Artifacts, async extraction

Active

Perplexity

Citations, docs, Python scripts

Active

Grok

DeepSearch, citation expansion

Active

Mistral

HTML to Markdown

Active

Copilot

Planned

Planned

DeepSeek

Planned

Planned
Core Capabilities
Full Markdown export with all links and formatting preserved
One-click copy to clipboard or file download
Multi-tab batch export with compare, merge, and fact-check
YAML Front Matter compatible with Jekyll, Hugo, Obsidian
Dynamic JavaScript link extraction and title fetching
Split download for long conversations

Objectives, Context & Risks

The strategic vision behind the project

The project was driven by five clear, measurable goals:

Export Fidelity

100%

Capture all content including dynamic links, citations, artifacts

Platform Coverage

6+ chatbots

Major AI platforms on the market

Browser Support

5 browsers

Chrome, Firefox, Edge, Brave, Opera

UX Goal

1 click

Copy or download in a single action

CI/CD

Automated

Full pipeline to Chrome Web Store

Context

This was a personal side-project initiated in January 2026 and developed entirely by Jose DA COSTA as sole developer. The repository is private on GitHub with a proprietary license and production code obfuscation. The market for AI chatbot export tools is emerging but already competitive, making speed-to-market and extraction quality the key differentiators.

Stakes

Beyond a technical exercise, the project carried real business stakes: rapid market positioning in an emerging niche, Chrome Web Store compliance (the extension was already rejected once for keyword stuffing), and continuous maintenance against constantly evolving chatbot DOM structures. The proprietary nature of the code also demanded robust intellectual property protection through multi-layer obfuscation.

Identified Risks

DOM Changes by AI Platforms

Chatbots frequently update their UI, breaking extractors. Mitigated by modular architecture and E2E tests.

Chrome Web Store Rejection

Strict Google guidelines already caused one rejection. Documented compliance rules integrated into dev process.

Anti-Bot Protection (Cloudflare)

ChatGPT uses aggressive bot protection, preventing automated Playwright tests on this platform.

Single Developer Dependency

Sole maintainer creates bus factor risk. Mitigated by exhaustive documentation (23K-word CLAUDE.md).

Code Reverse Engineering

Browser extensions expose source code. Protected with Terser + javascript-obfuscator multi-pass.

Implementation Phases

A chronological walkthrough of what was built and how

Phase 1
Foundation
Jan 21-22, 2026
  • Set up the full Manifest V3 extension architecture (popup, background service worker, content scripts)
  • Implemented extractors for ChatGPT, Gemini, and Grok using Strategy pattern with AbstractExtractor
  • Built complete CI/CD pipeline with GitHub Actions (5 parallel jobs: lint, typecheck, test, security, build)
  • Configured automated release pipeline with release-it, conventional commits, and SemVer
  • Published first version to Chrome Web Store on day one
  • Added Terser + javascript-obfuscator for code protection (3-pass minification)
Phase 2
Platform Expansion
Jan 22-23, 2026
  • Added Grok support with DeepSearch link expansion and HTML-to-Markdown conversion
  • Added Claude platform support with async content extraction
  • Strengthened type safety throughout codebase (strict TypeScript, no explicit any)
  • Improved error handling and recovery for unreliable DOM structures
Phase 3
Feature Enrichment
February 2026
  • Implemented Markdown link format with automatic page title fetching
  • Built split download system for conversations exceeding browser limits
  • Enhanced Perplexity extractor: grouped citations, generated docs, Python script extraction
  • UI improvements and bug fixes across all supported platforms
Phase 4
Advanced Features
March 2026
  • Claude Artifacts extraction with async content loading
  • ChatGPT Canvas/Textdoc extraction via clipboard API
  • Multi-tab batch export: select multiple tabs for simultaneous export with compare, merge, fact-check actions
  • Deep Research citations resolved as inline Markdown links (ChatGPT + Gemini)
  • Open-and-paste cross-referencing between different AI chatbots (council prompt pattern)
  • Hot-reload Vite plugin for faster development iteration
Release Velocity
Monthly Commit Activity

Actors & Interactions

The human and technical ecosystem around the project

As a solo project, AI Chat Export was developed entirely by Jose DA COSTA, who held all roles simultaneously: product owner, architect, developer, designer, DevOps engineer, and publisher. This required a disciplined approach to self-organization and decision-making.

Starting from March 2026, Claude Code (Claude Opus 4.6) was introduced as a pair-programming assistant to accelerate development of advanced features. The collaboration was structured and deliberate - Claude Code operated within strict documented guidelines (23K-word CLAUDE.md) and all architectural decisions remained with Jose DA COSTA.

Code Contribution Breakdown
Commit Types Distribution
Contribution Metrics
MetricJose DA COSTA (solo)+ Claude CodeTotal
Commits67 (79.8%)17 (20.2%)84
Lines Added47,281 (89.2%)5,732 (10.8%)53,013
Lines Deleted4,367 (56.5%)3,357 (43.5%)7,724
Total Lines Modified51,648 (85.0%)9,089 (15.0%)60,737

External Dependencies

The project interacted with several external services: Chrome Web Store (primary distribution), GitHub Actions (CI/CD), GitHub Releases (artifact hosting), Firefox Add-ons (AMO), Edge Add-ons, and Google Cloud Console (OAuth for Chrome Web Store API). Each store has its own review process, policies, and submission constraints that needed to be navigated carefully.

Results

Measurable outcomes for myself and the product

For the Product

Technical Scale

Releases

20

v1.0.0 to v1.13.1

Test Assertions

403

14 test files

Dependencies (prod)

9

Lean production bundle

Active Platforms

6

+ 2 planned

CI/CD Jobs

5 parallel

lint, type, test, security, build

Artifacts/Release

7

Chrome, Firefox, Edge, Brave, Opera

Extractor Complexity by Platform

For Me

This project significantly deepened expertise across several areas:

  • Browser Extension Architecture (Manifest V3) - mastered the full lifecycle: content scripts, background service workers, popup UI, Chrome Storage API, inter-process messaging, and cross-origin iframe handling
  • DOM Parsing at Scale - developed robust extraction strategies using CSS selectors, MutationObserver, React Fiber tree traversal, and async content loading patterns
  • Multi-Store Publishing - navigated the submission, review, and compliance processes of Chrome Web Store, Firefox AMO, and Edge Add-ons
  • Code Protection - implemented production-grade obfuscation pipeline combining Terser (3-pass) and javascript-obfuscator with string array shuffling
  • AI-Assisted Development - established a structured methodology for pair-programming with Claude Code, including 23K-word guidelines documentation that serves as both AI and human reference
  • Rapid Iteration - validated that investing in CI/CD from day one enables sustainable velocity (20 releases in 2 months without friction)

What Came After

The project beyond initial delivery

Immediate Aftermath

After the v1.13.1 release in March 2026, the extension was live on the Chrome Web Store and available for direct installation via GitHub Releases for Firefox, Edge, Brave, and Opera. The automated release pipeline ensured that every tagged version automatically built, packaged, and published to all supported channels.

Ongoing Maintenance

AI chatbot interfaces are inherently unstable targets. ChatGPT, Gemini, Claude, and others regularly update their DOM structure without notice. Each update potentially breaks the corresponding extractor. The modular architecture (one extractor per platform, inheriting from AbstractExtractor) was explicitly designed to minimize the blast radius of such changes - when Gemini changes its DOM, only the Gemini extractor needs updating.

Current State

The project is in active production on the Chrome Web Store and continues to be developed. Two additional platforms (Copilot, DeepSeek) are planned. The codebase remains under private license with full source code protection. The documentation infrastructure - including the 23K-word CLAUDE.md - serves as a blueprint for AI-assisted development workflows that has been reused across other projects.

Critical Reflection

Honest retrospective on decisions and lessons learned

What Worked Well
  • Exceptional velocity: 20 releases in 2 months with a functional product on the Chrome Web Store from day one. The immediate CI/CD investment paid off massively.
  • Modular architecture: the Strategy pattern with AbstractExtractor makes adding a new platform a matter of writing a single extractor class without touching existing code.
  • Code quality discipline: TypeScript strict mode, ESLint strictTypeChecked, conventional commits, 403 test assertions, zero TODO/FIXME in production code.
  • AI-first documentation: the 23K-word CLAUDE.md pioneered a documentation approach that simultaneously serves human developers and AI assistants.
  • Complete CI/CD pipeline: from commit to Chrome Web Store - fully automated. Store rejections documented and integrated into the process.
What Could Be Better
  • DOM fragility: extraction relies on parsing chatbot DOMs, which can change without notice. An automated monitoring system for structure changes would reduce reaction time.
  • Limited E2E coverage: ChatGPT's Cloudflare protection blocks automated browsers, making comprehensive end-to-end testing impossible for the most critical platform.
  • Single point of failure: despite 23K words of documentation, the project depends on a single developer for all decisions and maintenance.
  • Gemini extractor complexity: 4,821 lines across 12 files handling iframes, charts, Deep Research, and source carousels. This module would benefit from further decomposition.
  • Generic HTML-to-Markdown engine: rather than platform-specific extractors, a configurable HTML-to-Markdown converter adapted to chatbot contexts could reduce code duplication.

Lasting Lessons

  1. Automation pays from day one - setting up CI/CD, conventional commits, and automated releases immediately enabled 20 frictionless releases in 2 months.
  2. Documenting for AI is documenting for humans - the 23K-word Claude Code guidelines double as comprehensive architectural documentation.
  3. SaaS DOMs are unstable contracts - building a product on third-party DOM parsing requires modular design and rapid adaptation capability.
  4. IP protection requires deliberate effort - in the browser extension ecosystem, code is inherently exposed. Obfuscation, minification, and no source maps are necessary but imperfect defenses.

Architecture

Extension Architecture (Manifest V3)
Browser extension architecture: Popup, Background Service Worker, Content Scripts per platform, and shared Extractors
CI/CD & Release Pipeline
Development workflow through CI/CD to multi-store publication

Related journey

Professional experience linked to this achievement

Skills applied

Technical and soft skills applied

Image gallery

Project screenshots and visuals

Extension popup showing conversation export
One-click export from the browser extension popup
Browser extension exporting a conversation
Full conversation export to structured Markdown
Support for multiple AI platforms
8 AI chatbot platforms supported
Unsupported site detection
Automatic detection of unsupported websites
Markdown output preview
Clean, structured Markdown output
AI Chat Export promotional banner
Chrome Web Store promotional banner
AI Chat Export large promotional banner
Large promotional banner for store listing
Popup on unsupported site
Extension popup showing unsupported site message