🍪 COOKIE PREFERENCES

We use cookies and visitor tracking to improve your experience. We identify your company from your IP address using IP2Location and Hunter.io. High-confidence identifications (≥60%) are synced to our Notion CRM.

Essential cookies and visitor tracking are always enabled. You can customize analytics and marketing preferences below.

BRANDBOOK · v1.0 · 2026

STRATEGY IS FOLKLORE.I SHIP OPERATING SYSTEMS.

Source of truth for the MarketingUpgrade.pro brand. Refrain, POV, ICP, voice, color, typography, components, and entity graph in one document. Edit this file when any brand decision changes; everything else in the codebase should derive from here.

brandbook.marketingupgrade.proAuthor: Joris van HuëtUpdated: 2026-08-04
§01

THE REFRAIN

Always repeat

Strategy is folklore. I ship operating systems.

Seven words, two clauses. The first clause names the problem (consultant industry sells folklore). The second clause names the alternative (a working system, not a deck). Repeat this on every hero, every CTA exit, every footer strap, every OG image alt, every email subject A/B variant, and every sales reply until it is the first thing every prospect can recall about the brand.

POV — what we believe

Most marketing engagements are folklore: someone reads a deck back to a board, a retainer renews, and growth does not move. The alternative is a working marketing operating system the team owns after the engagement ends.

ICP — who we serve

€5M–€100M revenue businesses across six verticals (E-commerce, Financial Services, Indie Game Dev, B2B SaaS, Healthtech, Marketplaces). Stage: post-PMF, pre-Series C. Decision-maker: founder, CEO, or board chair.

Engagement shape

€5,000–€25,000/month, 3–12 months. 30-day exit clause. Operational from day one. Sprint, interim placement, or fractional ongoing — never a retainer-for-vibes.

Outcome we promise

A marketing function that runs without us by month nine: stack consolidated, channel mix reset, agentic workflows live, hiring plan executed, board reporting cadence in place.

§02

COLOR SYSTEM

Six brand colors. Two operational accents (neon green for action, neon purple for brand). Black foundation, off-white text. Three greys for hierarchy. Danger red only on legal/regulatory pages. Click a swatch to copy the hex.

Neon Green

#00ff00
oklch(0.87 0.3 142)

