Article Information

Category: Marketing

Published: June 14, 2026

Author: Chris de Gruijter

Reading Time: 13 min

Tags

Marketing AutomationAI ToolingAgentsMCPWorkflowProgrammatic MarketingCLI
Engineer operating a multi-monitor control room — visual metaphor for a programmatic marketing workstation

The Marketing Machine: How I Rebuilt My Workstation Into a Programmatic, AI-Augmented Arsenal

Published: June 14, 2026

I came up in marketing. Long before I shipped my first production Nuxt app, I was inside Google Ads dashboards at 1am, writing landing-page copy that had to convert tomorrow, sweating organic rankings for clients who had no patience for "it takes six months". That was the work. Marketing was the craft, code was the side quest.

The last two years, that flipped. I went deep — really deep — into coding, AI tooling and agentic engineering. I rebuilt a turborepo from scratch, shipped a multi-tenant SaaS, wired up Cloudflare Workers, learned Supabase RLS in my sleep. Marketing for clients didn't stop, but it stopped being the thing I was learning. Google Ads and SEO still ran, still got results, but they ran the way they always had — manually, monthly, by hand.

A few weeks ago that quietly inverted again. I picked up a new freelance marketing engagement, and for the first time it became obvious what to do with two years of accumulated AI tooling: aim it back at the discipline I started in. This post is the build log of what that arsenal looks like now, and why I think the marketer-engineer hybrid is the role I've been unconsciously training for the whole time.

The two-year hiatus

I want to be clear about what "hiatus" means here, because I didn't stop doing marketing. I kept running Google Ads accounts. I kept producing SEO content. I kept tuning landing pages. What stopped was the learning. Every spare cycle went into the engineering side — Turborepo, Cloudflare Workers, agentic SEO pipelines, MCP servers, Supabase migrations, Linux container hardening, the works. Marketing was on autopilot. Code was the frontier.

It was the right move at the time. I needed to understand how modern AI tooling actually composed — not from a vendor demo, but from the inside, with secrets management and CI and the whole boring middle. Two years of that buys you intuitions you cannot fake. You stop asking "can an agent do this?" and start asking "what shape would the agent need to be, and which workspace owns its credentials?"

But there's a quiet cost to a hiatus. You drift from the rhythms of the discipline you used to live in. I noticed myself describing campaigns in the past tense more often than the present. That was the signal that the next thing needed to be a return — not to the old way, but to marketing with everything I'd learned bolted on.

The turning point

A new freelance marketing engagement landed on my desk recently. I won't name them — the work is ongoing and the details are theirs to share, not mine — but it was unambiguously a marketing-first brief. Paid social, paid search, SEO, content, the full stack. Exactly the kind of work I used to do for a living, presented to a version of me who now had a chest of agentic tooling and no obvious excuse not to use it.

That was the unlock. I didn't set out to "AI-ify" the engagement. I just refused to do anything the slow way if there was a programmatic way that would survive scrutiny. Whenever I caught myself opening a UI to do a thing manually, I stopped and asked: is there a CLI for this? An MCP server? An agent I could write instead? Most of the time, the answer was yes — and the times the answer was no, I built the missing piece and moved on.

Six weeks in, the arsenal looks completely different to what it did at the start of the year. Let me walk through it.

What the arsenal actually contains

I think about the stack in layers — the harness, the platform CLIs, the agents, and the storage. Each layer is replaceable, but they compose into something I now genuinely call a marketing machine without flinching.

Layer 1 — The harness

Claude Code is the daily driver. Not for any single magic feature, but because the harness around it — agents, hooks, skills, MCP profiles — composes cleanly. I run roughly forty custom agents across global, agency, personal, paid-ads and content prefixes. Skills supply reusable domain knowledge (paid ads, SEO, CRO, security review, TDD, accessibility). Hooks enforce things I can't be trusted to remember at 11pm: prettier on save, TypeScript check after edits, an audit pass for stray console.log at session end, a confirmation gate before any git push.

The thing that took me longest to internalise: the harness is the marketing tool. Not the model. The model is a commodity; what makes the output trustworthy is the workflow scaffolding around it.

Layer 2 — Platform CLIs and APIs

