Brand Guardrails
Machine-readable rules that keep Ferni's voice human. Enforced by linters, pre-commit hooks, and AI assistants.
Language Rules
Words and phrases that define—or violate—the Ferni voice.
Forbidden Words
Critical (AI/Robot Terms)
Never remind users they're talking to software.
Corporate Jargon
Sound like a friend, not a consultant.
Dehumanizing Terms
You're talking to a person, not a "user".
Clinical Terms
Ferni is a friend, not a therapist.
Forbidden Phrases
Complete phrases that break the illusion of genuine connection.
Preferred Replacements
Brand Words
Words that embody the Ferni voice.
Color Rules
Color constraints to maintain brand consistency.
Forbidden Colors
Purples
Purple is not a Ferni brand color. It's overused in tech and AI.
Neons
Neon colors violate the earthy, warm brand.
Pure Black/White
Too stark. Use warm neutrals instead.
Enforcement Rules
Purple is not a Ferni brand color
Error - Blocks commitNeon colors violate the earthy, warm brand
Error - Blocks commitUse CSS variables instead of hardcoded hex values
WarningTypography Rules
Allowed Fonts
Forbidden Fonts
Body text should not be all caps
WarningLimit exclamation marks—never more than one
/!{2,}/
Error - Blocks commit
Accessibility Requirements
Non-negotiable accessibility standards.
Color Contrast (Normal Text)
Normal text must have 4.5:1 contrast ratio
Min: 4.5:1Color Contrast (Large Text)
Large text (18pt+) must have 3:1 contrast ratio
Min: 3:1Touch Targets
Interactive elements must be at least 44x44px
Min: 44pxFocus Visible
Focus states must be visible
RequiredReduced Motion
Respect prefers-reduced-motion
RequiredForbidden Patterns
Never use persona colors for text—they fail contrast
color: var(--persona-*)
Error - Blocks commit
Animation Constraints
Forbidden Animations
No infinite spinning animations
No blinking or flashing
Don't shake elements to indicate errors
Maximum Durations
Reduced Motion Fallbacks
Allowed in Reduced Motion
- opacity
- color
Forbidden in Reduced Motion
- transform
- scale
- rotate
- translateX
- translateY
Copywriting Rules
Headlines
- Max 10 words
- End with period
- No exclamation marks
- Sentence case
Body Text
- Max 20 words per sentence
- Prefer short sentences
- Active voice
- Second person ("you")
CTAs
- Max 3 words
- Verb first
- Examples: "Start talking", "Begin", "Meet Ferni"
Error Messages
- Blame the system, not the person
- Offer a solution
- Warm tone
"Hmm. Something's not working right. (That's on me, not you.)"
Brand Tests
Questions to ask before shipping any content.
Friend Test
"Would a real friend say this?"
Fails if: sounds robotic, corporate, or performative
Spoken Test
"Does this sound natural spoken aloud?"
Fails if: sounds awkward or stiff when read
Overselling Test
"Are we overselling ourselves?"
Fails if: makes claims we can't back up
Underselling Test
"Are we underselling ourselves?"
Fails if: uses "feels human" instead of "better than human"
Warmth Test
"Does this feel warm and inviting?"
Fails if: feels cold, clinical, or corporate
Simplicity Test
"Is this as simple as it could be?"
Fails if: has unnecessary elements or complexity
Enforcement
How these rules are automatically enforced.
Pre-commit Hook
Runs before every commit
CI Pipeline
Runs on every PR
Code Review Checklist
- No forbidden words or phrases
- All colors use CSS variables
- Accessibility requirements met
- Copy follows brand voice
- Animations respect reduced motion