Building a One-Person Company

The full series on building ChatShuttle — from the first frustration to shipping a product used across ChatGPT, Claude, and Gemini.

Engineering Tactics

Real build logs, debug stories, and reusable frameworks from shipping a Chrome extension with an AI agent.

7

Engineering Tactics · Part 7

How to Export Your ChatGPT Conversations Without Losing Images or Context

ChatGPT's native export gives you a raw JSON dump. Here's how to export full conversation threads with images intact and restore them in Claude or Gemini — no server, no account, everything in your browser.

Feb 24, 2026
6

Engineering Tactics · Part 6

Startup Copywriting Is Engineering: How "Losing My Workflow" Outperformed Every Other Headline

Why I treat copy like code: test one variable at a time, measure results, roll back what doesn't work. How a specific pain statement outperformed vague feature descriptions for a Chrome extension.

Feb 24, 2026
5

Engineering Tactics · Part 5

When grep Can't Find It But the Reviewer Can: Debugging Chrome Extension Build Artifacts

How to trace strings that appear in your Chrome extension's build output but not in your source code. A practical guide to reverse-engineering your own dependency tree.

Feb 24, 2026
4

Engineering Tactics · Part 4

Chrome Extension Permission Audit: Why an Unused Permission Cost Me a Week

My Chrome extension declared a permission it didn't use. The reviewer flagged it, and removing it triggered a cascade of other bugs. How I built a permission audit checklist for every release.

Feb 24, 2026
3

Engineering Tactics · Part 3

AI Wrote Invalid JSON and Thought It Fixed a Bug It Didn't — How I Guard Against It

My AI coding agent silently broke manifest.json while fixing a Chrome Web Store rejection. How I built a three-gate verification system to catch config-layer failures before they ship.

Feb 23, 2026
2

Engineering Tactics · Part 2

Chrome Web Store Rejected My Extension for "Remote Code" — Here's What Triggered It

My Chrome extension was rejected for remotely hosted code I couldn't find in my source. How I traced a ghost URL in the build artifacts, localized the dependency, and passed review.

Feb 23, 2026
1

Engineering Tactics · Part 1

How to Pair Program with an AI Agent: Commands, Checkpoints, and Rollbacks

A real build log showing how I pair program with an AI coding agent. Minimum-viable changes, checkpoint verification, and when to roll back — lessons from shipping a Chrome extension solo.

Feb 23, 2026

ChatShuttle Series

The main story: from the first pain point to architecture, product, pricing, and launch.

8

Building an AI Memory Layer: How ChatShuttle Connects Web AI Chats to OpenClaw / Claude Code / Cursor

An open-source AI memory layer that makes your ChatGPT, Claude, and Gemini conversations searchable from code agents. Local-first, MCP-compatible, built with transformers.js and voy-search.

Feb 18, 2026
7

Why Is Snapshot a Pro Feature?

How to capture a live AI conversation from ChatGPT or Claude with one click. DOM extraction, image handling, and why exporting chat history from web AI requires ongoing engineering.

Feb 10, 2026
6

Why I Didn't Choose Subscription (For My First One-Person Product)

Chrome extension pricing for indie hackers: why I chose a one-time $8.99 purchase over subscription. Cost structure, feature gating, and the freemium decision for a local-first product.

Feb 7, 2026
5

What Did I Find When I Stopped Pretending to Be the Expert?

Building local vector search for AI chat history in the browser with transformers.js and voy. No cloud API, no server — semantic search running entirely in a Chrome extension.

Feb 6, 2026
4

Why I Chose PDF (And Why I Hated the Idea)

How to restore AI conversations across ChatGPT, Claude, and Gemini: why Context PDF with embedded images was the most reliable format for transferring chat history between models.

Feb 5, 2026
3

Is "Scratching Your Own Itch" a Trap for One-Person Companies?

How I defined two user groups for a thread-portable AI chat manager and figured out what the product actually needed to do. A one-person company product definition story.

Feb 4, 2026
2

Why I Refused to Run a Server?

The local-first architecture behind ChatShuttle: Browser captures, Google Drive stores, your machine reads. No server, no cloud database, no subscription. Your AI chat data stays yours.

Feb 3, 2026
1

Why Did I Get Sick of "AI Shuffle"?

I lost months of AI chat history every time I switched between ChatGPT, Claude, and Gemini. Context limits, broken threads, vanishing images — how that pain became ChatShuttle.

Feb 3, 2026