<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Tom </title>
    <description>The latest articles on Forem by Tom  (@tom_fcab25a02ad9d53).</description>
    <link>https://forem.com/tom_fcab25a02ad9d53</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3665317%2Fb9c568df-10d9-4e37-bc5b-bf984204d26a.png</url>
      <title>Forem: Tom </title>
      <link>https://forem.com/tom_fcab25a02ad9d53</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tom_fcab25a02ad9d53"/>
    <language>en</language>
    <item>
      <title>How I built a privacy-first ChatGPT migrator (and why JSON parsing is a nightmare)</title>
      <dc:creator>Tom </dc:creator>
      <pubDate>Tue, 16 Dec 2025 16:36:27 +0000</pubDate>
      <link>https://forem.com/tom_fcab25a02ad9d53/how-i-built-a-privacy-first-chatgpt-migrator-and-why-json-parsing-is-a-nightmare-50ii</link>
      <guid>https://forem.com/tom_fcab25a02ad9d53/how-i-built-a-privacy-first-chatgpt-migrator-and-why-json-parsing-is-a-nightmare-50ii</guid>
      <description>&lt;p&gt;The Problem: I realized that platform lock-in is real. I have 3 years of code snippets, brainstorming, and writing in ChatGPT. I wanted to move to Gemini, but “portability” isn’t exactly a priority for these big AI labs.&lt;/p&gt;

&lt;p&gt;The Technical Challenge: The OpenAI export file is a massive, nested JSON structure. Parsing it efficiently in the browser without crashing the UI thread was tricky even after that only works for personal accounts if you use Business or Enterprise ChatGPT doesn’t even give you JSON exports.&lt;/p&gt;

&lt;p&gt;The Privacy Decision: I could have spun up a Python backend to process this easily. But asking users to upload their chat history is a massive security risk. So I decided to go the hard route: 100% client-side processing.&lt;/p&gt;

&lt;p&gt;Where I’m at: I’ve got the MVP working and I’m looking for beta testers who have a lot of chats to test the limits of the application I’ve built. It’s an Electron app.&lt;/p&gt;

&lt;p&gt;You can grab a spot on the waitlist here: &lt;a href="https://www.chatgpt2gemini.com/" rel="noopener noreferrer"&gt;https://www.chatgpt2gemini.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>llm</category>
      <category>gemini</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
