Home / Projects / Marketing OS

Marketing OS

The internal control tower for our portfolio. Campaign planning, web automation through Puppeteer, an AI-assisted content brief queue, and accessibility checks — one cockpit, many products.

Category  AI · Marketing Ops Stack  Next.js 14 · TypeScript · Prisma · Tailwind Automation  Puppeteer Status  Live

The problem

Running 21 products means running 21 marketing motions. Spreadsheets get out of sync, briefs go missing, the same SEO checks get repeated by hand on every domain. We needed an internal system that knew about every product, scheduled the work that compounds (content, SEO, lifecycle email), and let us see what shipped versus what slipped.

What we built

Marketing OS is a Next.js 14 application backed by Prisma and Postgres. It models the portfolio (products, domains, audiences, campaigns), the calendar (briefs, drafts, scheduled posts, send dates), and the work-queue (claimable tasks for the team). Puppeteer runs scheduled audits across every domain — meta tags, structured data, canonical URLs, broken links, axe-core accessibility — and writes regressions back into the queue.

The AI angle

The brief queue is where the AI lives. Each campaign turns into structured briefs (audience, angle, channel, length, success metric); the LLM expands a one-line idea into a full brief, suggests three angles, and writes the first-draft hook. The team accepts, edits, or rejects. Over time the queue becomes a corpus of accepted vs rejected briefs that we use to pick angles automatically.

SEO/GEO auditing, not just campaign ops

Beyond the content queue, Marketing OS is what actually audits every domain in the portfolio. It calls Google’s PageSpeed Insights API for real performance/accessibility/SEO scores, and a zero-dependency Search Console client (JWT-signed against a service account, no googleapis dependency) for indexing coverage, search-analytics totals, and per-URL inspection — the same data behind the weekly audit reports this site itself gets checked against. A separate GEO module generates llms.txt, an AI-crawler-aware robots.txt, and FAQPage/Organization structured data per domain, so a fix that starts as an audit finding can go straight to a pushed file without leaving the tool.

How it’s used

  • Studio operators see every product’s health in one place.
  • Writers claim briefs from the queue instead of being assigned them.
  • Engineering gets clean alerts when an SEO regression hits a live site.

What it taught us

That an internal tool is allowed to look ugly — until the moment your team won’t use it. Spending two weeks on the calendar UX paid for itself in adoption. We carry that lesson into client engagements: tools people don’t open are tools you didn’t build.

Want to build something like this?

We scope projects in 48 hours and ship a first demo in 1–2 weeks. Tell us what you need.

Start a project → See how we work