| Agent | Role | What They Own | Status |
|---|---|---|---|
| Christian 👑 New | Chief Operating Officer company-level — above all divisions |
The whole-empire view. Oversees every 827 division (Marketing, Website Dev, Voice, CRM, Encore, 827 Media — Major Buzzkill · Blue Lava), maintains the "State of 827" roll-up cockpit, and owns the empire architecture map. Oversees, never executes — routes work to each division's architect. Phase 1 (now) = overseer/advisor; Phase 2 (the swarm) = commander of the division leads. | Active |
| Mary | Content Strategist | Weekly content briefs, 8-week publishing schedule, content track assignments, hook framework selection. Mary is the brain behind what gets made and when — Cameron and Parker execute off her briefs. Also runs client onboarding — takes Dakota's research and turns it into the marketing plan. | Active |
| Cameron | Creative Director | AI image generation (Higgsfield), video generation, logo compositing, captions, and gate-by-gate quality control. Cameron goes through 4 gates per post — Kevin approves at each gate before Cameron moves forward. | Active |
| Parker | Publisher | Pre-flight checks, Zernio scheduling, post verification (confirms posts actually went live), and publishing log maintenance. Parker never guesses — they verify independently that every post fired correctly. | Active |
| Eli | Analytics | Two modes: Mode 1 is a daily dashboard refresh (Kasey triggers this). Mode 2 is a full analytics pull every Saturday — Eli delivers a complete performance report to Mary so she can improve the following week's content strategy. | Active |
| Judy | Website, Dashboards & Templates | Builds and OWNS the live 3DAi VoiceLink website, all client dashboards (DASHBOARD.html), and ALL page templates / master HTML — the one universal ?client= template behind every client-facing page (Onboarding, Marketing Plan, Payments, Discovery, Brand Brief, Welcome). Content agents supply the words; Judy owns the structure — change the master once, every client updates. Also the architect — when Kevin clicks "New Prospect," Judy scaffolds the folder structure, dashboard, and all internal files so agents can work. And owns this System Architecture Blueprint: every agent briefs Judy on any process/workflow change and she keeps it current. Pushes to GitHub (KevinC1988). |
Active |
| Dakota | Strategy & Client Research | Researches every new prospect (website, socials, CPMs, ad formats, trends), builds the high-level client picture, and fills the client DATA (name, owner, hero, socials, logo) into the dashboard Judy scaffolds — logos saved locally to assets/brand/, never hotlinked; fills slots, never structure. Writes strategy briefs + meeting prep. Does NOT build pages or run onboarding (Judy = architect; Mary = onboarding). | Active |
| Riley | Repurposing Engine | Takes one long-form piece of content (a video, podcast, article) and turns it into 30+ derivative posts — short clips, quote cards, carousels, threads. Activated once Kevin has a long-form content library to work from. | Dormant — awaiting source content |
| Kasey | Orchestration | The coordinator. Kasey reads every agent's status, audits for gaps, routes blockers to the right agent, triggers Eli's daily dashboard refresh, and manages the weekly production cycle. Two modes: Guided (Kevin approves each handoff) and Autopilot (fully automatic, Week 5+). | Agency-wide |
| Jim New | Pricing & Proposals | Takes Dakota's discovery answers and outputs a complete proposal Kevin can send the same day. Three outputs every time: setup fee (one-time, due Week 3), monthly retainer (starts Week 5), and ad spend recommendation (activates Week 13). Jim knows the full client timeline cold and flags any deal that is underpriced for its scope. | Via Discovery |
| Reese New | Referral Outreach & Lead-Gen | The only agent who does outbound. Builds prospect lists from public sources (Google Maps, Yelp, brokerage pages — never ToS-blocked sites), enriches + verifies emails, and runs compliant cold sequences (CAN-SPAM + a separate sending domain so a client's main inbox never gets burned). Flags warm referral partners and hands them to the client. First mission: realtors for HIE (LA → OC → SD). | New — HIE realtors first |
| Emma 🏗️ New | Lead Web Developer Website Development division |
Builds the external client websites 827 sells — start to finish — in her own Website Development division (not Marketing). Frees Judy to stay the Marketing architect. The line: Judy builds the dashboards/templates/cockpit (the house the team works in); Emma builds the websites we sell to outside clients. Same full web stack as Judy — Figma · 21st.dev Magic · design skills · Taste · preview — shared, not taken. Each site she owns keeps its own WEBSITE-TRUTH.md. |
Active |
geo-targeting-strategy.md. Together = a complete acquisition engine — buy demand (Jim) and earn it (Reese).
| Tool | Purpose | Status | Notes |
|---|---|---|---|
| Zernio MCP | All social media publishing — schedules posts across 9 platforms (incl YouTube Shorts + Long-form) | ✅ Active | Always scheduled mode. Never "publish now." First call every session: accounts_list to confirm platforms are connected. |
| Higgsfield MCP | AI image + video generation for content Tracks A, B, D, and E | ✅ Active | MCP only — never Python SDK, never direct API, never cloud.higgsfield.ai. Single clean images only — no multi-panel or collage. |
| Remotion | Animated infographic videos for Track C | ✅ Active | Run via: npx remotion render from the client's ops/remotion/ folder. |
| ElevenLabs MCP | AI voiceover audio for Track C animated videos | ✅ Active | Used alongside Remotion to add narration to infographic videos. |
| GitHub MCP | Version control — pushes all file changes to the repository | ✅ Active | Push ONLY to KevinC1988 (private repo · the live deploy source). NEVER push to kcastro27 — our work stays private. Never push secrets. |
| Canva | Brand overlay PNGs — logos and branded elements per client | ✅ Active | Overlays stored in clients/{client}/assets/overlays/ — never hotlinked. |
| ContentStudio | Former publishing tool | ❌ Deprecated May 2026 | Replaced entirely by Zernio MCP. Never use. |
| Blotato | Former publishing tool | ❌ Deprecated Apr 2026 | Replaced entirely by Zernio MCP. Never use. |
| Ideogram | Former AI image generation tool | ❌ Deprecated | Replaced by Higgsfield MCP nano_banana_2. Never use for production. |
| Framework / Reference | What it is | Used by |
|---|---|---|
| influencer-strategy.md | Hook framework library (Hormozi · Gary V · Kallaway · Sabri Suby) — every hook cites at least one | Mary |
| marketing-trends-2026.md | Current trends (Brandwatch): authentic / owner-led, anti-"AI-slop" | Mary (all clients) |
| loop-prompt-library.md | Our Express / Tailor / Amplify / Evolve prompt library, tailored to trade/home-services | Mary · Cameron |
| platform-specs.md | Per-platform specs & requirements | Mary · Cameron · Parker |
| posting-calendar.md | Posting cadence framework | Mary · Parker |
| geo-targeting-strategy.md | Where (geo) + Who (audience, incl. the referral-multiplier) + How-much — every ad-spend / outreach rec answers all three | Jim · Reese |
| Brandwatch (external source) | Digital Marketing Trends 2026 report — distilled into marketing-trends-2026.md | reference |
| Skill / Tool | What it does | Agent |
|---|---|---|
| Seedance video skills | Cinematic video-prompt generation (cinematic · 3D-CGI · cartoon · social-hook · product-360 · real-estate, etc.) | Cameron |
| remotion-best-practices | Best practices for Remotion infographic + carousel video | Cameron |
| Canva MCP | Brand kits + brand-template designs & exports | Cameron · Kevin |
| Design / web skills | claude-design-skill · cro-landing-page · GSAP/motion/Lottie · three.js · Figma — dashboards + websites | Judy |
| 21st.dev Magic MCP | AI UI-component generation (React + Tailwind) — "v0 in the editor" | Judy |
| deep-research | Multi-source, fact-checked research feeding briefs/discovery | Mary · Dakota |
| marketing-psychology (trial) | Persuasion frameworks to sharpen hooks & captions | Mary |
| claude-ads (23 skills) | Paid-ads audit suite — Google/Meta/Bing/LinkedIn/TikTok/Amazon/Apple + attribution, server-side tracking, ROAS/CPA math. Fills the Google-ads gap Zernio never covered (audit only — paste/export data) | Jim |
| sales-skills/sales (sales-do router) | Outbound/GTM skill suite — routes any sales goal to the right specialized skill (prospecting · cadences · enrichment · deliverability) from 200+ skills. Router installed user-level 2026-06-29 (the rest = vet-before-add). Standalone list-build/verify/send tools (Maps scrapers · email verifiers · OutreachStud) clone separately per mission. | Reese |
| Repo / Platform | What it is | Status |
|---|---|---|
| KevinC1988/marketing-agency | Kevin's personal repo — the live deploy source + the ONLY push target | ✅ Active |
| kcastro27/marketing-agency | Old account — reclaimed 2026-06-29 (moved to Kevin's own email + 2FA, trezdev removed); still NOT the push target — always push to KevinC1988 | ⛔ Do not push |
| GitHub account security (both accounts) | Fully locked 2026-07-01. EVERY repo on BOTH kcastro27 and KevinC1988 is private (verified logged-out). Commit history audited clean — trezdez never uploaded anything; no collaborators but Kevin; zero pending invites. Each account has a different-provider backup recovery email (KevinC1988→ka27@mac.com · kcastro27→kevincastro@mac.com) + 2FA. Git auth via secure keyring — no plaintext tokens in .git/config. Standing rule: repo visibility gets flipped + verified logged-out, never just "flagged for later." | ✅ Locked |
| GitHub Visibility Watcher | Automated safeguard against a repo silently going public. ~/.827-security/github-visibility-watch.sh (repo copy in reference/engineering/) checks both accounts' public API daily via macOS launchd (com.827.github-visibility-watch, 9:07am + at login, survives reboots) → macOS notification + critical alert + sound the moment anything is exposed. Built 2026-07-01 after repeated sessions left repos public. Re-home to cron/systemd on server move. | ✅ Live |
| Cloudflare Pages | Live hosting (project marketing-agency, marketing-agency-4eu.pages.dev) — auto-deploys from GitHub on every push. Two custom domains on the SAME project: dash.827media.com = the private client dashboards (Access-gated) · 827digital.com = the public landing site (no gate). See the Domains split below. | ✅ Live |
| Cloudflare Access | Login gate on the dashboard — add a client's email to the Access policy before inviting them | ✅ Live |
| Private Vault (/Marketing Agency/vault/*) | Kevin-only locker for contracts/sensitive docs. Own Access app "Kevin Vault (private)" = allow kevin@jigowattmedia.com only, sitting above "everything else (admin only)." Reached by a hidden secret door on the cockpit (triple-click the "827" wordmark, or type vault). Drawers: Adam · Personal Budget · Misc · Dumbshits (retired-vendor/TrezDev archive) · 827 Research (swipe-file with a playable clip gallery) · VoiceLink site. Now a free-arrange board (drag/resize/recolor, cloud-saved). Built 2026-06-26, board 2026-06-28 | ✅ Live |
| Public Share area (/Marketing Agency/share/*) | No-login prospect/demo pages — an Access Bypass policy ("Open - shared files" = Everyone) on /share/* only; most-specific path wins so the rest of dash stays gated. Driven from the Share Center cockpit page (SHARE-CENTER.html): a shareable-pages library + an editable, cloud-saved send log (Recipient · What · Link · Status). Guardrail: demo/prospect-safe content only, never private client data. Built 2026-06-26 | ✅ Live |
| Cloudflare KV (FORM_DATA) | Cloud save for TEXT/JSON only — via functions/api/data.js + shared/cloud-save.js (add a form to ALLOWED_FORMS to enable — recent forms: vault-cards, brief-board, progress-feed (the "While You Were Away" feed), share-log, playbook-index, sales-playbook). ⬆ Upgraded to Cloudflare Workers PAID ($5/mo, 2026-07-01): KV writes went free-tier 1,000/day → 1 million/day (the free cap was throttling saves — one client filling Discovery can exceed 1,000 because Discovery auto-saves on every keystroke; optional future cleanup = debounce that save). Paid also unlocks D1 (serverless SQL DB — the natural foundation for the future CRM), Workers AI, Vectorize, Hyperdrive, Queues (not built yet — "continue setup" in CF still to finish). | ✅ Live · Paid |
| Cloudflare R2 (bucket 827-media) | Object storage for files (KV can't hold them). Full loop LIVE: dashboard Upload → functions/api/upload.js → R2 (binding MEDIA), filed by <client>/<kind>/ (photos·videos·brand·docs·references). ① Upload + media library (thumbnails/open/delete) via shared media-upload.js. ② Sync-down to the local drive via reference/engineering/pull-uploads.py <slug> (Cameron). ③ Apply: "Use as logo" sets the client's logo (KV form brand) and the shared brand-logo.js — injected site-wide by _middleware.js — shows it on EVERY client page. Remaining: large-video presigned path (Slack upload alerts now ✅ live — per-client channels) | ✅ Live (upload·library·sync·apply) |
| Slack (notification/comms layer) | LIVE (2026-07-01). Workspace 827 Marketing Solutions · bot app 827 Upload Alerts (bot token in CF secret SLACK_BOT_TOKEN; scopes chat:write·chat:write.public·channels:manage·channels:read). Per-client channels auto-created the first time a client uploads or messages (#<slug>) — the bot also auto-invites Kevin so it hits his sidebar + phone. Both upload alerts (upload.js → notifySlack) and the client "Message us" chat button (shared/chat-widget.js → functions/api/message.js) route to that client's channel via functions/api/_slack.js postToClient(); fails soft to the #uploads webhook (SLACK_WEBHOOK_URL) so nothing is lost. Cockpit has a Slack button (opens web Slack in a new tab). Two-way in-dashboard replies = later. | ✅ Live |
| Backup & Data Protection | Layered backup: GitHub (code, continuous) · iCloud (827Solutions workspace zip, via Family-shared 2 TB iCloud+) · Backblaze (~$9/mo — the big 827_XDrive 14 TB external, uploading) · mirror drive (22 TB+ local clone — coming). Built 2026-06-26 | ✅ Live (mirror pending) |
| Bitwarden (client password vault) | Where client logins live — never in the repo/files. Kevin's account, 2FA on (TOTP authenticator) + recovery code saved, folder-per-client (Clients/<Client>) plus Personal for his own. The Brand Brief's Account Access tab tracks status only + links here. In active use since 2026-06-28 | ✅ In use |
| OpenSwarm (@vrsen/openswarm) | Multi-agent orchestration platform — under evaluation for the server move | ⏳ Evaluating |
| Domain (all at Hostinger, ~$10/yr) | Role | Status |
|---|---|---|
| 827digital.com | The public landing page (Marketing Agency/share/827-digital.html), served at the root via the middleware LANDING_HOSTS rewrite. Public — NO Access gate. | ✅ Live |
| www.827digital.com | 2nd Pages custom domain; middleware already handles www. | ✅ Live |
| 827digitalsolutions.com | Full umbrella name → 301-redirects to 827digital.com (the correct Cloudflare way — Redirect Rule, not a Hostinger forward). Verified live. | ✅ Live |
| 827marketingsolutions.com | The client-login front door (Kevin, 2026-06-30). Clients reach the app at the bare 827marketingsolutions.com — and www. 301-redirects to it — so they only ever see THAT in the URL, never "827 media" or "app.". Custom domain on the marketing-agency Pages project, Access-gated (the bare domain was added to all 6 Access apps that protect the app, gate-first so it was never exposed). The root is a smart router (index.html reads the signed-in identity → admins to the cockpit, each client to their own dashboard; clients use a bare-domain bookmark to their page today). Live + verified. (app.827marketingsolutions.com still works too.) | ✅ Live |
functions/_middleware.jsimg src="assets/…" to absolute (so the clean URL works without breaking the localhost preview). Public, no gate.*.pages.dev hit 301s to dash.827media.com so nobody bypasses the Access gate via the raw Pages URL./clients/{slug}/dashboard/PROOF-VAULT.html, gated by that client's keycard, with an injected <base> so the master's relative assets resolve. Client reads from the path → no cross-client peek. (Fixed clients getting kicked to the Cloudflare login.)<link> into <head> — gold-ring shared/favicon.svg on the dashboards; the 827digital landing gets the blue-ring shared/favicon-digital.svg via its own block, so gold = Marketing, blue = Digital) and the shared/brand-logo.js applier (<script> into <body>; self-guarding — no-ops unless the page has a client logo element and that client has a chosen logo). Favicons live on the OPEN /shared/ path so every client's browser can load them (not behind the admin gate).ADMIN_EMAILS/SALES_EMAILS in shared/dashboard-init.js + cloud-save.js) controls who SEES the cockpit bar / can edit pricing.| Role | Can reach | |
|---|---|---|
| kevin@jigowattmedia.com | Admin / owner | Everything — admin cockpit, every client, vault, all pages. The only true admin. |
| jeannine@homeinspectionexperts.com | Client (HIE) | Her own Home Inspection Experts area only (/clients/home-inspection-experts/* — dashboard, onboarding, payments, etc.). No other client, no cockpit. |
| adam@adamgerber.com | ⚠ Scoped partner (distrusted) | The HIE dashboard page ONLY (…/home-inspection-experts/dashboard/DASHBOARD*, via the "HIE dashboard — scoped (Adam)" app). NOT the cockpit, client/prospect list, onboarding, payments, other clients — even HIE's other pages deny him. Removed from SALES_EMAILS so no cockpit bar / pricing edit. (Set 2026-06-30 — see [[project_adam_access_scoped]].) |
| kaseycrime@gmail.com | Salesman (test) | Sees the cockpit bar; can edit only the pricing/Quote-Builder page. Test account. |
#0a0e16 background. Only logo+name+text+color are customizable (no full custom page on this plan). ⏭ TODO: add a hosted 827 logo PNG. The premium screens we fully control are the globe splash (pre-login) + the per-client Welcome page. Tracker UI: Marketing Agency/ACCESS-INVITES.html (display only — the real gate is Cloudflare Access).| Agent | Skills & tools they wield |
|---|---|
| Kasey | Orchestration (Guided + Autopilot) — routes all agents via ops/STATUS.md |
| Dakota | Discovery · CLIENT-TRUTH · onboarding pages · keeps this blueprint · deep-research |
| Mary | Frameworks (influencer-strategy · trends · loop) · deep-research · marketing-psychology · Writing Quality Standard |
| Cameron | Higgsfield MCP · Remotion (+best-practices) · ElevenLabs · Canva MCP · Seedance video skills |
| Parker | Zernio MCP — publishing across 9 platforms (scheduled only) |
| Eli | Zernio analytics — performance data & reporting |
| Jim | Zernio ad tools (Meta/LinkedIn/Pinterest/X reach estimates) · claude-ads suite (23 skills — Google/Meta/Bing/attribution/ROAS audits) · geo-targeting-strategy.md — plan/estimate/audit only, never spend |
| Judy | Design/web skills · Figma · 21st.dev Magic MCP · GitHub (KevinC1988 only) · owns the System Architecture Blueprint |
| Riley | Repurposing engine — long-form → 30+ derivatives (Hormozi rule) |
| Reese | Public-source web scraping · sales-skills git (Maps/Yelp corridor lists + enrichment — vet before install) · Zernio CRM (contacts/sequences/broadcasts) · geo-targeting-strategy.md — compliant cold outreach, separate sending domain |
| Client | Folder | Status | Platforms |
|---|---|---|---|
| 3DAi VoiceLink 827 Marketing Solutions' own internal product — marketed as the flagship case study |
clients/3dai-voicelink/ | Active · Week 2 | Facebook · Instagram · TikTok · Threads · X · LinkedIn · YouTube · GBP |
| Home Inspection Experts First external paying client — home inspection (San Diego); closing now at floor pricing |
clients/home-inspection-experts/ | Proposal — closing | Facebook · Instagram · TikTok · GBP · Yelp |
| PaddleLink iOS pickleball community app — Shannon Andriese · St. Petersburg → nationwide |
clients/paddlelink/ | Discovery | Instagram · TikTok · Facebook (app-first) |
| Hollywood Construction Corp Owner: Adolfo Ramos · ⚠ never mix with Roof Replacement |
clients/hollywood-construction/ | Discovery ⏸ on hold | TBD |
| Roof Replacement Inc Owner: Adolfo Ramos · ⚠ never mix with Hollywood |
clients/roof-replacement-inc/ | Discovery ⏸ on hold | TBD |
| Roof Repairs CA Roofing — researched prospect |
clients/roof-repairs-ca/ | Prospect ⏸ on hold | TBD |
| iComfort Heating & Air HVAC — researched prospect (folder: cali-comfort) |
clients/cali-comfort/ | Prospect | TBD |
| Wild Oak Construction Construction — researched prospect |
clients/wild-oak/ | Prospect | TBD |
| LA Home Concierge Adam's own company — high priority to bring into rotation |
clients/la-home-concierge/ | Prospect | TBD |
| CL Remodeling Remodeling — did not sign |
clients/cl-remodeling/ | Lost | — |
?client= master that Judy builds and owns. Content agents author the CONTENT (words, data) only — never the structure. Any structural/design change goes into the master once → every client updates. No per-client page forks. (Proof Vault is now the shared ?client= master at reference/client-resources/proof-vault.html — add a client = one entry in its CLIENTS config block.)?source=yelp|google) and separate client vs. admin views. Reached via the Yelp + Google Business tiles in Platform Health. Handoff: Dakota fills → Mary picks → Cameron builds (New → Picked → Used), turning real reviews into posts.git stash a pile of uncommitted work. (Kevin, 2026-06-27.)?client=), not a one-off.
access_gbp), with admin-only "Mark secured / Reopen" controls (body.adminview). The walkthrough text lives in the template, so new clients always get the fresh steps; only the state is per-client. Reusable for any access type via data-access="…". First built on the Google Audit page.body.adminview) so a future teammate gets the model at a glance.<board>:_seeded); existing clients get a safe one-time migration (adopt current seed as baseline, add nothing). Lets Judy broadcast a new question to the whole roster from one edit._template/…/MARKETING-PLAN-SKELETON.html: locked section framework, swappable tracks/platforms per client._template/…/MARKETING-PAYMENTS-SKELETON.html.vault/marketing-agreement-TEMPLATE.html (Jim-owned). The Contract is the signable legal doc (via DocuSign); the Payments page only explains — same numbers, one binds, one educates.shared/mobile.css — loads on every full page. Two parts: always-on Safari/cross-browser shims (-webkit- prefixes, 100dvh fallbacks) plus tablet (≤1024) and phone (≤680) breakpoints that collapse grids, kill horizontal scroll, and scroll wide tables — all inside max-width queries so desktop renders identically. Change once → every page. Verified at phone/tablet/desktop in preview; real-device iPhone spot-check still pending.shared/discovery.html) removes/disables the "Clear form" button for clients and guards against accidental blank-overwrite of saved answers. Cloud save already persists typed answers — this purely stops an accidental wipe.progress-feed cloud doc. Judy builds the mechanism + seen-flag; Dakota owns the dated wins feed it reads. Live (`shared/welcome-popup.js`, wired into HIE + Faith Haven + `_template`).firstRunSeen:<slug> flag). Cards: Welcome (greets by first name) → Platform Health → Your week (Weekly View + 8-Week Ramp) → Your pages (Discovery → Marketing Plan → Onboarding) → Kevin contact + Slack message-board (coming) with an inspirational close + a "Start with my Discovery →" CTA that deep-links to DISCOVERY.html. Zero per-client config — it reads the live dashboard: first name from the profile contact (placeholder → generic), platform chips from the active #plat-bar pills (excludes the Website tile + muted pills) so each client sees only their own, with a graceful fallback before platforms are confirmed. Replayable anytime via 🎬 Replay welcome tour in the menu (window.replayFirstRun()); preview with ?tourDemo=1. Judy-owned. Wired into _template only — new clients inherit it; existing clients (HIE) are intentionally excluded. Live (`shared/first-run.js`, 2026-06-30).shared/chat-widget.js, injected site-wide by _middleware.js). Client taps → a "Message your team" panel → functions/api/message.js → that client's OWN Slack channel. Uploads + messages both land in one channel per client (#<slug>, auto-created + Kevin auto-invited) via functions/api/_slack.js postToClient(). v1 one-way (client → Slack); replies by email/phone. See the Slack row in the infra table. Live 2026-07-01.clients/_inactive/ convention · 2026-07-01Marketing Agency/clients/_inactive/ — kept, never deleted, fully recoverable if a client returns. Every client-switcher was rebuilt to the 3 active clients so nothing points at a moved folder.?prospect=<slug> (blank master by default), every field cloud-saved (form sales-playbook). Opened from the 📋 Sales Playbook button in the admin cockpit. Each call-sheet card has a ✕ archive control that moves a prospect from prospects[] → archived[] in the playbook-index doc (record preserved, card hidden — for closed/dead deals). Built by Dakota; cloud-save + templatize + cockpit wiring by Judy.vault-cards) and the Brand Brief as a high-level grouped board over the long list (5 groups; tiles open the section detail; layout saved GLOBALLY to brief-board so every client inherits one arrangement). Built 2026-06-28. Boards only — never the dashboards (their containers never change).<client>/references/ via kind=references) → shows instantly, hover to delete. Back-compatible with committed files listed in clients/<slug>/assets/references/manifest.json. Convention for every client: clients/<slug>/assets/references/. Built 2026-06-28._template. That's the whole job — the folder system exists from this moment.MARKETING-PLAN.html — platforms, setup weeks, 8-week ramp, track key — and adds the banner + icon so it looks finished for the pitch. Mary authors the plan; Judy makes it presentable.MARKETING-PAYMENTS.html — verbatim from the committed file. Never re-typed, never rounded. One source, zero drift. Then Kevin presents the finished dashboard (Plan + Payments).