Open
1Title — Primer 3.0 Opening beat. Let it land before you start talking.▶
2Before We Begin A genuine thank-you — say it like you mean it, not as throat-clearing.▶
"We wanted to open with this because everything after it is built on the partnership, not in spite of it."
The Timeline Problem
3Our Objectives Five goals everything else maps back to — if it doesn't serve one, it doesn't belong in the plan.▶
- "These five things are the spine of the whole presentation. Everything you see for the next 30 minutes is in service of one of these five."
- Name them plainly: faster without rushed, cheaper without cheaper-feeling, more locked-down brand consistency, and more of us around after launch instead of less.
- "If something we propose today doesn't map to one of these, push back on it — it doesn't belong in the plan."
4Divider — "Let's Take a Closer Look" Quick transition into the timeline problem.▶
"Let's start with what's actually been happening, in plain numbers."
5Proposed Today: Current Timeline The clean, agreed 7-unit timeline. Don't editorialize yet — let slide 6 do the gut-punch.▶
- "This is the timeline we agree to at kickoff. On paper, it's clean — sequential, no overlap confusion, everyone knows when their phase starts."
- Don't editorialize yet — this slide is the baseline.
6The Hard Truth: Broken Timeline Same plan, but it actually lands at 6–9 months. Point at the Naming/Identity overlap specifically.▶
- "Here's what actually happens. Same phases, same plan — but they bleed into each other, and launch slides from a clean 7-unit timeline to 6–9 months."
- Point at the overlap between Naming and Identity specifically — that's a phase that couldn't close on time bleeding into the next one.
- "This isn't a one-time miss. This is the pattern, and it's the reason the next several slides exist."
7Divider — "Why is This Happening?" Two things drive the blowout — process friction and our own friction.▶
"We'll take both in order, starting with what we're seeing from the field."
The Friction
8Main Stressors 10 friction points, named plainly without blame — Website Breakage and Unused Assets carry real war stories.▶
- "Before we talk about the fix, we want to name the friction plainly — this is a pattern we've seen across the portfolio, not a complaint about any one team."
- Increased SOW / Scope Creep: Almost every build grows after kickoff — the tool makes "just one more thing" feel free, even when it isn't.
- Slow Responses / Poor Feedback: Feedback cycles stretch out, and when it comes back it's reactive rather than directive. Both eat timeline silently.
- Website Breakage: Shows up twice — pre-launch and post-launch. Three concrete causes:
- Global elements: In Bricks, a button is often a global element — consistent everywhere, but also editable everywhere from one place. One color/padding change cascades to every instance, sitewide, instantly.
- Staging gets skipped: We walk every client through staging-to-live on WP Engine. Some still edit live directly, so the safety net never gets used.
- Caching/optimization plugins breaking the whole site at once: NitroPack and WP Rocket, brought in to help performance, have caused sitewide CSS-breaking bugs through their own file-optimization features — severe enough that full disablement was sometimes the only fix.
- Unused Assets: Resource templates built and toggled off pending content that never arrives — fully built, fully paid for, never sees a visitor.
- Increased Content: Comparison pages the client wants mid-build that were never in the original sitemap or wireframe.
- Vendor vs. Partner: The one that matters most — treated as a vendor, we can't flag risk early. As a partner, we can.
9Overall SOW Increase Slide 8 with receipts — exactly where scope grew, deliverable by deliverable. Website grew the most.▶
- "This is slide 8 with receipts — here's exactly where the scope grew, deliverable by deliverable."
- Brand Profile: Deeper Lock 8 alignment, core attributes, voice & tone, plus deeper research and vetting.
- Naming: 15–20 name options instead of a tighter shortlist, more variety, third-party tools, specialized content.
- Identity: Secondary palettes, accessibility passes, UI/UX optimization, larger guideline documents.
- Website: The biggest grower — technical SEO, content strategy, copywriting, a11y, page speed, AEO/GEO, third-party integrations, plus post-approval changes and post-launch breakage.
- "None of these individually are unreasonable — that's exactly the problem. Each one is small and justifiable, but they stack."
10Spread Thin: The Marketing Director The root cause under slide 8 — one person doing seven jobs. Frame with empathy, not complaint.▶
- "This is the root cause underneath a lot of slide 8. When one person is doing the job of seven, slow responses and unclear feedback aren't a character flaw — they're a math problem."
- "We're naming this because it changes how we should be supporting that person — less 'wait for direction,' more 'be prescriptive and advise.'"
- Sets up the "Be Prescriptive" commitment on slide 11.
Tone: land as empathy for the client side, not a complaint. "We see how stretched this role is, and we want to build a process that doesn't depend on it having bandwidth it doesn't have."
Our Responsibility
11Needs Improvement Our own lessons learned — own it briefly, don't relitigate, then move on.▶
- "We want to be upfront: some of this friction is self-inflicted, and these are the lessons we've taken from it."
- Timeline Management: Inform earlier, reinforce more often, hold the line when a deadline is at risk.
- Scope Creep Management: Engage with new requests, price them, propose a budget in the moment — not a "no choice" surprise later.
- Feedback Direction: Be more prescriptive — "here's the recommended direction and why," not three open options. Directly answers slide 10.
- Establish Partner Status: This build is itself the qualifier — proof we can be a strategic partner, not just an execution vendor.
- Promote Soft Skills: Ongoing — empathy and judgment on our PM side prevent half of these issues before they start.
Tone: land it, then move into the case for change. Don't linger — this slide exists to earn trust, not relitigate the past.
12The Case for Change (recap) Same five goals as slide 3 — a deliberate callback before the AI and stack sections.▶
- "Same five goals as the opener. Everything from here forward — the AI policy, the new stack, the new budget — gets measured against these."
- This is a deliberate callback, not filler. It signals "we're now solving what we named."
Responsible AI
13Responsible AI: A Tool Not a Replacement AI assists research/production in Design, Dev, and Content — it never makes the creative call.▶
- "AI is not a silver bullet, and it's not a replacement for the broader creative process."
- In design, AI helps with research and production rollout — not the creative decision.
- In development, this is where it does the most work — research, production code, workflow scaffolding. The Claude Code piece.
- In content, research, outlines, and drafts — a human writes and approves the final voice.
14Better Outcomes Should Be Priority The credibility line: no AI for design/brand right now, on principle — not because it's slow.▶
- "We want to draw a clear boundary here, because it's the opposite of what most agencies are saying right now."
- "If the only reason to reach for AI is speed, that's the wrong reason. We're explicitly not using AI for design or brand development right now — full stop, for now."
- "Where we do use it — development, research, drafting — it's because it makes the work better, not faster. That's the whole policy."
- This directly protects Minimize Brand Drift from slide 3.
Reduced Timelines
155 Weeks With Naming AI-assisted research compresses the timeline 5 weeks, plus a 3-month retainer and 6-month audit.▶
- 5 weeks saved vs. the broken timeline, from AI-assisted research in Brand Profile, Naming, and Identity — compressed research, not cut steps.
- The 3-month creative-services retainer solves three slide-8 problems directly: unused assets, brand drift, scope creep.
- The 6-month audit is the accountability mechanism — a scheduled checkpoint, not just a promise.
1610 Weeks Without Naming Same model without Naming — savings nearly double, since naming is the slowest phase historically.▶
When naming isn't in scope, savings nearly double — 10 weeks instead of 5 — because naming is historically the phase most prone to round-trip delays. Same retainer/audit structure applies.
Part One – Five: Process Breakdown
17Part One: Brand Profile AI research is now embedded in this phase directly, cutting white-paper fatigue.▶
Better alignment with Lock 8 session work; integrating brand promise/attributes/voice & tone earlier so it doesn't get re-litigated later — this is what's shaving weeks off downstream phases.
18Part Two: Naming Where AI earns its keep most — research and saturation checks. Legal vetting stays human.▶
Definitions, metaphors, core value themes, namespace and domain saturation checks happen faster and deeper. Legal vetting is a distinct, human step — AI accelerates the funnel into it, doesn't replace it.
19Part Three: Identity AI supports brand-mark research and mockups; the creative call stays fully human.▶
AI helps stress-test a mark against existing trademarks and visualize it across more contexts, faster — consistent with the Responsible AI stance from slides 13–14.
20Part Four: Website The completely new workflow — hold most of this for the dedicated stack slides next.▶
The deliverables list is the promise: speed, SEO, AEO/GEO, third-party integration all built in by default with the new stack, not bolted on afterward.
21Part Five: Collateral Split into two phases — direct fix for the "unused assets" problem from slide 8.▶
Phase 1 covers what's needed for launch; Phase 2 produces the rest only as it's actually needed post-launch — reduces wasted production and launch-day workload.
The Pivot
22Moving Away From WordPress The thesis statement for the next 8 slides — return here if anyone asks "why are we doing this again?"▶
"Every claim on this slide gets backed up individually — speed, cost, brand drift, editing, AI use, and support each get their own comparison slide next."
23The Stack Six established, heavily-used tools — name-drop Google/Microsoft/Disney/Netflix. Cwicly is the cautionary counter-example.▶
- "Before we get into the comparisons — this isn't an experimental stack, every piece is established, globally used, and fully supported."
- "Astro runs production sites for Google and Microsoft. Storyblok runs Disney and Netflix's content operations. We're not betting on something unproven."
- One line per tool: Figma (design), Claude Code (AI-assisted dev), Astro (framework), Storyblok (the CMS clients use), GitHub (code storage), Netlify (hosting/deployment).
The Case for Change
24Content & Editing Clients edit content, never structure — brand integrity enforced by architecture. Fixes the global-element button problem.▶
- Giving full builder access is a slow erosion of the work we delivered — one session, and the site looks nothing like what was approved.
- Not about blaming careless editing — the tool gives too much power over structure to someone untrained on it.
- The flip is architectural, not procedural: content lives in the CMS and is fully editable; layout lives in code and is locked.
- The design we build on day one is the design that's still there in year two.
25Performance GTM/HubSpot keep full functionality — they just stop blocking the page. "Blocking" explained literally, then the 3 fixes.▶
- Every tool marketing adds competes for the same bandwidth at render time.
- A Lighthouse score on WordPress is a high-water mark, not a baseline — it erodes the moment someone adds a new tag.
- The flip: third-party scripts load in their own sandboxed "island." HubSpot literally cannot block the rest of the page from rendering.
Nothing is being removed. They keep GTM, HubSpot, ad pixels, chat widgets — whatever they want. What changes is how the browser deals with those scripts, not whether they run.
1. What "blocking" literally means: the browser reads HTML top to bottom, building the page as it goes. Hit a script tag not marked to load "later," and it stops everything, fetches the script, runs it fully, then resumes. That's a literal pause, not a metaphor for slow. Google's own default GTM snippet is written to block by default. Analogy: a single-lane road — every script is a car that has to fully pass before the next one, including your page content, can move.
2. The three real fixes:
- Deferred loading: scripts load after the visible page has already painted, not before.
- Off-main-thread execution (the big one): GTM/HubSpot run in a separate background lane (a web worker) instead of sharing the page's own processing lane. Still fires every tag — just isn't competing for the same time.
- Astro Islands (selective loading): only interactive parts ship JS, and each loads independently on its own schedule. A slow widget can only ever block itself.
3. Close the loop: every GTM tag still fires, HubSpot still tracks the same behavior into the same CRM, forms submit the same way, pixels attribute the same conversions. Only the order of operations and processing lane change.
26Stack Complexity No caching plugins needed — the site is never the slow version underneath. NitroPack/WP Rocket's CSS-breaking bugs are the cautionary tale.▶
- Before a developer touches anything client-facing, there's setup work that exists only to compensate for WordPress's defaults — invisible to the client, billed as hours or eroded margin.
- The flip: Storyblok and Netlify replace a half-dozen specialized tools and handle deferred loading, caching, and CDN delivery by default.
How WP/WP Engine caching actually works: WordPress builds every page fresh, live, per visitor — slow at volume, so a cache layer saves a pre-built snapshot instead. WP Engine provides one layer server-side; we've added a second with plugins like NitroPack and WP Rocket.
The problem: stacking layers gets fragile. Real, repeated issues with both — including sitewide CSS-breaking bugs from their file-optimization features (minifying/combining CSS), severe enough that full disablement was sometimes the only fix. Also stale snapshots showing old content, and JS-delay features breaking sliders/forms/animations tied to load order.
The recurring support pattern: "clear your cache" is almost always step one when something looks broken or out of date — sometimes at three levels before it resolves. Confusing for a client to hear "your edit is correct, you're just looking at an old copy."
Why Astro doesn't have this problem: the site is built into plain HTML files once, ahead of time — not per visitor, not through a plugin layered on a slower system underneath. The fast version is the only version. Storyblok triggers an automatic rebuild on publish; Netlify deploys it; there's no second cache layer to fall out of sync, so "clear your cache" stops being a step anyone needs.
On WordPress, deferred/optimized script loading is handled by the same plugin layer doing the caching — NitroPack/WP Rocket's "delay JavaScript execution" features are exactly where we've seen the most breakage, firing scripts out of the order a page needs them in.
In Astro, deferred/isolated loading isn't a plugin feature bolted on — it's how the framework already works, set directly in the page's own code, version-controlled in GitHub. Nothing fragile to re-verify after a plugin update, because there's no plugin layer to break it.
27Delivery Speed 80/20 component-based builds — an unplanned page becomes a content-fill task, not a from-scratch build.▶
- Templates get you maybe 60% of the way; the remaining 40% — builder config, field setup, breakpoint testing — is still manual and billable.
- The flip: layout decisions are already made at the component level. Adding a page means filling in content, not configuring a layout from scratch.
- The first portco benefits; the fifth benefits more — the component library keeps growing.
28Security & Maintenance No plugins, no attack surface. Cwicly's shutdown and the WP Engine/Automattic dispute are the two vendor-risk stories here.▶
- This isn't hypothetical — every WordPress agency has a war story, and we have several.
- The irony: the security work itself is what causes the outages. Every patch is a small gamble against your other plugins.
- Monthly security patching isn't a service — it's a tax for the privilege of not getting hacked.
- The flip: static HTML has no attack surface. "No plugins" sounds like a limitation — it's actually the point.
We were midway through a client build on the Cwicly page builder when Cwicly announced it was discontinuing the product entirely — not a bug, the tool going away. Everything already built was stored in Cwicly's own proprietary format, unreadable by anything else — a full rebuild in Bricks followed. Only the idea of the design transferred, not the build.
Why this can't happen the same way now: a page builder stores layout as proprietary data inside the WordPress database, meaningful only to that one tool. In the new stack, page structure is just code — Astro components in a GitHub repo both Primer and Lock 8 can access, in a standard, open format. If any tool ever went away, it's a rewiring job (reconnect content, redeploy host), not a from-scratch rebuild.
WP Engine and Automattic (the company behind WordPress.org, run by WordPress co-founder Matt Mullenweg) have been in an active legal dispute since late 2024 over trademark use and contribution to the open-source project. At one point, Automattic blocked WP Engine-hosted sites from automatically updating plugins/themes through WordPress.org's official system — affecting hundreds of thousands of sites through no fault of their own. A court ordered access restored; the lawsuit is still active as of mid-2026, with trial not expected until 2027.
Why it matters here: it's a risk that has nothing to do with code quality — a single entity controlling critical infrastructure for an entire ecosystem, with power to cut off access over a business dispute. That sits above anything Primer or Lock 8 can control on a WordPress site.
Keep neutral if mentioned — still being litigated, both sides dispute the other's claims. The point isn't who's right, it's that this single-point-of-control risk doesn't exist in a stack where hosting, CMS, and codebase are all independently swappable.
29Cost Benefits Five tools/vendors/renewals collapse into one platform plus responsible AI use.▶
- Not just dollars — coordination overhead. Five tools = five vendors, five points of failure, five renewal dates, per site.
- Across six portcos, that's thirty tool relationships to manage, before counting maintenance/conflict-resolution hours.
- The flip: comparable monthly spend, one unified platform — image optimization, SEO, scheduling, CDN all included.
- One vendor. One bill. One thing to renew.
30Statement: Full Layout Control = Brand Drift The one-sentence summary of every comparison slide — the hard button before "here's how we build it."▶
"That's the whole case for change in one sentence. Every comparison slide we just walked through traces back to this." Use as the hard button before pivoting into the Flow.
The Flow
31The Flow (diagram) Two parallel tracks — design/content and code — meeting at Content Migration before launch gates. Slides 32–34 are zoom-ins of this same diagram.▶
- "Two tracks running in parallel instead of one long sequential chain."
- Design/content track: sitemap, wireframes, visual design system — where brand decisions live.
- Code track runs at the same time, not after — components get built while design is still being finalized, AI handling repetitive scaffolding under direct review.
- Both meet at "Content Migration" — written content, SEO, photography, video all come together before anything goes live.
- Then training, access setup, integrations, testing, final review — nothing launches without passing all of those gates.
The Action Plan
35Steps We Are Taking Five actions, each tied directly back to a named slide-8 stressor.▶
- New Website: Inform, prequalify, reinforce — direct answer to breakage and scope creep from slide 8.
- New Process: Claude/AI integrated into our own build pipeline, exactly as scoped on slides 13–14 — a real productivity layer with every output hand-checked.
- Start Meeting Decks: Every kickoff opens with a standardized deck reinforcing timeline and expectations — fix for "Slow Responses" and "Increased SOW."
- Presentation Decks: Prescriptive reviews (the "Be Prescriptive" commitment from slide 11) with a built-in place to log exceptions, so scope changes get priced in the room.
- Increased Support: 3-month post-launch retainer, creative services optional — direct fix for "Vendor vs. Partner."
Financial Impact
36Divider — Financial Impact Now let's put real numbers on everything just walked through.▶
37Adjusted Current Budget: Budget Savings $115.5K optimized vs $153K maxed out — lead with the number, then the reasoning, never bury it.▶
- "The plan we're proposing lands at roughly $115,500 — a 25% savings off where an unmanaged, scope-creeping version would land at $153,000."
- "$136,500 is what it costs if we just tighten scope management without changing process or stack — 11% savings from discipline alone."
- "The full 25% only shows up when the new process and the new stack are both in place — fixing symptoms vs. fixing the system."
- Website is the single biggest swing ($42K optimized vs $63K maxed out) — the new stack doing the heaviest lifting.
- "This isn't a discount story. Same quality bar, same deliverables — just without paying for the friction we spent the first half of this deck naming."
Close
38Thank You Close warm, callback to slide 2.▶
"We opened by thanking you for the partnership — everything in between was our way of showing we take that seriously enough to change how we work."
Appendix — How Day-to-Day Actually Works
iStaging vs. live in the new system No separate URL to remember — content edits have a built-in draft/publish state, and code changes get an automatic preview link.▶
Right now on WP Engine, a client gets a staging copy, makes changes there, then someone pushes those changes live once approved — and the whole thing depends on people remembering to use it, which doesn't always happen (slide 8).
The new system splits this into two layers, neither dependent on a client remembering a separate URL:
- Content edits (almost everything a client touches) — Storyblok has a built-in draft and publish state. A client edits a page, previews exactly how it'll look, and nothing changes on the real site until they hit Publish. The draft is the staging environment.
- Structural/code changes (Primer's work, not the client's) — every change goes through GitHub, and Netlify automatically spins up a temporary preview link before anything merges into the live site. Automatic, not something anyone has to remember to use.
Net effect: clients get a simpler, built-in version of what staging was supposed to do, and the riskier layer is locked into a review process they don't operate themselves.
iiCreating posts & managing a resource library Fill out a form and publish — same feel as WordPress, minus the ability to break the layout doing it.▶
- A "Resource" (or "Post") content type gets set up once during the build — title, summary, body, featured image, category, publish date, all defined up front.
- After that, adding a post is just filling out a form: click "New Story" inside the Resources folder in Storyblok, fill in the fields, publish — or save as a draft to review first.
- The listing page that shows all resources updates on its own, pulling live from Storyblok — a newly published post just shows up, no extra step to add it anywhere.
- The practical feel is close to WordPress's Posts screen. The difference: there's no layout to accidentally mess up while doing it.
iiiMigrating content from WordPress to Storyblok A one-time migration Primer handles as part of the build — not an ongoing client task.▶
- Existing content (blog posts, resource pages, etc.) gets pulled from WordPress via its REST API or a direct export, then mapped into Storyblok using Storyblok's own import tooling — a WordPress post becomes a matching Storyblok story with the same title, body, and images.
- Images and other media move into Storyblok's asset library as part of the same process; internal links get updated to match the new site's URLs.
- This happens as part of the build itself — the "Content Migration" stage in the Flow diagram on slide 31 — not a manual task for Lock 8.
Appendix — Glossary for Likely Questions