Every paid and organic channel that I touch now has a programmatic entry point wired in:

  • Google Ads via AdLoop MCP — read-side queries for performance, search terms, audience splits and recommendations; write-side actions gated behind explicit confirmation. The Google Ads API is reachable when the MCP isn't enough.
  • Meta Ads via the official meta-ads CLI from pip — authenticated by environment variable, invoked as a subprocess by a dedicated agent. I will not touch third-party Meta MCP wrappers; the official CLI is the only safe option if you care about account standing.
  • GA4 through the same AdLoop layer — campaign-to-conversion attribution without bouncing between tabs.
  • SEO data from Ubersuggest and SeRanking — keyword research, SERP snapshots, backlink profiles, technical audits, rank tracking. SeRanking covers the AI-search visibility surface that classic tools miss.
  • Creative through the Higgsfield CLI — image and video generation, Marketing Studio for avatar-led UGC, virality prediction on finished clips. Outputs land in a brand-templated pipeline rather than in a Drive folder I forget about.
  • Web data via Firecrawl — for competitor scrapes, listing-page intelligence, and grabbing real source material before any creative generation runs.

The pattern is the same across all of them: the CLI is the interface humans don't see, the agent is the interface I do see, and the credentials live in a workspace-scoped secrets file that the agent inherits through its profile.

Layer 3 — Agents

Agents are prefixed by scope. global- agents are universal — code review, security review, deployment, git, system administration. ads- agents are cross-workspace paid-advertising specialists — six audit agents that run in parallel for full-account reviews, plus four creative agents covering strategy, copy, visual generation and format validation. content- agents orchestrate the cross-workspace content production pipeline — an orchestrator, a visual designer, a brand applier, a copywriter, a Figma extractor. Agency and personal work get their own prefixes so credentials and context never bleed.

The naming convention sounds like bureaucracy until you watch the alternative. Without prefixes, "the agent that does the SEO audit" is ambiguous across five clients, two personal projects and a freelance engagement. With prefixes, the right agent is obvious from the brief, and so is the credential set it should be using.

Layer 4 — Storage and deployment

Cloudflare Workers and Pages run the agentic SEO pipeline, client dashboards and analytics endpoints. Supabase handles persistent state — multi-tenant schemas, row-level security, scheduled jobs for SEO rank tracking and content batches. DigitalOcean droplets host the things that don't belong on edge runtimes — the WordPress install for a content automation experiment, a Streamlit reporting app, a couple of always-on workers. doctl on the host, SSH aliases inside, no surprises.

Isolation: the part nobody talks about

The single change that made all of this safe to run at the same time was workspace isolation. Every project on the machine belongs to exactly one workspace — agency, personal, paid-ads, content, or freelance. Credentials live in workspace-specific secrets files. MCP servers run in workspace-specific profiles, swapped with a single shell alias before a session starts.

The freelance workspace is the strictest. Its secrets file is never sourced in the global shell, never merged into anything else, never referenced from another workspace's wrapper scripts. The Meta Ads token for that client cannot accidentally leak into an agency session because the agency profile doesn't know it exists. Agency MCP profiles cannot accidentally hit the freelance Meta account because the credentials simply aren't in scope. This sounds paranoid until you remember that one cross-contamination event with an ads platform is enough to lose an account.

Personal projects get the same treatment. My own SaaS work has its own secrets directory, its own Supabase instances, its own agent prefixes. The cross-workspace agents (ads-, content-) are deliberately credential-free — they pick up whatever the active profile gives them, so the same agent can audit a paid account in agency mode this morning and a freelance account this afternoon without code changes.

Dual-device sanity

I work across two machines — a PC and a laptop. The PC is canonical; the laptop is a mirror. Everything that defines the harness — agent definitions, skills, global instructions, MCP config templates — lives in a git repo that's synced via symlinks into both machines. If the laptop is missing a config, the answer is always git pull, never "create a local substitute". I learned that the hard way after a weekend of debugging an "intermittent" issue that turned out to be two divergent CLAUDE.md files on two machines.

Secrets stay machine-local — they are not in the synced repo, and the symlinks point at a separate Secrets directory that each machine maintains. This is the only part of the setup that requires real discipline. Everything else, the git workflow enforces.

What this changes about being a marketer

I used to think the marketer-engineer hybrid was a buzzword — a way to charge more for being mediocre at two things instead of great at one. I don't think that anymore. The hybrid only works if both halves are real, but when they are, the output ratio is genuinely different. A few examples from the last six weeks:

  • Audit cadence collapses. A full-platform paid audit that used to be a half-day of clicking is now a parallel run of six specialist agents over a coffee. The output is more thorough than the manual version because the checks are encoded as a skill, not held in my head.
  • Reporting moves to the client's timezone. Streamlit and HTML dashboards regenerate on a cron schedule, deployed to a droplet, linked in the next morning's standup. No "I'll send it Friday" anymore.
  • Creative cycles compress. Brief → concept → visual → copy → format validation runs end-to-end with the ads- agents. The creative director job becomes editorial, not production.
  • Content batches are repeatable. Monthly social calendars produced by the content powerhouse, brand-templated automatically, captions written per platform. The bottleneck shifts from "can we ship it" to "do we approve it".
  • SEO becomes a system, not a chore. An agentic pipeline picks topics from gap analysis, drafts briefs, generates posts, optimises on-page, queues internal links and pings IndexNow. I review, edit, ship.

