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.
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, 2026Engineering 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, 2026Engineering 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, 2026Engineering 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, 2026Engineering 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, 2026Engineering 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, 2026Engineering 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, 2026ChatShuttle Series
The main story: from the first pain point to architecture, product, pricing, and launch.
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, 2026Why 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, 2026Why 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, 2026What 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, 2026Why 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, 2026Is "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, 2026Why 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, 2026Why 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