Primary action. CTAs, accents, success state, positive signal.

  • Use as the dominant accent on dark backgrounds.
  • Reserve for action and affirmation. Never on punitive copy.
  • Pair with glow (text-shadow 0 0 10px #00ff00) on hero surfaces only.

Neon Purple

#e386e9
oklch(0.68 0.17 330)

Brand primary. Borders, secondary accents, attention markers.

  • Use for category labels, eyebrows, hover states, attention pulls.
  • All dashed borders default to this color.
  • Never use as primary CTA fill (reserve green for that).

Pure Black

#000000
oklch(0 0 0)

Page background, foundation.

  • All pages start from #000.
  • Card surfaces shift up to #0a0a0a or oklch(0.1 0 0).
  • Never use as text color (white only).

Off-white

#f2f2f2
oklch(0.95 0 0)

Body text, primary readable content.

  • Default text color on every page.
  • Headings use pure white #ffffff for additional contrast.
  • Never use a warm white — keep neutral.

Grey 60

#999999
oklch(0.6 0 0)

Muted secondary text, captions, metadata.

  • Dates, byline metadata, tag chips, fine print.
  • Never use for body content.
  • Pair with text-xs / font-mono for fine print.

Grey 80

#cccccc
oklch(0.8 0 0)

Body copy on dark cards.

  • Use inside p tags within bordered cards.
  • Provides hierarchy below pure-white headings.

Danger Red

#ff0000
oklch(0.6 0.2 20)

Hard warning, destructive states, error borders.

  • Page-level top/bottom borders on Legal, Privacy, Cookies pages signal regulatory weight.
  • Never for general CTAs. Never for body copy.
§03

TYPOGRAPHY

Four typefaces. Display (Black Ops One) for every heading. Mono (Space Mono) for everything else. Hand (Permanent Marker) for one rotated accent per section. Sans (Space Grotesk) as the long-form fallback. Never use Google's default sans serifs.

BLACK OPS ONE

var(--font-display)
STRATEGY IS FOLKLORE.

All H1-H6. All hero text. ALL CAPS with 0.05em letter-spacing.

Weights: 400 (single weight)

SPACE MONO

var(--font-mono)
Enterprise interim CMO leadership across six verticals.

Body text, paragraphs, navigation, tags, code, fine print.

Weights: 400, 700 (regular + bold)

PERMANENT MARKER

var(--font-hand)
Operational from day one.

Pull quotes, slight rotation accents (.rotate-slight class), human moments. Use sparingly — max one per section.

Weights: 400

SPACE GROTESK

var(--font-sans)
Engagement starts at €5,000/month for channel execution.

Body fallback when Space Mono is too dense. Long-form articles.

Weights: 400, 500, 600, 700

§04

VOICE & TONE

Six rules. Apply to every surface — homepage hero, blog posts, CTA copy, email subject lines, social posts. Voice violations are the single most common brand drift; this section is the merge gate.

01

Two-clause structure

DO

Strategy is folklore. I ship operating systems.

DON'T

We deliver strategic, results-driven marketing transformation.

Why: Two short clauses are memorable. They survive translation, voice search, AEO snippet selection.

02

Use 'I', not 'we'

DO

I rebuilt the marketing function at WeTransfer.

DON'T

Our team rebuilt the marketing function at WeTransfer.

Why: Solo operator. 'We' fakes scale we don't have and is the #1 consultancy cliché.

03

Stat anchors, not adjectives

DO

B2C neobank CAC rose from €20-40 (2019) to €150-300 (2024).

DON'T

Acquisition costs have become more challenging.

Why: GEO/AEO favour content with verifiable statistics. LLMs cite numbers, not vibes.

04

Negative-negative-negative-positive cadence

DO

No 90-day onboarding. No PowerPoint. No retainer-for-vibes. Day-one impact.

DON'T

We focus on quick wins and long-term value delivery.

Why: Three negatives sharpen the contrast. One positive lands the punch. Rhythm matters.

05

Name brands, name regulators

DO

Compliant under AFM, DNB, MiCA, and DSA.

DON'T

Compliant with relevant European regulations.

Why: Specifics signal expertise. Vague signals consultancy.

06

Skip em-dashes

DO

Use a comma, a colon, or split the sentence.

DON'T

Em-dashes — they are inconsistent across keyboards.

Why: Phase 11.4 work-order policy. Em-dashes break GEO parsing in some pipelines.

§05

HERO PATTERN (THE FLETCH FOUR-LINE)

Every above-fold hero uses these four lines, in this order. Eyebrow names the category. H1 is the refrain. Sub places the offer in context. Eyebrow2 sharpens with three negatives and one positive.

EYEBROW — Category label
Interim CMO · €5K–€25K/month · NL/Benelux
H1 — Refrain (5-7 words, two clauses)

STRATEGY IS FOLKLORE. I SHIP OPERATING SYSTEMS.

SUB — Category + ICP + offer

Enterprise interim CMO leadership for €5M-€100M businesses across e-commerce, fintech, SaaS, healthtech, marketplaces, and indie games. Embedded from week one.

EYEBROW2 — Three negatives + one positive

NO 90-DAY ONBOARDING. NO POWERPOINT. NO RETAINER-FOR-VIBES. ONE OPERATOR, DAY-ONE IMPACT.

§06

COMPONENT VOCABULARY

The visual vocabulary of the TFS (Tactical Field Scrapbook / Brutalist) language. Every page mixes these six elements in some combination. Adding a new element requires updating this section first.

Dashed border card
border-2 border-[#00ff00] borderStyle:dashed

Primary container for any structured content (KPIs, stack lists, pricing tiers).

Sharp corners
border-radius: 0 (TFS --radius: 0rem)

All buttons, cards, inputs. Never round corners. Brutalist baseline.

Neon glow
textShadow: 0 0 10px <color> — usually 10-20px blur

Hero text, brand strap, critical accents. Reserve for ~1-2 surfaces per page.

Scanlines / CRT
repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,255,0,0.015) 2px, rgba(0,255,0,0.015) 4px)

