Systems I built to keep content consistent at scale.

Three projects from running a B2B fintech content operation. Client name and proprietary configs removed; the approach and results are real.

Content operations dashboard

A monitoring system that gave a B2B fintech founder one place to see how their brand was landing.

1
source of truth

The problem

The founder published across Forbes, Entrepreneur and other outlets, but coverage, voice drift and publishing status lived in scattered tabs and someone's memory. Nothing was queryable.

What I built

  • A Next.js and Supabase dashboard tracking every published piece, outlet and status.
  • Scheduled jobs that refreshed the data on their own, with no human in the loop.
  • A voice-drift view that flagged off-brand copy before it shipped.

Outcome

Publishing went from tribal knowledge to a system the team could run without the founder in the loop.

Next.jsSupabaseVercel CronClaude Code

Five-brand content engine

Content automation that ran consistent voice across five brands with parallel review.

5
brands, one operator

The problem

Shipping on-voice content across five brands meant repeating the same review by hand for every piece. It was slow, and it broke the moment one person was out.

What I built

  • A switchable, multi-brand content pipeline with a separate voice config per brand.
  • A reviewer fan-out that ran every piece through multiple model passes at once.
  • A handover-ready workflow the team owns and runs themselves.

Outcome

One operator could ship for five brands without voice collapsing or review becoming the bottleneck.

Claude CodeNext.jsParallel review

14-reviewer content pipeline

Cut content review time by more than half with a three-line change. Same models, same quality, zero added cost.

92s → 41s
review time, same quality

The problem

Every piece ran through 14 reviewers: voice match, fact accuracy, SEO, AI-tell detection, brand consistency. The code ran them one after another, about 92 seconds a draft, with the whole team waiting.

What I built

  • Diagnosed the bottleneck as sequential wrapping code, not the models. The review calls are network waits and parallelize trivially.
  • Replaced the loop with a fan-out so all 14 reviewers run at once.
  • Folded in a publish-readiness gate: an 11-point rubric that catches off-voice lines, AI tells and shaky facts before publish.

Outcome

Review dropped from 92s to 41s with identical models, prompts and output quality, at zero extra cost.

PythonConcurrencyMulti-model review