None of this replaces marketing judgement. It replaces the parts of the job that were never about judgement — the clicking, the copying between tabs, the once-a-month spreadsheet exports, the manual brand application. What's left is the thinking, the writing, the campaign-level decisions that actually move numbers.

Where it's going next

A few things I'm circling on for the next quarter:

  • Closing the loop end-to-end. Right now performance data, creative generation and content production are each well-instrumented, but the loop from "this ad fatigued" to "ship a replacement" is still partially manual. I want the audit agent to hand-off directly to the creative pipeline, gated by a human approval step.
  • More expensive models in the right places. Opus-tier reasoning for campaign concepts and audit synthesis; Haiku-tier for everything routine. The economics of agentic work only make sense when you stop using one model for everything.
  • Figma as canonical brand source. Where clients hand me a Figma file, that file becomes the source of truth for palette and type, extracted into the brand contract automatically. No more "what hex was the secondary again" in week three.
  • Documenting the playbook. Most of this is in my head and in scattered config docs. The next milestone is a real internal playbook — partly for me on the laptop at 6am, partly so I can hand pieces of the workflow to a future collaborator without a four-hour onboarding call.

Closing thought

Two years of coding looked, from the outside, like I was drifting away from marketing. From the inside it always felt like assembling the tools for a job that didn't exist yet. The new engagement was the excuse to put them all to work in the same room. The arsenal isn't finished — these systems are never finished — but it's real, it's mine, and it's the most fun I've had doing marketing work in a decade.

If you're a marketer eyeing the AI side of things and worrying you'll lose your craft to the engineering rabbit hole: you won't. You'll come back with better instruments. If you're an engineer eyeing marketing and wondering whether the discipline is being replaced: it isn't. It's being upgraded, and the people upgrading it will be the ones who took both halves seriously.

Frequently Asked Questions

What does "programmatic marketing workstation" actually mean in practice?

It means every channel I touch — paid search, paid social, SEO, content, analytics — has a CLI, API or MCP server wired into a custom agent, with credentials scoped to a workspace. Instead of opening five vendor UIs, I describe the task in natural language to the right agent, and it composes the underlying tools to do it. The UI becomes the fallback, not the default.

Why do you separate workspaces so strictly?

Two reasons. First, security: one leaked token from a paid-ads platform can lose an entire ad account, and the cleanest way to prevent leaks is to never load a credential outside the session that needs it. Second, mental model: cross-contamination of context between clients is its own kind of bug, and prefixed agents plus profile-scoped MCP servers make the right tool obvious for the task at hand.

Did you stop doing marketing during your "coding hiatus"?

No. Client Google Ads and SEO work ran the whole time — but it ran manually, the way I had always run it. The hiatus was from learning new marketing techniques. Every spare hour went into AI tooling, agentic systems, infrastructure and developer experience. Returning to marketing-first work with that toolbox is what this post is really about.

Why prefer official platform CLIs over third-party MCP wrappers?

For Meta in particular, the official meta-ads CLI is the only auth method I'll touch — third-party wrappers risk account penalisation and have no upside. For Google Ads, AdLoop is a well-maintained MCP that respects the Ads API surface. The rule is: prefer the vendor's own tool, then a battle-tested open-source MCP, then nothing. Never a sketchy SaaS in the middle.

Do you use AI to write campaign copy and creative?

Yes, but always inside a pipeline I control — never raw output. Copy goes through a brief, a draft, an editorial review, and a platform-compliance pass. Visuals go through brand templating and integrity checks (no AI faces for healthcare clients, no fake testimonials, no client-policy violations). The agents do the typing; I do the deciding.

What hardware and OS does all this run on?

A Linux PC as the canonical machine and a ThinkPad as the mirror. Everything is reproducible via git and symlinks; secrets are machine-local. The OS choice matters less than the workflow scaffolding, but Linux makes the secrets-isolation story considerably simpler than macOS or Windows would.

Is this overkill for a single freelance engagement?

It would be, if the same arsenal didn't also serve agency clients, personal projects and content production. Workspace isolation is the feature that lets a single setup serve all of them at once without leaking. The marginal cost of bringing a new engagement into the system is low; the marginal value of having every channel programmatic is high.