Behavioral health (LegitScript-aware)/Retainer · content + social + GBP

A four-brand behavioral health network.

Southern California · regulated vertical

01 / THE PROBLEM

The in-house marketing team was eliminated. Four treatment-center brands were left needing constant blog content, social posting, and Google Business Profile work — in a compliance-heavy industry where sloppy language is a real liability.

Hiring back a team wasn't on the table. The work still had to ship every week.

02 / THE SYSTEM
Schematic of the two engines — blog and social — feeding four healthcare site cards through a single QA 90+ gate, with one rejected item held in a tray and an M/W/F, T/Th cadence timeline.
Blog engine

Monday / Wednesday / Friday, per-brand posts are drafted, scored against brand and compliance rules, rendered with branded imagery, and auto-published — then promoted to social on a schedule.

Social engine

Tuesday / Thursday, the poster generator produces brand-exact renders and schedules them across platforms. Image-diversity rules stop the feed from looking repetitive.

Review queue · redacted

✓ brand-01 · post-1187 · QA 94 · scheduled 06:30
✓ brand-02 · post-1188 · QA 91 · scheduled 06:30
✓ brand-03 · social-4412 · QA 93 · scheduled 15:30
⧗ brand-04 · post-1189 · QA 78 · held — below threshold

Illustrative of the live queue · client identifiers withheld

03 / THE GUARDRAILS

The system refuses to publish bad work. That's the whole point.

Fail-closed QA: work that doesn't score above threshold is blocked, not published.
No-repeat topic logs so the network never re-runs the same angle.
Image-diversity rules across every brand's feed.
Compliance-safe language checks for a regulated vertical.
04 / THE NUMBERS

3 + 8

blogs + social posts per week, per brand

4

brands on one engine

90+

QA-pass threshold on every asset

0

known gate failures shipped to live

From the client's side, the system runs itself — that's the value.

05 / SYSTEM FACTS

Not a strategy deck. This is what's actually in the repos and the automation layer.

111

Next.js app routes across the portfolio

484

blog files across four branded sites

491

automation files behind publishing & QA

90+

QA threshold before anything publishes

Captured from live repos + automation folder · Jul 1 2026

06 / SEARCH CONSOLE

1.18K clicks and 51K impressions in the available 2026 window.

Google Search Console for one anonymized healthcare property recorded 1.18K clicks, 51K impressions, and nearly 1,000 visible query rows from January 20 through June 29, 2026. A non-brand content topic became one of the property's top search drivers.

Client property, anonymized. We keep the specific traffic figures for the direct conversation.

  • Non-brand content topics among the top organic drivers
  • Hundreds of query rows visible, not a handful of brand terms
  • Google Search Console · Jan 20–Jun 29, 2026
07 / CALL TRACKING

Tracked to the call, not just the click.

For the same network we built the intake attribution layer: calls tracked by source, campaign, answered status, speed to answer, qualified tagging, and missed-inbound visibility — so marketing work is reviewed against real call behavior, not just pageviews.

This is a system we build and operate. Specific client call volumes stay in the private conversation — never on a marketing page.

  • Call source & campaign attribution
  • Answered status & speed to answer
  • Qualified-call tagging
  • Missed-inbound visibility
  • Location-level call routing
  • Talk-time patterns
08 / RESULTS

The network has published without interruption since launch — output consistency was the first win, and the thing hiring a team could never guarantee.

Organic visibility is content-led, not just brand: a non-brand topic sits among one property's top search drivers. We keep the specific figures for the direct conversation.

This page is marked for quarterly updates as the four-site data compounds.

Marked for quarterly updates as traffic matures

Want this running for your business?

Start with the sprint
See the one-week sprint