01Executive Recommendation
Recommended architecture: Master-of-record lives in the existing Content Engine (WS2) asset registry on AWS S3 under SGA's existing AWS BAA — not in SharePoint, not in a new DAM. Public delivery splits by content class: Cloudflare Stream for de-identified marketing content (doctor bios, B-roll, service explainers, culture, sponsorship), and Vimeo Enterprise with a signed BAA SKU for the narrow set of patient-featured testimonial video where identifiable patients or procedure details are present.
YouTube collapses to a single SGA brand channel plus optional regional SGA channels — no per-practice channels in year one. GBP video (30-sec vertical cutdown) becomes the tier-1 local-SEO surface, refreshed quarterly on all ~248 profiles, produced as a mandatory deliverable of every video project and propagated through Yext for the entities we already manage there.
- Treat master-of-record and delivery/host as two separate jobs — do not choose one platform for both.
- Wire release/authorization expiration into a Temporal workflow that auto-unpublishes across every destination.
- Fund a 0.4–0.6 FTE fractional Video Ops Lead (contractor) as the single owner for intake, taxonomy, compliance sign-off, and access-review orchestration.
- Stand up Google Cloud Identity Free or Google Workspace as the identity plane for YouTube brand accounts, federated to Entra ID for SSO.
- Require human-reviewed VTT captions on every patient-facing video as a hard publish gate.
- Ship 9:16 vertical cutdowns (Reels, TikTok, GBP) as a first-class deliverable, not an afterthought.
- Do not use SharePoint as the DAM. SharePoint has no anonymous public embed, ~300K OneDrive sync ceiling, and per-GB storage cost ~40× S3 — it is a working-copy mirror at most.
- Do not use Wistia. Its 2026 pricing (Business $79 / Business+Lead Gen $329 / Enterprise contact-sales) rewards small libraries and punishes DSO scale; its BAA posture is unresolved; it duplicates capabilities WS2 already has.
- Do not host any patient-featured video on YouTube or Cloudflare Stream. YouTube is expressly excluded from Google's BAA; Cloudflare Stream is not listed in Cloudflare's Enterprise BAA scope.
- Do not spin up per-practice YouTube channels below a hard threshold (see §4). At 250-scale the ops tax breaks the AI-first / no-new-FTE posture.
- Do not treat SGA as a consumer brand. There is no SGA-corporate YouTube channel worth building.
- Current M365 SKU (E3 vs E5) — determines audit-log retention (180 days vs 1 year) and Purview DLP/sensitivity label availability. Owner: Ron (CIO).
- Written Cloudflare confirmation that Stream is (or is not) in the executed Enterprise BAA scope. Owner: IT + Cloudflare Enterprise sales.
- Written Vimeo Enterprise quote with BAA SKU line item and 3-year price-cap terms. Owner: Finance + Studio.
- Inventory of existing YouTube channels for the 75 practices with video today — Brand Account vs Channel Permissions, Workspace vs personal Gmail owner. Owner: Studio + IT.
- Legal template set: (1) HIPAA marketing authorization per 45 CFR 164.508, (2) patient model release, (3) doctor/employee release (perpetual, survives termination), (4) pediatric guardian authorization + minor assent. Owner: General Counsel.
02Architecture Diagram
Master library and publishing destinations are physically separated. The Content Engine (WS2) is the metadata + release plane; storage is a physical layer under it; each publishing destination is a downstream provider adapter mirroring the same Canva/Zernio stub pattern already in the codebase.
┌────────────────────────────────────────────────┐
│ CAPTURE (Intune-enrolled devices only) │
│ Studio cameras | Growth Manager PWA capture │
└───────────────────────┬────────────────────────┘
│ raw upload
▼
┌───────────────────────────────────────────────────────────────────────────────────────────┐
│ MASTER LIBRARY (system of record, BAA-covered) │
│ │
│ AWS S3 (originals) ── under existing AWS BAA ── keyed by asset_id │
│ ▲ │
│ │ presigned URLs │
│ │ │
│ Content Engine (WS2) asset-registry ── Postgres (RDS) │
│ • assets, brands, consent_registry, distribution_posts, audit_log │
│ • Sharp/FFmpeg processing → thumbnails, ABR renditions, WebVTT captions │
│ • Editorial queue → Brand Review → Compliance Approver → Publish │
│ │
│ SharePoint MIRROR (read-only, working-copy) │
│ • Syncs from S3 by scheduled job — Growth Manager desktop browse only │
│ • Never system of record. Never public embed source. │
└──────────────────┬──────────────────────────────┬─────────────────────────────────────────┘
│ metadata + releases │ authenticated API calls
▼ ▼
┌──────────────────────────────────────┐ ┌───────────────────────────────────────────────┐
│ METADATA & RELEASES (WS2 tables) │ │ PROVIDER ADAPTERS (WS2, mirrors Canva/ │
│ • authorization (164.508 HIPAA) │ │ Zernio stub pattern) │
│ • model_release / staff_release │ │ StreamProvider | VimeoProvider | │
│ • guardian_authorization + assent │ │ YouTubeProvider | YextProvider | GBP │
│ • release_expiration → Temporal │ └──────────────┬────────────────────────────────┘
│ • state_of_recording (state rules) │ │
│ • brand_valid_through (rebrand) │ │
│ • contains_identified_patient flag │ │
│ • paid_media_permission per network │ │
│ • language / caption human-reviewed │ │
│ • biometric_state_flag (BIPA/CUBI) │ │
└──────────────────────────────────────┘ ▼
┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│ PUBLISHING DESTINATIONS │
│ │
│ ┌──────────────────────────────┐ ┌────────────────────────────┐ ┌─────────────────┐ │
│ │ Practice websites │ │ YouTube (single SGA │ │ Social via │ │
│ │ • Cloudflare Stream │ │ brand channel) │ │ Zernio (WS2) │ │
│ │ (de-identified only) │ │ • no per-practice ch │ │ • 9:16 Reels/ │ │
│ │ • Vimeo Enterprise + BAA │ │ • per-location playlists │ │ TikTok │ │
│ │ (patient testimonials) │ │ • unlisted testimonials │ │ cutdowns │ │
│ │ • Direct MP4 from R2 │ │ ONLY if 164.508 auth │ └─────────────────┘ │
│ │ (hero autoplay, LCP) │ │ names YouTube │ │
│ │ • VideoObject schema.org │ └────────────────────────────┘ ┌─────────────────┐ │
│ └──────────────────────────────┘ │ Paid media │ │
│ ┌──────────────────────────────┐ ┌────────────────────────────┐ │ Google Ads / │ │
│ │ GBP video (tier 1 local-SEO)│ │ Yext (SGA entities) │ │ Meta / TikTok │ │
│ │ 30s / ≤75MB / ≤1080p / 9:16 │ │ • pushes to GBP where │ │ • separate │ │
│ │ Quarterly refresh, 248 GBPs │ │ enabled │ │ paid-media │ │
│ └──────────────────────────────┘ └────────────────────────────┘ │ consent │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────────────────┘
▲
│ release expiration | revocation | rebrand | doctor departure
│ fires Temporal workflow → auto-unpublish fan-out
│ → audit_log immutable record → notify Compliance
│
┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│ PERMISSIONS PLANE │
│ • Entra ID = identity of record for humans │
│ • Google Cloud Identity/Workspace = identity plane for YouTube brand accounts │
│ • SSO from Entra ID → Google → YouTube via SAML │
│ • FIDO2 hardware keys required for Primary Owners; Advanced Protection Program enrolled │
│ • Break-glass Workspace account in physical safe │
│ │
│ ANALYTICS PLANE │
│ • GA4 (per-practice site) → BigQuery export → Power BI │
│ • YouTube Analytics API per-channel OAuth cron → Power BI │
│ • Cloudflare Stream GraphQL API → Power BI │
│ • Aggregated at brand / region / service-line — NOT per-video CPA (statistical floor) │
│ │
│ RELEASES/COMPLIANCE PLANE │
│ • WS2 consent_registry = system of record for signed PDFs + expiration + revocation │
│ • Temporal workflow = enforcement │
│ • Unified Audit Log (M365) + AWS CloudTrail + Cloudflare audit logs = investigation trail │
└─────────────────────────────────────────────────────────────────────────────────────────────┘
03Options Scorecard
Scores are 1–5 (higher is better) with citation anchors. Verified = pulled from current official docs during review. Assumption = review-team inference. Final row = recommended role in the architecture.
| Criterion | SharePoint | Vimeo Enterprise (+BAA) | Wistia | YouTube (Brand Accts) | Cloudflare Stream |
|---|---|---|---|---|---|
| Central management | 3 BAA + Entra SSO/DLP; no video-specific workflows | 4 SAML SSO, SCIM v2, native audit log | 2 SSO on Premium+; no SCIM | 2 Channel Permissions works; per-channel governance scales linearly | 3 Dashboard SSO; viewer control is signed URLs, not identity |
| Website experience | 1 No anonymous public embed for external sites | 4 Mature player; LCP acceptable with tuning | 5 Mature, chapters, transcripts, WCAG audited | 3 Free, ubiquitous; recommendation carousel steals attention | 3 iframe LCP cost vs direct MP4; direct-MP4 path available |
| Marketing analytics | 1 No GA4 integration | 3 GA4 via GTM/Player API — custom work | 5 Native GA4, Turnstile lead capture, HubSpot native; not GHL-native | 3 GA4 works; Analytics Groups cap 500 | 2 GraphQL API only; no packaged GA4 integration |
| Local SEO / discovery | 1 No public URL | 4 schema.org VideoObject support | 5 Auto VideoObject schema | 4 YouTube search + GBP video; channel ownership not a documented Maps ranking factor | 3 schema.org supported; must be authored per-site |
| Permissions / identity | 4 Entra + Purview + DLP (if E5) | 4 SAML + SCIM v2 + audit log | 2 SSO Premium+ only; no SCIM to deprovision | 3 Primary Owner single-point-of-failure risk | 2 Signed URL tokens only; 24h max; no per-viewer identity |
| Compliance (HIPAA / WCAG) | 4 M365 BAA covers SharePoint | 5 Enterprise + BAA SKU + HIPAA config guide | 1 No productized BAA; no HIPAA advertising | 1 YouTube expressly excluded from Google BAA | 2 BAA available for CDN/WAF only; Stream not enumerated |
| Accessibility (WCAG 2.1 AA) | 3 Auto-captions; no third-party audit | 4 Mature captions, chapters | 5 Deque-audited to WCAG 2.1 AA | 3 Auto-captions; human review needed on clinical terms | 3 AI WebVTT GA; WebVTT-only upload |
| Scalability (3-yr, 250 practices) | 2 OneDrive sync soft-limit ~300K files per user; storage $1/GB over base | 3 2 TB/mo bandwidth cap on self-serve → forced Enterprise sales | 2 Business 250 GB / 1 TB / 3 users; cost climbs opposite of traffic curve | 4 Unlimited, free; practical channel ceiling ~50-100 per Google acct | 5 Usage-priced $5/1K min stored + $1/1K min delivered; no cap |
| Implementation effort (small team) | 2 Purview/DLP/mirror job = real work | 3 Enterprise sales + BAA + HIPAA config | 3 Business fastest; Enterprise slower; GHL bridge custom | 3 Workspace + phone-verify pool + provisioning | 2 Adapter + signed URL + custom analytics ETL |
| Estimated cost (3-yr, network-scale) | 3 License-baked; storage creep ~$40-70K net-new | 2 ~$25K/yr benchmark; ~$75K over 3 yrs | 2 $30-70K over 3 yrs | 5 Free platform; Workspace $840-1,344/yr | 5 ~$27-35K over 3 yrs at modeled volumes |
| Recommended role | Working-copy MIRROR + docs. Not master, not embed source. | Patient-testimonial embed host (BAA-scoped). Long-form doctor content. | REJECT. No path in the recommended architecture. | Single SGA brand channel — downstream mirror, never master. | Default embed host for de-identified marketing video across all 250 sites. |
04YouTube Decision Framework
Default posture: no dedicated practice channel. Video ships to the SGA brand channel with practice branding baked into the video itself. All thresholds are gates that must be sustained, not one-time hurdles.
Criteria: Everything not clearing Tier 1 gates below.
Where the video goes: Uploaded to the SGA brand channel under a per-location playlist using naming convention SGA — {Practice Name}, {City ST}. Practice-branded intro/outro and lower-third title cards produced by Studio.
Discovery surface: GBP video attachment (tier-1 local SEO surface), practice website embed via Cloudflare Stream, Zernio-distributed social.
Criteria: Practice has ≥1 published video AND signed doctor/practice release on file.
Owner: Studio + assigned Growth Manager reviews annually.
Criteria (all must be sustained across 4 consecutive quarters):
- ≥3 practices in the region publishing video
- ≥24 videos/year across the region (~2/month)
- Named Growth Manager owner for the region
- Growth Readiness Stage 3+ for at least half the region's practices
Where the video goes: Regional SGA channel (e.g., "SGA Dental — Georgia") — inherits Workspace-based Primary Owner + hardware-key MFA + Advanced Protection Program.
Cap: No more than 5 regional channels in year 1.
Criteria (all must be met AND sustained for 4 consecutive quarters BEFORE the channel is provisioned):
- ≥12 videos/year published cadence already demonstrated on the brand-channel playlist
- Named Studio content owner AND named local content champion at the practice
- Growth Manager owner accountable for quarterly access review
- Practice is NOT rebrand-in-flight (Belfast, Ways Station, Liberty, Main St, ILP are ineligible until stable ≥12 months post-rebrand)
- Doctor/practice releases on file cover paid-media AND channel-scope explicitly
- Local search volume for practice-branded queries ≥100/mo (GSC + SEMrush verified)
Sunset rule: If cadence drops below 6 videos/year for 2 consecutive quarters, channel is deleted (videos migrated back to brand-channel playlist). Signed in the initial provisioning MOU.
Cap: No more than 5 dedicated practice channels network-wide in year 1.
Override rule
The only case that overrides Tiers 0–3 is a provider-personal-brand doctor whose contract with SGA explicitly reserves them a personal channel for continuing-education content. That channel is NOT an SGA asset, owned by the doctor's Workspace identity, and any patient-facing content on it triggers the 164.508 authorization workflow the same as any SGA channel. Not more than 3 exceptions network-wide.
Explicitly excluded
- No individual practice channel for 1–2 videos. Ever.
- No Google-account-per-office model. All channels attached to a corporate Google Workspace or Cloud Identity Free tenant.
- No parallel consumer channels for legacy sub-brands. Single SGA brand channel is the only corporate presence on YouTube.
05Risk Register
| # | Risk | P | Impact | Mitigation | Owner |
|---|---|---|---|---|---|
| 1 | Patient testimonial published without valid 164.508 marketing authorization → OCR enforcement (Complete P.T., Cadia precedent) | M | Critical | Build authorization workflow BEFORE pilot; publish endpoint refuses release without green authorization row; Compliance Approver role in editorial pipeline | General Counsel + WS2 owner |
| 2 | Release expiration lapses silently; content stays live across YouTube/website/GBP/social — continuing unauthorized disclosure | H | Critical | Temporal workflow with 90/30/7-day pre-expiration alerts → auto-unpublish across all destinations; drill quarterly | Video Ops Lead + Compliance |
| 3 | ADA Title III / state-law plaintiff-bar demand letter on uncaptioned patient-facing video; industry settlements $4-15K per practice | H | H | Human-reviewed WebVTT captions as hard publish gate for any patient-facing video; auto-captions are draft only | Studio + Video Ops Lead |
| 4 | Cloudflare Stream used for patient testimonials without BAA scope confirmation; Stream not enumerated in current CF BAA | M | Critical | contains_identified_patient flag enforced at ingest; StreamProvider adapter refuses upload when true; formal Cloudflare BAA scope confirmation before any Phase B ingest | Ron (CIO) + IT |
| 5 | Doctor/staff right-of-publicity claim after departure; ex-doctor opens competing practice while their face runs in SGA paid ads | M | H | Perpetual, irrevocable, worldwide, all-media, sublicensable staff release at hire; survives termination; refreshed at anniversary; Legal owns template | General Counsel + HR |
| 6 | YouTube channel hijack via session-cookie theft (info-stealer malware); MFA does not block stolen sessions; 2025 industry losses ≥$16M | M | H | FIDO2 hardware keys + Advanced Protection Program on Primary Owner accounts; endpoint hardening on Studio machines; break-glass account in physical safe | IT Security |
| 7 | SharePoint-as-DAM adopted despite documented gaps; library rots inside 6-12 months; team reverts to folder chaos | H | M | Kill "evaluate SharePoint as DAM" step; SharePoint is READ-ONLY mirror only; system-of-record is WS2 + S3 | sga-architect + Amy |
| 8 | Vimeo Enterprise vendor continuity — Bending Spoons acquisition + reported engineering layoffs | M | M | 3-year contract with capped price escalation (≤5%/yr) + bandwidth allowance; Cloudflare Stream + S3+CloudFront documented BATNA; keep master in S3 so migration = re-encode + re-embed only | Finance + Video Ops Lead |
| 9 | Rebrand-driven asset decay (Belfast, Ways Station, Liberty, Main St, ILP in flight); shot assets become "wrong" at rebrand | H | M | brand_valid_through metadata field; Temporal watcher on crosswalk rebrand event → "rebrand review" queue; auto-unpublish if not re-approved in 30 days | Video Ops Lead |
| 10 | Growth Manager saturation — GMs already run 60-80 practices each; adding per-practice video governance breaks AI-first / no-new-FTE posture | H | M | GMs approve pre-shipped Studio drafts only; do NOT tag or curate; fractional Video Ops Lead absorbs intake/taxonomy/compliance/access-review | Studio Director |
| 11 | Personal Gmail owns legacy practice YouTube channels for some of the 75 practices with video; recovery on ex-office-manager departure is effectively impossible | H | H | Discovery inventory before pilot (Yext + GBP + web scrape); prioritize migration of personal-Gmail-owned channels in wave 1; document each transfer | IT Security + Studio |
| 12 | Analytics rollup fails silently — YouTube Analytics Groups cap 500 items; GA4 Enhanced Measurement misses non-YouTube players; GHL first-touch attribution can't stitch cross-session | H | M | Per-practice-site QA checklist (schema, ?enablejsapi=1, GA4 dim usage, Consent Mode v2); Power BI semantic layer with canonical play definition; report at brand/region/service-line only | BI + Video Ops Lead |
| 13 | 9:16 vertical short-form (Reels, TikTok) missing from taxonomy; 16:9 masters ship and network is structurally unable to serve highest-margin cosmetic acquisition audience | H | H | Mandatory 9:16 deliverable in every video project (30s GBP cut + 60s Reels/TikTok cut); Zernio distribution adapter routes accordingly | Studio + Marketing |
| 14 | State biometric privacy (BIPA in IL, CUBI in TX, HB 1493 in WA) — statutory damages $1K-$5K per violation independent of HIPAA | M | H | biometric_state_flag metadata; publish endpoint enforces BIPA-compliant on-asset consent language for IL practices; CCPA/CPRA deletion request runbook | General Counsel + Video Ops Lead |
| 15 | Audit-log retention shortfall (E3 = 180 days) fails HIPAA due-diligence at OCR audit or breach investigation | M | H | Confirm M365 SKU now; if E3, price Purview Audit Premium OR forward Unified Audit Log to long-term storage/SIEM | IT + Ron (CIO) |
| 16 | Incidental capture — B-roll of operatory captures other patients' faces, monitor PHI, front-desk audio | H | M | Studio B-roll clearance checklist; sight-line audit before recording; blur/remove pipeline in Sharp/FFmpeg processing; verified checkbox in editorial | Studio |
| 17 | Aggregator/directory pull (Zocdoc, Healthgrades, Vitals, Yelp, WebMD Care) mirrors YouTube video without SGA authorization | M | M | Aggregator-crawl audit step in revocation runbook; unlist (not delete) YouTube on takedown to preserve embed URL for aggregator-scrape unwind; contact directory 3rd-party takedown emails | Video Ops Lead + Compliance |
| 18 | Content ID / DMCA strikes from ambient music, décor, competitor signage; scales linearly with channel count | M | M | Central music/library license (YouTube Audio Library-only rule); pre-publish checklist in Content Engine editorial; quarterly channel-health audit | Studio |
| 19 | Multi-language content (Spanish especially in TX, CA, FL) missing from plan; separate deliverables and legal-review surface | M | M | language metadata field; Spanish caption human-review path added to publish gate; separate legal review for Spanish releases | Video Ops Lead + Legal |
| 20 | Paid media rejection cascade — Meta/Google health-category ad review rejects testimonials without disclaimers → quality score damage across 44 Google Ads accounts | H | M | Pre-flight compliance check on every testimonial ad: authorization enumerates paid media, on-asset disclaimer, no outcome claims tied to named individual, no health-condition targeting | Paid media lead + Video Ops Lead |
06Governance Model
RACI convention: Responsible · Accountable (exactly one) · Consulted · Informed.
| Function | Growth / Mktg | Studio | Web | IT / Sec | Legal | Video Ops Lead (contractor) | GM | Office | Agency |
|---|---|---|---|---|---|---|---|---|---|
| Video program strategy | A | R | C | C | C | R | I | I | — |
| Video capture (Intune device) | I | R | — | C | I | C | R (PWA) | R (Champion only) | R (contracted) |
| Ingest to WS2 master | I | C | — | I | — | A/R | I | — | I |
| Taxonomy + metadata tagging | I | C | — | — | I | A/R | — | — | — |
| Release/authorization intake | C | C | — | — | A | R | C (facilitates) | I | — |
| Human-reviewed captions | I | R | — | — | C | A | I | — | R (drafts only) |
| Editorial review | I | A/R | — | — | C | C | I | — | — |
| Brand review | R | R | — | — | — | C | I | — | — |
| Compliance sign-off (patient-featured) | I | I | — | I | A | R | — | — | — |
| Publish to website (Stream or Vimeo) | I | C | R | I | I | A/R | I | — | — |
| Publish to YouTube brand channel | I | C | — | I | I | A/R | I | — | — |
| Publish to Zernio social | I | C | — | — | I | A/R | I | — | — |
| Publish to Yext / GBP video | I | — | — | — | I | A/R | C | — | — |
| Paid media boost decision | A | I | — | I | C | R (verifies consent) | I | — | R |
| YouTube brand-account provisioning | I | I | — | A/R | C | C | — | — | — |
| Quarterly access review | I | C | — | A (identity + SIEM diff) | C | R (runs review) | I (delta only) | — | I |
| Release expiration monitoring | I | I | — | — | A (policy) | R (Temporal watches) | I (delta only) | — | — |
| Rebrand-triggered asset review | I | R | C | C | I | A/R | C | — | — |
| Doctor/practice departure takedown | I | R | R | R | A | R (runs fan-out) | I | — | — |
| Break-glass Workspace custody | — | — | — | A/R | I | — | — | — | — |
| Aggregator revocation | I | I | — | — | C | A/R | I | — | — |
| Analytics rollup (brand / region / service-line) | A | C | — | — | — | R | I | — | — |
What the Growth Manager will and will not do
This is deliberate. GMs are already at 60–80 practices each. AI-first posture requires the fractional Video Ops Lead + WS2 tooling to absorb the load, not push it downhill.
GM will
- Approve or reject a Studio-produced draft for their practice (single yes/no, target <15 min/practice/month).
- Facilitate the patient signing the authorization at the practice (in-person, Studio-issued device).
- Escalate a practice-specific concern to Video Ops Lead.
- Receive
Inotifications when expiration, revocation, rebrand, or takedown affects their practice.
GM will NOT
- Own YouTube channel access or credentials.
- Tag or curate metadata.
- Run any takedown or unpublish action.
- Sign off on compliance for patient-featured content.
- Manage vendors (Vimeo, Cloudflare, YouTube).
- Run captions review.
07Pilot Plan
Pilot locations (5 practices, deliberately mixed)
| # | Practice | Brand | Rationale |
|---|---|---|---|
| 1 | SmileGulfCoast (SGC) | SGA | Existing Growth Readiness pilot; briefing template originated here (v1.3 canonical); GM relationship established |
| 2 | PCCD Los Altos | SGA | Peninsula CA — activates California BIPA/CPRA test case; multi-doctor practice for provider-release stress test |
| 3 | Liberty Family Dental (ex-SPH) | SGA | Rebrand-in-flight — tests brand_valid_through metadata + rebrand-triggered asset review; GBP claim pending edge case |
| 4 | Main Street Family Dental (ex-PALMCDSCDD Lexington) | SGA | Second rebrand-in-flight — validates rebrand handling doesn't collapse if two rebrands land in the same quarter; different state |
| 5 | Coosa Dental Associates | SGA | Georgia rural-footprint practice; existing Growth Readiness briefing on the hub; small single-location stress-tests the "no dedicated channel" default and validates the Yext push path |
Belfast is deliberately excluded — crosswalk-blocked per current project record; not a stable enough substrate for a 90-day pilot.
Asset types (each pilot practice ships ≥1 of each)
- Doctor bio (60-90s, non-PHI) — de-identified, staff release only
- Service explainer (60-120s, non-PHI) — general procedure walk-through, no patient
- Practice tour / B-roll (30-60s, non-PHI) — incidental-capture cleared
- Community sponsorship (60s, non-PHI, minors under school-district permission) — tests the missing sponsorship-release track
- Patient testimonial (60s, PHI-adjacent) — only after signed 164.508 authorization AND Compliance Approver sign-off; Vimeo Enterprise + BAA (not Stream, not YouTube unless auth explicitly names YouTube)
Platforms to test
- Master: WS2 asset registry + S3 (existing) — no new platform
- Website embed (de-identified): Cloudflare Stream via new StreamProvider adapter
- Website embed (patient testimonial): Vimeo Enterprise + BAA
- YouTube: Single SGA brand channel; per-location playlists
- GBP: Yext-driven where enabled; direct upload for the rest; verify propagation
- Social: Zernio existing distribution path; validate 9:16 cutdowns
- Paid boost: NOT in scope for pilot (defer to post-pilot)
Success metrics (12 weeks)
| Metric | Target | Fail threshold |
|---|---|---|
| Assets ingested end-to-end (capture → publish) | ≥30 across 5 practices | <15 |
| Compliance sign-off gate: no publish without complete authorization row | 100% (zero incidents) | Any incident = pilot fail |
| Human-reviewed captions on every patient-facing video | 100% | Any incident = pilot fail |
| Release expiration Temporal drill — full fan-out unpublish within 24h | Pass | Fail = block go-live |
Cloudflare Stream contains_identified_patient guard triggers on test upload | Pass | Fail = block go-live |
| GBP video published + verified live | 5/5 | <4/5 |
| Yext propagation on Yext-enabled pilot practices | 100% eligible | <100% |
| GA4 events firing on every embedded video | 100% of embeds | Any silent-zero = fix before scale |
| Play-through ≥50% lift on video pages vs non-video | ≥15% lift at brand level | <5% lift = revisit content, not architecture |
| Video Ops Lead time-per-asset (median) | ≤4 hrs (ingest → publish) | >6 hrs = scale-cost problem |
| Growth Manager time-per-practice-per-month | ≤15 min | >30 min = scope creep, drop-back |
Timeline (12 weeks)
- Weeks 1–2: Legal template set finalized (4 releases). Vimeo Enterprise BAA SKU signed. Cloudflare BAA scope confirmed. Video Ops Lead onboarded. StreamProvider + VimeoProvider scaffolding.
- Weeks 3–4: WS2 schema PR (10 new fields). Temporal expiration workflow written + drilled on test asset.
- Weeks 5–8: Capture + ingest at all 5 pilots. Editorial + Brand Review + Compliance Approver run for real.
- Weeks 9–10: GBP + Yext + Zernio propagation validated. Power BI dashboards at brand / region.
- Weeks 11–12: Metrics review. Go/no-go decision.
Required resources
- Video Ops Lead contractor: $60–90K/yr, prorated to 3 months ≈ $15–22K
- Vimeo Enterprise + BAA quote — ~$25K/yr, prorated
- Cloudflare Stream at pilot volumes — <$500 (usage-priced)
- Google Cloud Identity Free OR Workspace — $70–112/mo
- Studio time — 40–60 hrs across 12 weeks (absorbed, no new hire)
- WS2 engineering — 3–4 dev weeks
- Legal template drafting — $8–12K one-time
- Corporate VoIP DIDs for YouTube phone verification — 3–5 numbers from existing Twilio HIPAA stack, ~$50/mo total
Explicit go/no-go criteria
- All 100%-target compliance gates held.
- Temporal expiration drill passed on real asset.
- Video Ops Lead time-per-asset trended ≤4 hrs by week 10.
- Cloudflare Stream BAA scope resolved in writing.
- ≥3 of 5 pilot practices produced a Reels/TikTok 9:16 cutdown that actually distributed.
- Compliance gates held but per-asset labor is >6 hrs — tooling gap, not architecture failure.
- GBP propagation on <100% of pilots — likely Yext workflow gap, fixable.
- Any compliance incident (unauthorized publish, expired authorization live, HIPAA-adjacent on non-BAA platform).
- Temporal expiration workflow does not fan out cleanly to all destinations.
- Video Ops Lead role cannot be filled at $60–90K/yr contract range.
08Open Questions
Each is framed as a specific question a specific person can answer. These are the inputs the Video Ops Lead and the pilot depend on.
| # | Owner | Question |
|---|---|---|
| 1 | Amy / Studio Director | How many finished videos exist today across the 75 practices with video assets? Total storage footprint (GB) of masters, raw, and variants? |
| 2 | Amy / Web platform lead | Monthly video-play volume across all practice websites today (aggregate + top-10)? Projected 12-month volume assuming rollout? |
| 3 | Studio Director / IT | Every existing SGA-branded YouTube channel (including legacy sub-brand channels we may still control): Brand Account vs Channel Permissions, Workspace vs personal Gmail owner, credentials location? |
| 4 | Ron (CIO) / IT | Current M365 SKU (E3 vs E5) for majority of tenant seats? Purview Audit Premium licensed? |
| 5 | Finance / Procurement | Existing Vimeo, Wistia, or YouTube TV/Premium contracts on the books that would auto-renew during pilot? Does the MSP SEO retainer cover embed-swap labor for the ~75 sites in its scope, or is that a change-order for the remaining ~185 SGA sites? |
| 6 | IT / Studio | How many users total need access to the video library, by role? |
| 7 | BI / GA4 owner (currently unassigned) | Which practice-site GA4 properties are near the 50 custom-dimension cap? Consent Mode v2 tenant-wide? BigQuery export enabled on all properties? |
| 8 | General Counsel | For each of the 4 release templates — approved-and-current or commission needed? Does cyber/E&O/media liability cover (a) OCR fines/CAP, (b) right-of-publicity, (c) ADA Title III / state-law defense? |
| 9 | Ron (CIO) + Cloudflare Enterprise sales | Is Cloudflare Stream explicitly enumerated in the executed Enterprise BAA order form? If not, will Cloudflare add it and when? |
| 10 | Video Ops Lead (once contracted) | For the 75 practices with existing video — which assets have signed releases on file (any type), and where are those releases physically located? |
| 11 | Studio Director / Compliance | Current SOP for capturing a patient testimonial today — personal iPhone → text? Studio-issued device? Third-party videographer? |
| 12 | Marketing / Paid media lead | Current health-category account status for the 44 Google Ads accounts and Meta Business Manager? Prior violations? Restrictions? |
09Final Verdict & Next Actions
The plan's instincts are sound — no individual practice Gmails, a central master library, a tiered YouTube model with corporate ownership, phased rollout — and every one of the six domain reviews plus the red team landed at "approve with modifications" independently. But the plan as written mixes together two jobs (master library and public video host) that need different platforms, treats SharePoint as a plausible DAM when the existing Content Engine (WS2) already IS the DAM, understates the compliance gates that must ship before the pilot rather than after, and misses the highest-conversion short-form surfaces (Reels, TikTok) entirely.
The recommended modifications preserve the plan's structure while closing the compliance, cost, and operational gaps — and reject the two most consequential misfits (SharePoint-as-DAM and Wistia-as-embed-host) in favor of the architecture SGA already partially owns (WS2 + S3 + Cloudflare + a narrow Vimeo Enterprise carve-out for patient content).
The five most important next actions
| # | Action | Owner | Target |
|---|---|---|---|
| 1 | Get Cloudflare Enterprise sales to confirm in writing whether Cloudflare Stream is in the executed BAA order form, and either add it or accept Stream is de-identified-only in the SGA architecture. | Ron (CIO) + IT | Within 2 weeks |
| 2 | Commission General Counsel to finalize the 4-release template set. Confirm cyber / E&O / media liability coverage of OCR fines, CAP costs, and right-of-publicity. | General Counsel | Within 3 weeks |
| 3 | Contract a fractional Video Ops Lead (0.4–0.6 FTE, $60–90K/yr) covering intake, taxonomy, compliance sign-off, access-review orchestration. Kill any expectation that Growth Managers absorb this. | Studio Director + Amy | Within 3 weeks |
| 4 | WS2 schema PR: add the 10 new fields. Land the Temporal expiration workflow. Drill on a test asset. | sga-architect + WS2 team | Within 4 weeks |
| 5 | Inventory + classify every existing SGA YouTube channel (including any legacy sub-brand channels we still control). Prioritize personal-Gmail-owned channels for wave 1 migration. Do NOT begin the pilot until the discovery report exists. | IT Security + Studio | Within 4 weeks |
The two headline "consider" items in the plan — SharePoint-as-DAM and Wistia — should be dropped from evaluation entirely. SharePoint is a working-copy mirror at best (no anonymous public embed, sync ceilings that break at DSO scale). Wistia's 2026 pricing rewards small libraries and punishes DSO scale, and its BAA posture is unresolved. The system-of-record is what SGA already built in WS2. The pilot should not test whether SharePoint can be a DAM — it should test whether the compliance workflow (release + Temporal + Compliance Approver + auto-unpublish fan-out) is real, because that is the only thing that actually gates go-live.