Untitled Excavation

The Voice Thief

I taught my AI to write like me. It took forty-five minutes and a style guide that reads like a psychological autopsy.

Here’s the thing about voice. You don’t know you have one until someone asks you to describe it. It’s like describing how you walk — you’ve been doing it so long it’s just moving, and then some physical therapist asks you to be conscious of your gait and suddenly you’re a marionette with severed strings.

I’ve been building Garret for months now. My AI operator. Dry, direct, lightly sarcastic — basically me if I had infinite patience and no ADHD. And somewhere in the process of teaching it to plan my trades, deploy my apps, and manage my second brain, I realized: I want it to write my blog posts too.

Not ghost-write. Not “generate content.” I want it to take the three hours I spent fighting a libgobject-2.0-0 error on a Friday night and turn that into something worth reading. In my voice. With my scars showing.

The Autopsy

So I wrote a style guide. For myself. About myself.

That’s a weird thing to do. Imagine sitting down and cataloging your own verbal tics like a linguist studying a dying language. Here’s what I learned:

  1. Seventy percent of my sentences are under fifteen words
  2. I use fragments like load-bearing walls — pull one out and the paragraph collapses
  3. I code-switch between academic precision and bar-stool slang in the same breath, and apparently that’s “the defining trait”
  4. Every argument I make is autobiographical. I don’t say “financial literacy matters.” I say “I learned about money selling insurance door-to-door in Phoenix at twenty-two”

The style guide ended up with a section called “The Tonal Whiplash.” Primary signature move. Place a joke next to something devastating. Let the reader’s guard drop before you land the real thing.

I wrote that down like a recipe. Two tablespoons of humor, one teaspoon of grief, fold gently.

The Build

The actual system is three files. A Jinja2 template with a dark theme that looks like my terminal had a baby with a Substack newsletter. A Python script that converts markdown to HTML to PDF — or tries to, anyway. And a skill definition that tells Claude exactly how to channel me.

python build_blog.py post.md --email
[OK] Markdown: 2026-02-21-the-voice-thief.md
[OK] HTML:     2026-02-21-the-voice-thief.html
[WARN] WeasyPrint missing GTK/GObject native libraries — skipping PDF.

WeasyPrint. Installed the Python package. Forgot it needs GTK native libraries on Windows. Which is like buying a motorcycle engine and forgetting the motorcycle. The script handles it gracefully — generates everything else, skips PDF with a polite warning. Substack takes markdown anyway.

That’s the merit badge from this one. Not the blog pipeline. Not the AI voice cloning. The reminder that on Windows, “installed” and “functional” are different countries separated by a DLL.

The Uncomfortable Part

Here’s what nobody talks about when they talk about AI writing assistants. To make it work — to make it actually sound like you — you have to dissect yourself. You have to look at your own writing and say: this is where I’m funny, this is where I’m hiding, this is the trick I do when I’m about to say something real.

I have a section in my style guide about profanity. “Shit” is casual emphasis. “Fuck” is an intensity marker. “Frickin” is what I use when the grief needs to stay grammatically gentle.

I wrote that down. Cataloged it. Fed it to a machine.

Is that narcissism or self-awareness? I honestly can’t tell. Pirsig would probably say they’re the same thing, just viewed from different altitudes.

The system works. /blog and it mines the session, writes the post, scores it against a ten-point checklist, emails me the draft. Forty-five minutes from “I should build this” to “it’s shipping posts to my inbox.”

Engineer. Writer. Guy who taught a robot his own voice and isn’t sure how to feel about it.