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.
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.