Overlaid on hero sections as low-opacity ambient texture. Never on text.

Slight rotation
.rotate-slight (animation: wiggle 1s ease-in-out infinite)

Apply to font-hand accents (Permanent Marker). One per section max.

Tracking-widest ALL CAPS
text-xs tracking-widest uppercase — usually with font-black or font-display

Section eyebrows, category labels, badge/chip copy.

§07

LOGO & LOCKUP

MarketingUpgrade.pro logo
MARKETING UPGRADE

USAGE RULES

  • Wordmark + icon lockup is the default. Icon-only variant for favicon and PWA.
  • Wordmark renders in #00ff00 with neon glow (text-shadow 0 0 10px #00ff00) on dark backgrounds only.
  • Letter-spacing: 0.15em (tracking-widest). Font weight: font-black.
  • Never use the wordmark in lowercase. Never combine with other display fonts.
  • Favicon set: /favicon.ico, /favicon-192.png, /favicon-512.png (PWA maskable).
§08

CTA PATTERNS

Primary — green fill

For the primary conversion action on every page. One per surface. Always “Start an intake” or a refrain-flavoured variant. Never “Get in touch”, “Learn more”, or any passive CTA.

Secondary — green dashed outline

For the not-ready-yet visitor. Always leads to a content surface (verticals, blog, whitepaper, glossary). Never leads to a calendar or form.

§09

ENTITY GRAPH (SEO / AEO / GEO)

The brand operates as two linked schema.org entities: a Person (the operator) and an Organization (the brand). Both share a cross-referenced sameAs graph. Any new platform presence must be added to both arrays and shipped on the same commit.

Person
Joris van Huët
Enterprise Interim CMO & Marketing Leader
@id: https://www.marketingupgrade.pro/#person
sameAs
Organization
MarketingUpgrade.pro
Type: ProfessionalService + LocalBusiness
@id: https://www.marketingupgrade.pro/#organization
sameAs

When adding a new platform (e.g., Substack, Mastodon, Wikidata Q-number, YouTube channel), update: client/index.html Person.sameAs, client/index.html Organization.sameAs, client/index.html LocalBusiness.sameAs, /client/public/.well-known/agent.json, /client/public/humans.txt, /client/public/llms.txt, /client/public/llms-full.txt, AND this brandbook. All in one PR.

§10

SEO CHECKLIST (PER PAGE)

Every indexable page MUST satisfy this checklist. The seo:lint script enforces it in CI. Pages that fail are blocked from merge.

  • Exactly one <h1>, refrain-flavoured or page-specific.
  • <title> ≤60 chars, brand at end (| MarketingUpgrade.pro).
  • meta description 120-160 chars, with a concrete hook + implicit CTA.
  • Canonical URL: absolute, on www.
  • Open Graph + Twitter card tags (og:image min 1200×630).
  • Visible byline on every MOFU/BOFU page (Joris van Huët, Updated YYYY-MM-DD).
  • 3+ internal links out, 2+ internal links in from relevant pages.
  • One server-rendered CTA in initial HTML — no JS-only modals.
  • JSON-LD: BreadcrumbList + at least one page-specific schema (Article, Service, FAQPage, DefinedTerm).
  • Core content + internal links present in rendered HTML (verify with JS disabled).
§11

PRICING & ENGAGEMENT TIERS

