Generative AI · Paid media · Automation

I build the gen AI workflows, then keep them good.

I have run a generative AI production line for three brands in a real marketing team. Weekly production time went from 40 hours to 8 and output tripled. The quality held because a person had to approve every asset before it could reach a live channel.

40→8hweekly production time across three brands
output at the same headcount
return on ad spend on YouTube for Koinly
2ad platforms driven through their APIs

The shape of the work

How an asset gets made, checked, and published

Generative AI asset workflow: brief to draft to asset to human review to live channel, with rejected work looping back PRODUCTION Briefformat, angle, pillar Copy draftLLM, house rules Creativeimage from template QUALITY GATE Review queueA PERSON DECIDES Changes requestedwritten feedback LIVE ScheduledAPI, id recorded Performance databack into the brief
The only route to a live channel runs through a person. Rejected work carries written feedback back to the draft step, and performance data feeds the next brief.

What I do

Build the production line

Briefs in, drafts out, images built from templates at a fixed size, everything landing in one queue. Running for three brands at once, which is what forced it to be a system rather than a set of habits.

Put a gate in the middle

The publishing job reads an approval flag that only a person can set. If nothing is approved, it does nothing. That one constraint is why the output stayed publishable after month three.

Automate across platforms

Ad campaigns built and staged through platform APIs rather than by hand, performance pulled back on a schedule, and CRM records repaired every fifteen minutes so the reporting underneath stays true.

Keep the assets findable

Every piece carries its format, pillar, planned date, approval state, and published ID. That is what lets you ask which pillar has gone quiet, or how many days of queue are left.

Prompting and QA

Knowing when the output is off, and why.

Most bad AI marketing copy fails in the same few ways, and once you can name them you can write a rule that catches them. I keep an explicit list and check every draft against it: em dashes, the rule of three, hedging, meta-commentary about the piece itself, sentences with no subject, fake-profound closing lines, and claims nobody could defend.

That list is not a style preference. It is a QA checklist, and it works better than asking a model to "write naturally", because each item is something you can point at in a draft.

  • Ask for structured output where you can, so the failure is a parse error rather than a plausible mistake.
  • Give the model the format and the constraints up front, not the whole job at once.
  • Iterate on the rule, not the individual output. If you are fixing the same thing by hand twice, it belongs in the prompt.
  • Keep a fallback for every model call, so a failed request degrades the result rather than stopping the run.
  • Judge the workflow on performance data, not on whether the sample looked good.

I have also shipped a classifier that was tested before it went live, against six months of past leads where the answer was already known. It blocked about one in five and let every real buyer through. That is the standard I hold AI decisions to when they touch money.

Tools

What I actually use

AreaToolsWhat I have shipped with them
LLM workClaude, Claude Code, the Anthropic and Bedrock APIsDaily driver. Copy production, a written weekly report summary with a fallback, intent classification, and my own custom skills and MCP integrations.
AutomationPython, scheduled jobs, Rust for toolsScripts that publish, repair CRM data, pull ad performance, and build reports. Every one logs and shows its own health.
Paid mediaGoogle Ads, YouTube, the OpenAI Ads APIStructured testing, campaigns staged through APIs, and lead quality followed through to closed revenue. YouTube acquisition at a five times return for Koinly.
CreativeImage generation, templated post assets, scripted videoAd creative and social assets produced to a fixed template so brand and copy cannot drift apart.
DataHubSpot, Airtable, Search Console, GA4All through their APIs, not exports. If it cannot run again tomorrow without me, it is not finished.
Straight answer on paid social: Meta yes, TikTok no. I buy and test creative in Meta Ads Manager on my own funnel, and I built the Conversions API integration behind it. TikTok Ads I have not used, and I would rather say that now than in the interview.

Evidence

Built, shipped, and still running

AI content production line

40 hours to 8 across three brands, with the approval gate that kept the quality up.

Read the case study

Server-side conversion tracking

Meta Conversions API with pixel deduplication on my own funnel, and closed deals pushed from HubSpot back to Google Ads.

Read the case study

Paid search testing

Campaigns split by intent, one variable per test, every lead followed through to whether it was real.

Read the case study

Lead qualification gate

A classifier backtested against six months of known outcomes before it touched a live form.

Read the case study

Weekly reporting system

Eight channels, a model-written summary, a fallback when it fails, and a deck that builds itself.

Read the case study

Growth cockpit

A dashboard over five systems that hands its context straight to an AI coding session.

Read the case study

Outbound signal engine

Client build. Drafted outreach from live buying signals, with a person approving every message.

Read the case study

Attribution repair

The CRM plumbing that makes any of the performance numbers worth reading.

Read the case study

How I work

I would rather ship five versions this week than one next month.

Every system above got built that way: a small thing that ran on Monday, then improved each week because it was already in use.

The one thing I will not compromise on is that anything running unattended reports its own health. The failure mode of automated marketing is not a crash. It is a job that quietly stopped in March and a number that has been wrong ever since.

Confidentiality

What I withhold.

The case studies describe methods and structures. Employer figures are rounded or given as change rather than absolute values. Account identifiers, campaign names, post copy, and anything about a named contact or deal are left out.

That includes screenshots. I will not show you another company's ad account or CRM, which is the reason the diagrams here are drawn rather than captured. I will walk through any of it in detail in a conversation, at the level of method.