Seven Brands, One Engine: What I Mean When I Say 'AI Marketing Operations'
A few weeks ago I caught myself typing "AI consultant" into a form field for the third time that month, and I deleted it for the third time.
The phrase isn't wrong, exactly. I do consult. I do work on AI. But it points at the wrong job. Three years ago "AI consultant" meant something specific — somebody who would help you figure out where AI fits in your business at all. That job still exists, and we run it out of Practical Works with my co-founder Alan. But that's not what I do most days now.
Most days, I run engines.
Specifically, I run an AI content engine that publishes for seven brands. This site is one of them. The other six are my partners' brands and a handful of clients we operate the engine for. Same stack, seven voices, seven publishing schedules. It's the thing that ships my work whether or not I sit down at my laptop, and the thing I'd want to be hired to build for somebody else.
So I deleted "AI consultant" and started saying what I actually do: AI marketing operations. Here's what that means in practice.
The Engine, Concretely
When I say "content engine," I don't mean ChatGPT and a Notion template. I mean a real pipeline with seven stages, each of which has to work on its own and on a schedule:
- Keyword research — DataForSEO pulls SERP and volume data for each brand's niche. Niche-aware: a local-service brand gets geo-modified terms, an expertise brand gets bottom-of-funnel buyer intent, a content brand gets long-tail informational.
- Editorial calendar — A Mastra workflow takes the keyword cluster, dedupes against the brand's existing content (via a pgVector RAG of everything that's been published), and writes a draft calendar for the next four weeks.
- Drafting — A multi-agent pipeline (research agent → outliner → drafter → editor → fact-checker) writes the post. Inference is per-brand: this site runs on Vertex AI, one of the trade brands runs on Anthropic, the local-service brands run mostly on GPT-4o. Cost-per-post sits somewhere between $0.40 and $1.20 depending on length and how many retrieval passes the research agent burns.
- Voice files — Each brand has a frozen voice spec (sample posts, tone rules, "things this brand would never say"). Every draft is gated through it. If the draft scores below threshold against the voice file, it goes back to the drafter agent with the diff.
- Internal linking — Before publishing, a pass through the pgVector RAG to surface related published posts and inject the right number of internal links. This single step is the difference between "an AI blog" and "a blog that compounds."
- Publishing — Ghost for the brands on Ghost, WordPress for the brands on WordPress. The engine pushes drafts up; a human approves before it goes live.
- Distribution — Late handles the social side. Each post fans out into a TikTok script, an Instagram carousel concept, a LinkedIn rewrite, an X thread. Same source, four formats, scheduled across the week.
The whole thing runs on GCP. Mastra is the orchestrator. n8n handles the boring glue around the edges (webhooks, Slack notifications, the occasional "ping me when the keyword research finishes" job).
Total stack-cost across seven brands: roughly $180/month in inference plus $129/month for DataForSEO PAYG plus the GCP runtime. The engine writes maybe 90 long-form posts a month at the current cadence. Per-post all-in, it's cheaper than coffee with a freelancer.
What Took Me Six Months to Figure Out
I want to be honest about the parts that didn't work, because they're the parts you can't skip.
The voice problem is the only problem that matters. Everything else — the keyword research, the scheduling, the multi-agent fan-out — is solved. None of that is hard anymore. The thing that's hard is making seven different brands sound like seven different humans instead of one slightly-different-flavored LLM.
I spent the first three months trying to solve voice with prompts. Better prompts, longer prompts, examples in the prompt, examples after the prompt. It worked about 60% of the time. The remaining 40% sounded like every other AI-generated blog post on the internet — generically helpful, structurally identical, the same three-bullet conclusion every time.
The fix wasn't a better prompt. The fix was a separate voice-grading agent that scores every draft against a frozen voice file before it ships. The voice file isn't a prompt — it's a small dataset: 8–12 sample posts from the brand, a list of words and phrases the brand would and wouldn't use, a list of common AI tells to flag ("delve," "tapestry," "moreover," "it's important to note"). The grading agent reads the draft and the file, emits a score and a diff, and the drafter agent rewrites. Two passes, three sometimes, and the post comes out the other side sounding like a person.
This is the only part of the pipeline that I genuinely think I'd struggle to teach someone in a weekend. The rest is engineering.
Internal linking is the second-most-important thing nobody talks about. A blog with no internal links is a pile of pages. A blog with good internal links is a graph that pulls SEO weight from itself. We had three brands stalled at "publishing two posts a week and ranking nowhere" until we wired up the pgVector internal-linking pass, and the rankings moved within six weeks. Same posts. Better graph.
Don't automate the human-approval step until you have at least 40 posts of trust. I tried to skip the review-and-approve step early on, on the theory that the engine was good enough. It was — until the week one of the brands published a post that misnamed a competitor and another that accidentally claimed expertise the brand doesn't have. Both were technically defensible. Both were embarrassing. Now everything publishes through a human eye, and the engine's job is to make that eye spend two minutes per post instead of two hours.
So Why Not Just Call This "Content Marketing"?
Because the word operations is doing work.
A content marketer writes content. A content-marketing agency writes content faster. An AI content engine operator runs a pipeline that writes content while they sleep, surfaces problems before they ship, instruments cost-per-post, and runs the whole apparatus on a budget that doesn't scale with output.
That's a different job. It's closer to running a small factory than it is to writing blog posts. The skills are pipeline design, observability, RAG retrieval quality, prompt engineering as a means rather than an end, and the very unglamorous discipline of writing down what "good" looks like so an LLM can chase it.
It's also a job I think most small teams should be hiring for, and almost none of them know to ask for. They're hiring content marketers and getting one post a week. Or they're hiring AI consultants and getting a deck. The thing they actually need is a content engine someone else runs, that ships on a schedule, that they can review and steer without operating.
That's the job I do here.
What This Site Is For
So here's the lane, stated plainly:
- Want to figure out where AI fits in your business at all? That's an AI assessment — go to Practical Works.
- Want a fractional CTO or AI for the trades? That's Alan's site.
- Need short-term rental cohosting? That's Breezy Keys.
- Want a content engine that ships on autopilot? That's the job here.
The other lanes are sibling brands. Same operators (mostly Alan and me), separate sites because the buyers are different and I'd rather a brand do one thing well than four things mediocrely.
If you have something to say and no time to ship it — that's the conversation. Book a chat. The first call is thirty minutes and there's no deck.
The engine is running while we talk.