Nine monthly tiers from €5,000 to €25,000. Each tier adds scope on top of the one below. The brandbook codifies them so quotations, contracts, blog CTAs, and vertical pages stay in sync.

€5,000Channel execution (paid media, CRM, content)
€7,500+ Campaign strategy & planning
€10,000+ Agentic workflow setup (AI agents)
€12,500+ Creative direction & brand guardianship
€15,000+ Agency & vendor management
€17,500+ Team coaching & upskilling
€20,000+ Hiring & team building
€22,500+ Board-level stakeholder reporting
€25,000Full interim CMO — orchestrates humans + AI agents
§12

FORBIDDEN — AUTO-REJECT ON SIGHT

  • Words: 'innovative', 'results-driven', 'world-class', 'best-in-class', 'cutting-edge', 'thought leader', 'synergy', 'unlock', 'unleash'.
  • Phrases: 'Trusted by [logos]' without proof. 'Get in touch.' 'Click here.' 'Learn more.'
  • Visuals: stock photography of a person on a laptop. Skyline hero shots. Generic blue corporate gradient.
  • Em-dashes ( — ). Use comma, colon, or sentence split.
  • Soft 'we' sentences with no ICP. If you cannot replace 'we' with 'I' or with the ICP name, the sentence is meaningless.
  • JS-only CTAs (modals, popups) without a server-rendered fallback link.
  • Generic Google sans serifs (Roboto, Open Sans, Lato). The TFS stack is fixed.
  • Rounded corners on buttons/cards. TFS --radius is 0.
  • Any color outside the seven brand colors. Adding a new color requires a brandbook update first.
§13

TINTS & SHADES — FULL SCALE

Every brand color exposes a 50-950 step scale for nuanced UI usage (hover states, alert backgrounds, gradient stops, data visualization). The 500 step is the canonical hex. Lower numbers are lighter; higher numbers are darker. Generated programmatically; OKLCH-tuned source of truth lives in client/src/index.css.

Neon Green · canonical #00ff00
50
#e6ffe6
100
#ccffcc
200
#99ff99
300
#66ff66
400
#33ff33
500
#00ff00
600
#00d900
700
#00b300
800
#008c00
900
#006600
950
#003800
Neon Purple · canonical #e386e9
50
#fcf3fd
100
#f9e7fb
200
#f4cff6
300
#eeb6f2
400
#e99eed
500
#e386e9
600
#c172c6
700
#9f5ea3
800
#7d4a80
900
#5b365d
950
#321d33
Grey (neutral) · canonical #999999
50
#f5f5f5
100
#ebebeb
200
#d6d6d6
300
#c2c2c2
400
#adadad
500
#999999
600
#828282
700
#6b6b6b
800
#545454
900
#3d3d3d
950
#222222
Danger Red · canonical #ff0000
50
#ffe6e6
100
#ffcccc
200
#ff9999
300
#ff6666
400
#ff3333
500
#ff0000
600
#d90000
700
#b30000
800
#8c0000
900
#660000
950
#380000
§14

CONTRAST MATRIX — WCAG 2.2 AA + AAA

Every brand-color foreground × background pairing measured against WCAG 2.2. AA threshold: 4.5:1 for normal text, 3:1 for large text (18pt regular or 14pt bold). AAA: 7:1 normal / 4.5:1 large. Pairings marked “Fail” must not be used for text. Use them for decorative-only surfaces (borders, dividers, icons with adjacent labels).

