While working on NateHaskins.com, I started paying more attention to where AI usage is genuinely valuable and where I’m asking a model to perform mechanical work my own computer could do just as well.

Where the credits were going

Video and audio processing made the tradeoff easy to see. ChatGPT Work can take a video, extract the audio, transcribe it, process the transcript, and turn the result into content. That convenience is great for a one-off task.

It makes less sense when I want to process dozens of old tutorials, interviews, and recordings. Paying a model repeatedly to extract audio or convert files starts to feel wasteful because those steps are predictable. They do not require much judgment; they require a reusable tool.

01 Video
02 Audio
03 Transcript
04 Structured files

The split that makes sense

Cursor can help me write scripts around ffmpeg, local transcription models, image tools, and the filesystem. Once the scripts exist, I can run them again without spending model credits on every deterministic step.

ChatGPT remains useful for the smaller result that comes out the other side. I can hand it a clean transcript and ask it to find the strongest ideas, select useful quotes, create chapter markers, frame the material for my Developer Relations portfolio, or turn it into a finished article and LinkedIn post.

For quick, intelligent changes, the Work interface is hard to beat: changing copy, adding a post, revising the About page, trying a layout, working through an idea, or turning rough material into something publishable.

Cursor and local tools make more sense for batch processing, refactoring, image optimization, file conversion, content migrations, and work that touches a large collection of files. The important distinction is that the AI does not need to perform the job forever. It can help me create a capability that stays on my machine.

Git becomes the shared source of truth

This is also making me reconsider where the production site should live. I’m leaning toward Cloudflare for production, with Git as the primary source of truth and R2 holding the large assets.

  1. ChatGPT Work can make quick editorial and site changes, then commit them to the same project.
  2. Cursor and local utilities can perform deeper engineering work and batch processing against that project.
  3. Git records the site and deploys the production build to Cloudflare.
  4. R2 stores audio, video, images, downloads, and other large assets that do not belong in the repository.

Both ChatGPT and Cursor would work on the same project, but neither one would own it. The website is the repository, the content, and the assets. The AI tools are interfaces for working with those things.

A local ingestion command

Eventually, I could reduce the media pipeline to a command such as nate ingest interview.mp4. That command could extract and normalize the audio, run a local transcription model, generate timestamps, read the metadata, create a thumbnail, and put the results into a predictable content folder.

The output might include transcript.md, transcript.json, metadata.json, chapters.json, quotes.json, thumbnail.jpg, and audio.mp3. Structured text can go into Git. Large media can move to R2.

Then I can open ChatGPT Work and say, “Look at the new interview draft and turn it into a finished article for NateHaskins.com.” At that point the model is doing what I actually want a language model to do: understand, organize, edit, write, and make judgments. My local machine already handled the grunt work.

Moving ChatGPT up the stack

I do not see this as moving away from ChatGPT. I see it as moving ChatGPT up the stack—from media processor, filesystem, CMS, and hosting platform toward creative partner, editor, strategist, and reasoning layer.

Cursor and local tools handle repeatable engineering work. Git manages the project. Cloudflare serves the site. R2 stores the heavy assets. ChatGPT helps me decide what all of it should become.

That feels like a more sustainable way to maintain a personal site as the archive grows: spend model usage where judgment matters, keep deterministic work local, and make sure the project remains portable no matter which interface I use next.

Published August 30, 2026 Back to NateHaskins.com