The systems behind the build log

Every system on this page runs in my own businesses, most of them every day. I built each one because something was eating my week. Here’s what each one does, what it runs on, and the number that tells me it works.

Friday, my chief of staff

Friday is the agent that keeps the rest of it running. It reads my meeting transcripts, pulls out who promised what, and carries every commitment forward week over week until it’s done. Every to-do has to trace back to a quote from the meeting, or it doesn’t make my list.

It writes me a brief every Monday at 6:30 a.m. and a shorter one Tuesday through Friday. Every project I’m running sends its “I need Chris’s go” to Friday, and Friday brings them to me in one batch. Overnight it builds one scoped task in a sandbox copy of the code, and nothing merges until it passes review.

It started out able to approve blog posts but not publish them. It earned publishing on my own sites later.

Built on: Claude Code, with scheduled jobs running on my own Mac.

The number: I replayed 157 real meeting commitments through its ledger before I trusted it. Without the fix, 8 of them would have quietly disappeared. 2,104 tests at its last big merge.

Read about it: Build log, Aug 31–Sept 6: my AI made up a to-do item · Build log, Sept 7–13: 375 tests passed and the code was still wrong · Build log, Sept 14–20: my AI approves blog posts, but it can’t hit publish · Build log, Oct 1–8: an AI video editor that runs on my own machine

The AI marketing department

This is the system that plans, writes, checks and publishes weekly content and client reports for my agency and my own businesses. Each client’s version is trained on their brand, their tone, their ideal customer and the owner’s voice. Services and hours are the easy part.

Every week it picks the topics, writes the blog and the social posts, builds the graphics, runs every piece past a QA agent, and hands a person whatever needs one. Nothing ships without passing QA and an approval step. It also audits and manages Google Ads campaigns, builds monthly reports that classify every call from its transcript, checks which pages Google is indexing, and tells me the morning a site’s queue runs dry.

Built on: A Claude Code plugin (skills, agents and scripts) that publishes to WordPress and GoHighLevel, with Canva for graphics. It runs on Codex too.

The number: One operator working with it now covers two of our six production seats. It shipped 13 releases in 7 days in mid-October, with all 3,282 tests passing.

Read about it: Build log, Oct 1–8: an AI video editor that runs on my own machine

Lead verification

Marketing reports count leads from CRM tags, and tags drift. Spam calls, vendors and existing customers end up counted as leads, and the report says you got more than you did.

This system reads every new contact’s calls and messages and sorts each one: a real lead, spam, a vendor, an existing customer, or nothing to go on. Then it proposes the tag fixes, and nothing gets written until the proposal is reviewed and approved. A tag a person put on by hand always wins. Before it touches a new account, it has to prove a tag change won’t set off an automation a customer would see.

Built on: Part of the marketing department plugin, writing to GoHighLevel.

The number: First month: 495 of 495 tag changes applied with 0 errors, and 12 of 12 random hand-checks right.

Read about it: Build log, Sept 21–27: teaching my AI which leads were real

My executive assistant

My assistant agent handles my inbox and calendar. It triages mail in the background, skips a bad message instead of failing the whole batch, and reports honest counts: moved, skipped, failed, left. It never says “done” when it isn’t.

It can draft an email, but it can’t send one until I give it the exact go-ahead. Every night it audits its own work and sends the findings to Friday.

Built on: A runtime I built from scratch on Railway (Node.js, Postgres and a Telegram interface).

The number: 2,446 tests passing after its October inbox rebuild.

The AI sales rep

When a lead comes in, the sales rep answers it the moment it lands, works the conversation by text and books the appointment on the calendar. It once booked one at 6 a.m., before anyone on my team was up.

It follows hard rules. It can’t invent a referral, a name or a phone number, and it won’t reach out to bulk-imported contacts until they reach out first. Like the assistant, it audits itself every night and reports to Friday.

Built on: The same Railway runtime as the assistant, connected to GoHighLevel.

The voice receptionist

I didn’t build this one, and I won’t pretend I did. Our receptionist is GoHighLevel’s Voice AI, configured for each client by my team.

What I built is the check on it. Every week a review reads the answered calls and flags frustrated callers, missed bookings and wrong information, so a bad call gets fixed before it turns into a pattern.

Built on: GoHighLevel Voice AI, plus a weekly health check in the marketing department plugin.

The local AI video editor

It takes a raw podcast recording and hands back a finished episode: the long-form cut, four short clips, captions, episode metadata, a QA report and a thumbnail. No editing app, no cloud service. The recordings never leave my computer.

Its QA gates catch black frames, frozen video, caption drift and graphics carrying the wrong brand. A person still picks the titles and listens to the final cut, and every correction I make becomes a permanent QA rule.

Built on: Open-source tools running on my own machine: Whisper for transcription, FFmpeg for the edit and headless Chrome for the graphics.

The number: Three full episodes shipped in its first two days, behind 253 tests.

Read about it: Build log, Oct 1–8: an AI video editor that runs on my own machine

The hard stop

A small check runs before every command an agent tries. It blocks the actions you can’t walk back: sending a message to a person, moving money and permanently deleting something. If the check itself breaks, it blocks.

When it stops something, I give a one-time pass, never a standing permission. That’s what lets my agents work without asking “are you sure?” forty times a day.

Built on: A Claude Code hook.

The number: Shipped with 34 tests, and it fails closed.

Read about it: Build log, Sept 28–Oct 4: I gave my AI a hard stop

Team memory

An AI session forgets everything when it closes. This plugin gives each project a memory: what’s live, what’s in flight, what’s next, and a handoff note at the end of every session, so the next session, or the next person, picks up where the last one stopped.

My team runs it on their own projects too.

Built on: A Claude Code plugin.

Team skills

My team ran a lot of its daily work through saved ChatGPT prompts. I rebuilt them as 12 Claude skills, so the same jobs run with our standards built in instead of living in somebody’s chat history.

It’s built and packaged.

Built on: A Claude Code plugin.

WishSumo

WishSumo is my family wishlist app. Make a list, share it, and people claim gifts without the owner seeing who bought what.

This fall it got a weekly newsletter I approve before every send, ten gift guides with an “Add to my list” button on every pick, a full redesign and the server side of an iPhone app.

Built on: PHP and MySQL, built with Claude Code.

The number: 421 tests.

Read about it: wishsumo.com

Need help building something like this?

Everything I write about here runs in my own business first. If the AI job landed on your plate, start with an assessment: where AI will make or save you the most money, and what it’d take to run it right.