FG / BGBlackOff-whiteCard #0a0a0aCard #1a1a1a
White
21.00:1
N:AAA · L:AAA
1.12:1
N:Fail · L:Fail
19.80:1
N:AAA · L:AAA
17.40:1
N:AAA · L:AAA
Off-white
18.76:1
N:AAA · L:AAA
1.00:1
N:Fail · L:Fail
17.68:1
N:AAA · L:AAA
15.55:1
N:AAA · L:AAA
Grey 80
13.08:1
N:AAA · L:AAA
1.43:1
N:Fail · L:Fail
12.33:1
N:AAA · L:AAA
10.84:1
N:AAA · L:AAA
Grey 60
7.37:1
N:AAA · L:AAA
2.54:1
N:Fail · L:Fail
6.95:1
N:AA · L:AAA
6.11:1
N:AA · L:AAA
Neon Green
15.30:1
N:AAA · L:AAA
1.23:1
N:Fail · L:Fail
14.43:1
N:AAA · L:AAA
12.68:1
N:AAA · L:AAA
Neon Purple
8.85:1
N:AAA · L:AAA
2.12:1
N:Fail · L:Fail
8.35:1
N:AAA · L:AAA
7.34:1
N:AAA · L:AAA
Danger Red
5.25:1
N:AA · L:AAA
3.57:1
N:Fail · L:AA
4.95:1
N:AA · L:AAA
4.35:1
N:Fail · L:AA

N = normal text grade · L = large text grade. AAA = ideal, AA = minimum, Fail = decorative only.

§15

TYPE SCALE

The full responsive type ramp, mobile-first. All sizes use rem so they respect user font-size preferences. Line heights are tuned per step; display sizes are tight (0.9-1.1) while body sits at 1.6 for long-form readability.

TokenSize (rem)Size (px)Line-heightUse
display-xl5.625900.9Hero H1 desktop
display-lg4.5720.95Hero H1 tablet
display3.5561.0Hero H1 mobile / Section H2 desktop
h13.0481.05Section H2 mobile
h22.25361.1Subsection H3
h31.875301.15Card title
h41.5241.2Inline emphasis
lead1.25201.5Sub-hero / lede paragraph
body-lg1.125181.6Long-form blog body
body1.0161.6Default paragraph
body-sm0.875141.55Card body, FAQ
caption0.75121.5Meta, byline, fine print
mono-sm0.6875111.4Code, hex, technical refs
eyebrow0.625101.3All-caps tracking-widest
§16

SPACING SYSTEM (4PT GRID)

Everything in the layout uses 4px increments. Tailwind's default scale maps cleanly: spacing-1 = 4px, spacing-2 = 8px, spacing-4 = 16px. Component padding, gap, and margin must come from this scale. Adding a one-off value (e.g., 13px) requires a design-token RFC.

spacing-1 · 4px / 0.25rem
spacing-2 · 8px / 0.5rem
spacing-3 · 12px / 0.75rem
spacing-4 · 16px / 1rem
spacing-5 · 20px / 1.25rem
spacing-6 · 24px / 1.5rem
spacing-8 · 32px / 2rem
spacing-10 · 40px / 2.5rem
spacing-12 · 48px / 3rem
spacing-16 · 64px / 4rem
spacing-20 · 80px / 5rem
spacing-24 · 96px / 6rem
spacing-32 · 128px / 8rem
§17

ICONOGRAPHY

Lucide React. Stroke-based, single weight (1.5px at 24px size). Always pair with a text label for accessibility. Never use an icon alone as a button without an aria-label.

