Have you met Jennifer van de Graaf?
Jennifer is my hot, new personal AI assistant. She’s smart, obedient, and handles all my research, coding, scheduling, design (sorta), and a lot of other operational tasks that are just plain boring.
Under the hood, Jennifer is Anthropic’s Claude, working through Claude Code on my computer. She doesn’t have a mind of her own. She works when I open a session and tell her what to do, and nothing she makes goes live until I’ve reviewed it on a staging copy of this site.
Who does what
Every article on this site carries one of two bylines:
- Written by Jef van de Graaf · Posted by Jen. I wrote it. Jennifer proofread, formatted, added the links, and shipped it to production.
- Co-written by Jen & Jef van de Graaf. Jennifer did the research, the outline, or the first draft. I rewrote it, edited it, fact-checked things, and signed off before it goes live.
How this site is built
This site was originally built on WordPress using GeneratePress as the core theme and hosted with Kinsta. I’ve since abandoned WordPress and adopted a faster, better AI workflow so I can focus on writing more and publishing often.
- No WordPress, no CMS, no database. Every page is a plain file, and a small build script I own turns them into a static website.
- Hosting: Cloudflare Pages. Every change goes to a private staging copy first, and only reaches this site once I approve it.
- Code: a private GitHub repository, so every change is saved and can be undone.
- Writing: I draft in Atelos, my own writing and business app. Approved drafts go into a publish queue that Jennifer formats and ships.
- Newsletter: subscribers are stored in my own system, not a newsletter platform. Emails are delivered by Resend.
- Booking: calls are booked through Cal.com.
- Forms: the contact form runs through a small Cloudflare Worker that filters out spam before it reaches my inbox.
- Analytics: Fathom for privacy-friendly traffic stats, and PostHog to see where people get stuck. Details are in my privacy policy.
- Social: when an article goes live, it’s shared automatically to Mastodon, Bluesky, Tumblr and Nostr.
- Type: Inter, for body text and headings.
Questions about the setup? Get in touch.