ArrowRight
CTA arrows
CheckCircle2
Affirmations
Download
Assets, PDF
Mail
Contact
Briefcase
CV, roles
FileText
Whitepaper
BookOpen
Blog
Home
Nav
AlertCircle
Errors, 404
ICONOGRAPHY RULES
  • › Always import from `lucide-react`. Never inline SVGs.
  • › Default size: w-4 h-4 (16px) inside buttons, w-5 h-5 (20px) inline, w-8 h-8 (32px) in feature cards.
  • › Color: inherit from text-current. Tint with text-[#00ff00] or text-[#e386e9] when used as a standalone icon.
  • › Adding a new icon family (e.g., Heroicons) is forbidden without a brandbook RFC.
§18

MOTION & ANIMATION

Motion serves communication, not decoration. Hero text uses staggered letter reveal with a cinematic ease curve. Scroll-driven parallax for hero sections only. Always respect prefers-reduced-motion.

ease-in-out-cinematic
cubic-bezier(0.25, 0.46, 0.45, 0.94)

Hero text reveal, section entrances, anything narrative

ease-out-snap
cubic-bezier(0.16, 1, 0.3, 1)

Button hover, popover entry, anything reactive

ease-linear
linear

Progress bars, scanline overlays, infinite loops only

wiggle
rotate(-3deg) → rotate(3deg), 1s loop

Permanent Marker accents, .rotate-slight class

duration-fast · 150ms · Hover, focus, micro
duration-base · 300ms · Entries, exits, defaults
duration-slow · 600ms · Hero text reveal
duration-cinematic · 1200ms · Page-load drama
stagger-letter · 80ms · Per-letter delay
stagger-word · 150ms · Per-word delay
Engine: GSAP (gsap.com)

Choreographed motion — entrances, count-ups, staggers, loops — is built with GSAP 3.15+ (free for commercial use since 3.13, all plugins included). Gesture-bound motion that tracks a pointer or spring-physics UI state (card tilt, flip, drag) stays on framer-motion. One engine per job; never both on the same property of the same element.

Scope + revert

Every page wraps its tweens in gsap.context(() => {...}, rootRef) and returns ctx.revert() on unmount. No global selectors, no leaked tweens.

.from() only for entrances

Markup renders the FINAL state (SEO- and no-JS-safe); gsap.from() animates toward it. prefers-reduced-motion? Skip the whole context — the DOM is already correct.

Eases

back.out(1.4) for hero/card entrances · power2.out for reveals & counters · power3.out for bars/meters · power2.inOut for loops (sheens, sweeps).

Counters & staggers

Number count-ups: gsap.from with innerText: 0 + snap. Grid staggers 0.08–0.12s. Loops repeat with repeatDelay ≥ 6s — ambience, not noise.

useLayoutEffect(() => { if (matchMedia("(prefers-reduced-motion: reduce)").matches) return; const ctx = gsap.context(() => { gsap.from(".hero-card", { autoAlpha: 0, y: 48, scale: 0.92, duration: 1, ease: "back.out(1.4)" }); gsap.from(".stat-num", { innerText: 0, snap: { innerText: 1 }, duration: 1.5, ease: "power2.out", stagger: 0.09 }); gsap.from(".stat-bar", { scaleX: 0, transformOrigin: "0% 50%", duration: 1.1, ease: "power3.out", stagger: 0.09 }); }, pageRef); return () => ctx.revert(); }, []);

Reference implementation: fifacv.marketingupgrade.pro — entrance swing, stat count-ups, bar fills, below-fold reveals, and an 8-second sheen loop, all in one reverted context.

§19

ACCESSIBILITY — WCAG 2.2 AA TARGET

Every shipped page must meet WCAG 2.2 Level AA. We do not target AAA at color, because the brand palette is built on saturated neon — but we hit AAA on text-on-card pairings (white on #0a0a0a) which is where the long-form content lives.

1.1.1
Non-text content
All images have meaningful alt text or alt="" if decorative.
1.3.1
Info and relationships
Use <main>, <nav>, <section>, <article> semantic landmarks. Never <div> a heading.
1.4.3
Contrast (minimum)
All body text passes 4.5:1. See §14 matrix.
1.4.10
Reflow
Single-column reflow at 320px width without horizontal scroll.
1.4.11
Non-text contrast
Borders and focus indicators ≥3:1 against background.
2.1.1
Keyboard
Every interactive element reachable by Tab. No keyboard traps.
2.4.7
Focus visible
Focus ring uses --ring (neon purple), never removed in CSS.
2.5.5
Target size
Min 44×44px tap targets for all CTAs and nav links.
3.1.1
Language
<html lang="en"> set; per-page lang attribute when content differs.
3.3.2
Labels or instructions
Every form input has a visible label, never placeholder-as-label.
4.1.2
Name, role, value
Custom components use ARIA appropriately. Test with VoiceOver / NVDA.
§20

DESIGN TOKENS — EXPORT

Canonical token export. CSS variables (drop into any project), Tailwind config snippet, and a JSON payload for Figma / Style Dictionary. Source of truth: client/src/index.css. When tokens change, update there first, then this brandbook.

CSS variables
:root {
  /* color */
  --green-500: #00ff00;
  --purple-500: #e386e9;
  --red-500: #ff0000;
  --white: #ffffff;
  --off-white: #f2f2f2;
  --grey-50: #f0f0f0;
  --grey-60: #999999;
  --grey-80: #cccccc;
  --bg-base: #000000;
  --bg-card: #0a0a0a;

  /* fonts */
  --font-display: "Black Ops One", system-ui;
  --font-mono: "Space Mono", monospace;
  --font-hand: "Permanent Marker", cursive;
  --font-sans: "Space Grotesk", system-ui, sans-serif;

  /* radius */
  --radius: 0;

  /* motion */
  --ease-cinematic: cubic-bezier(.25,.46,.45,.94);
  --ease-snap: cubic-bezier(.16,1,.3,1);
  --duration-fast: 150ms;
  --duration-base: 300ms;
  --duration-slow: 600ms;
}
JSON (Style Dictionary)
{
  "color": {
    "green":   { "500": "#00ff00" },
    "purple":  { "500": "#e386e9" },
    "red":     { "500": "#ff0000" },
    "neutral": {
      "0":   "#000000",
      "10":  "#0a0a0a",
      "60":  "#999999",
      "80":  "#cccccc",
      "95":  "#f2f2f2",
      "100": "#ffffff"
    }
  },
  "font": {
    "display": "Black Ops One",
    "mono":    "Space Mono",
    "hand":    "Permanent Marker",
    "sans":    "Space Grotesk"
  },
  "radius": { "default": 0 },
  "motion": {
    "ease": {
      "cinematic": "cubic-bezier(.25,.46,.45,.94)",
      "snap":      "cubic-bezier(.16,1,.3,1)"
    },
    "duration": {
      "fast":  "150ms",
      "base":  "300ms",
      "slow":  "600ms"
    }
  }
}
§22

GOVERNANCE — HOW TO CHANGE ANYTHING

The brandbook is the source of truth. Changes to colors, typography, voice, or component vocabulary require a documented RFC. Quick fixes (typos, formatting) can ship freely.

LEVEL 1 — EDITORIAL

Examples: Fixing a typo, updating an asset URL, adding a new entry to an existing list.

Process: Open PR, merge after self-review. No external sign-off.

LEVEL 2 — TOKEN EXTENSION

Examples: Adding a new shade step to an existing color scale. Adding a new icon to the library. Adding a new spacing token.

Process: Open PR with rationale + 2 example use cases. Merge after 1 reviewer approves.

LEVEL 3 — NEW TOKEN OR COMPONENT

Examples: Adding a new brand color. Adding a new typeface. Adding a new component pattern. Adding a new voice rule.

Process: Open RFC issue first. 7-day comment window. Implement only if no veto. Update brandbook + every reference in the codebase in the same PR.

LEVEL 4 — REFRAIN / POV / ICP CHANGE

Examples: Changing the refrain. Changing the ICP. Changing the POV.

Process: Synchronous workshop with the operator + a trusted external advisor. Cannot be done in a PR alone.

§23

CHANGELOG

v1.0.02026-06-15

Initial publication. Refrain locked: 'Strategy is folklore. I ship operating systems.' ICP: stay broad across six verticals. Brand graph (Person + Organization + LocalBusiness) cross-references LinkedIn, Reddit, and Interactive CV subdomain.