Better Than Perfect
A full premium brand system for real conversations about imperfect relationships: visual identity, voice, website, photography, motion, audio, social profiles, and governance.
Rendered V2.2 Plates
Visual evidenceThe v2.2 guide includes actual design plates, not only written direction. These assets are relative to this rich guide and can be used as implementation references.



















Better Than Perfect Podcast Brand Guide v2.2
Version: 2.2
Owner: Echo / Better Than Perfect production system
Canonical status: Source of truth for BTP social templates, weekly automation, and creative QA
Last updated: 2026-07-08
How To Read This Guide
Every section is marked as either LOCKED or PROPOSED.
LOCKED means John has already approved the direction in production or the value is implemented in code. Treat it as law. Do not change it without John's approval and a fidelity check against approved references.
PROPOSED means this is the v2 strategic or creative recommendation. It is written to be used immediately, but it should be reviewed by John before being treated as final brand doctrine.
1. Brand Foundation
Status: PROPOSED
Positioning Statement
Better Than Perfect is a relationship podcast for people who are done pretending that love, healing, dating, and self-work are clean or linear. It sits in the space between soft therapy-speak and cynical dating content: honest enough to sting, warm enough to be useful, and practical enough to help someone make a better decision this week.
Core Promise
Real conversations about imperfect relationships, so listeners can stop performing "fine" and start telling the truth about what they want, what hurt them, and what they are ready for next.
Audience
Primary audience:
- Adults navigating dating, breakups, attachment patterns, relationship repair, personal growth, and emotional honesty.
- Social audience is mixed, with a female-leaning visual and emotional preference based on the approved shift toward softer, editorial, rose-gold and wine treatments.
- Listeners want relationship advice that feels direct, not clinical; emotionally aware, not fragile; and candid, not performative.
Secondary audience:
- People adjacent to the relationship moment: friends forwarding a post, partners trying to understand conflict, and fans of personal growth content who dislike preachy guru energy.
Brand Personality
- Candid: Says the thing people are avoiding, without cruelty.
- Warm: Lets honesty land without shaming the listener.
- Premium: Feels editorial, composed, and intentional rather than trend-chasing.
- Provocative: Creates enough tension to earn saves, shares, comments, and disagreement.
- Grounded: Uses plain language and lived patterns instead of over-clinical diagnosis.
Values
- Truth over performance: Better Than Perfect should never reward looking healed more than being honest.
- Depth without fog: Emotional nuance is welcome; vague self-help language is not.
- Responsibility without blame: The show can challenge listeners without turning pain into moral failure.
- Human over polished: The brand should feel edited, not sanitized.
- Useful conflict: A strong take is good when it helps a listener see a pattern more clearly.
Competitive Tone Positioning
BTP is the honest middle.
Against therapy-speak accounts:
- Avoid: "Hold compassionate space for your relational activation."
- Prefer: "If they came back tomorrow, you'd answer. Be honest about that."
Against cynical red-pill / gender-war content:
- Avoid: "Never trust anyone. Dating is a market."
- Prefer: "Do not use another person to avoid grieving the last one."
Against generic inspirational relationship pages:
- Avoid: "You deserve love. Keep shining."
- Prefer: "You may want love and still not be ready to date."
2. Verbal Identity
Voice status: LOCKED as provocative, real, never preachy.
Execution details: PROPOSED, except where pulled from the weekly skill.
Voice Pillars
Provocative
The brand should make a viewer pause, save, share, or argue. The take should be defensible from the episode, not inflammatory for its own sake.
Do:
- "Most people do not want a partner. They want a rescue."
- "Dating too soon can turn someone new into emotional anesthesia."
Do not:
- "Everyone is toxic now."
- "Modern dating is broken and nobody is loyal."
Real
The language should sound like something a thoughtful person would actually say out loud.
Do:
- "If they came back tomorrow, you'd answer."
- "No new person gets a clean first chance when you are still comparing them to your ex."
Do not:
- "Your unresolved relational trauma may be informing maladaptive partner selection."
- "Your inner child needs a new container."
Never Preachy
BTP can challenge a listener, but it should not talk down to them. The best lines feel like an uncomfortable mirror, not a lecture.
Do:
- "Be honest before you reopen the door."
- "You may not be ready yet. That is not a failure."
Do not:
- "You need to heal before you deserve a relationship."
- "If you do this, you are the problem."
Tone By Context
| Context | Tone | Rule |
|---|---|---|
| Episode titles | Searchable, direct, emotionally specific | Lead with the problem or pattern. Avoid clever-only titles. |
| Carousel covers | Editorial, second-person, high-stakes | Numbered signs, patterns, mistakes, or questions. |
| Sign slides | Intimate and blunt | One sharp headline, one clarifying body beat. |
| Quote graphics | Reflective and saveable | Use speech-like lines, not slogans. |
| Question posts | Direct and commentable | Ask the question people can answer from lived experience. |
| Hot takes | Contrarian but humane | Remove hedging. Keep the claim defensible. |
| Captions | Short, concrete, CTA-driven | Hook, context, CTA, hashtags. |
| Comments | Conversational and warm | Ask one question. Do not over-explain. |
| YouTube descriptions | Useful and searchable | Include episode links when known and music attribution when required. |
Title Formulas
- "5 signs you're not ready to date again"
- "Why dating feels so hard after a breakup"
- "Are you actually ready to date again?"
- "The pattern you keep calling chemistry"
- "When missing them becomes the excuse"
- "What to do before you reopen the door"
Preferred structures:
- Numbered signs: "5 signs you're..."
- Direct second-person questions: "Are you actually..."
- Pattern naming: "The pattern you keep..."
- Emotional contrast: "Ready vs. lonely"
- Search-led phrasing: "How to know if..."
Words And Phrases To Avoid
Avoid over-clinical jargon unless the episode itself explains it plainly:
- activation
- dysregulation
- relational container
- trauma response, when used as a vague catch-all
- anxious/avoidant as identity labels without context
- narcissist, toxic, gaslighting, unless the episode specifically supports the term
Avoid hedging in hot takes:
- maybe
- might
- sometimes
- probably
- could
- sort of
- kind of
Avoid moralizing:
- should be ashamed
- you deserve this because
- real men / real women
- high value / low value
Avoid empty self-help:
- choose yourself
- protect your peace
- you are enough
- everything happens for a reason
Caption Formula
Status: LOCKED from btp-social-weekly.
Every caption follows:
- Hook line.
- One or two short context sentences.
- CTA.
- Hashtags.
Rules:
- Instagram first line: 125 characters or fewer.
- TikTok: 80-180 characters before hashtags, front-load the point.
- Facebook: 1-3 short sentences; links may be included.
- YouTube Shorts: include episode links when known; include Kevin MacLeod attribution for slideshow Shorts using "Almost in F".
- Do not put YouTube or Spotify URLs in Instagram captions; use "Full episode link in bio."
- If a link is unknown, omit it. Never fabricate.
Standard hashtags:
- Use 3-5 from:
#BetterThanPerfect,#RelationshipPodcast,#DatingAdvice,#RelationshipAdvice,#HealingAfterBreakup. - Add exactly 2 episode-specific hashtags based on the topic.
- Avoid policy-risky or explicit hashtags.
3. Visual Identity
Status: LOCKED
The approved system is V5 Midnight Rose: dark editorial backgrounds, white logo, and rose-gold accent elements, Baskerville display typography, Georgia supporting copy, Avenir Next letterspaced caps, ghost numerals/glyphs, and weekly navy/wine alternation.
Color System
Weekly Alternation
Status: LOCKED
Each episode week uses exactly one scheme across every generated asset. Do not mix navy and wine inside one episode's weekly pack.
Rule:
- Episode week A: navy
- Episode week B: wine
- Next episode: flip back
The live state file tracks the next scheme at:
/Users/navi/clawd/agents/echo/vault/07_episodes/social-state.json
Shared Colors
| Token | HEX | RGB | Role |
|---|---|---|---|
| Ivory | #F4F0E8 |
rgb(244, 240, 232) |
Primary headline text on dark backgrounds |
| Rose Gold | #E3B7A0 |
rgb(227, 183, 160) |
Accent-only: dividers, progress fill, kickers, prompts, small text accents |
Navy Scheme
| Token | HEX | RGB | Role |
|---|---|---|---|
| Navy gradient top | #0A1A30 |
rgb(10, 26, 48) |
Background top |
| Navy gradient bottom | #040C1A |
rgb(4, 12, 26) |
Background bottom |
| Navy glow | #5A4650 |
rgb(90, 70, 80) |
Vignette glow overlay |
| Navy ghost numeral | #343E54 |
rgb(52, 62, 84) |
Low-contrast numerals and glyphs |
| Navy body | #B9B9BE |
rgb(185, 185, 190) |
Sign body copy |
| Navy muted | #B4A096 |
rgb(180, 160, 150) |
Cover swipe text |
| Navy progress track | #263044 |
rgb(38, 48, 68) |
Footer progress bar background |
| Navy footer | #AAA5A0 |
rgb(170, 165, 160) |
Footer text |
Wine Scheme
| Token | HEX | RGB | Role |
|---|---|---|---|
| Wine gradient top | #3B0A1E |
rgb(59, 10, 30) |
Background top |
| Wine gradient bottom | #1E0510 |
rgb(30, 5, 16) |
Background bottom |
| Wine glow | #782D3C |
rgb(120, 45, 60) |
Vignette glow overlay |
| Wine ghost numeral | #68283A |
rgb(104, 40, 58) |
Low-contrast numerals and glyphs |
| Wine body | #D2B6AF |
rgb(210, 182, 175) |
Sign body copy |
| Wine muted | #C8A096 |
rgb(200, 160, 150) |
Cover swipe text |
| Wine progress track | #521C2C |
rgb(82, 28, 44) |
Footer progress bar background |
| Wine footer | #C39E94 |
rgb(195, 158, 148) |
Footer text |
Typography
Status: LOCKED
No third-party web fonts are required. Production rendering uses macOS system fonts.
| Use | Typeface | Size at 1080x1350 | Treatment |
|---|---|---|---|
| Cover headline | Baskerville | 112 pt | Centered, ivory, line step 145 px |
| Sign slide headline | Baskerville | 90 pt | Left aligned, ivory, line step 118 px |
| Recap / CTA headline | Baskerville | 90 pt base | Fit down only when necessary |
| Quote body | Baskerville Italic | 88 pt base | Centered; fit down to 56 pt if needed |
| Question body | Baskerville | 88 pt base | Centered; fit down to 56 pt if needed |
| Hot take body | Baskerville | 92 pt base | Centered; fit down to 58 pt if needed |
| Sign body | Georgia | 40 pt | Left aligned, line step 58 px |
| CTA body | Georgia | 40 pt | Centered |
| Cover subtitle | Georgia Italic | 38 pt | Centered, rose gold |
| Question prompt | Georgia Italic | 40 pt | Centered, rose gold |
| Cover swipe | Georgia Italic | 34 pt | Centered near bottom |
| Kickers | Avenir Next Medium | 26 pt | Letterspaced caps, 8 px tracking |
| Hot take kicker | Avenir Next Medium | 30 pt | Letterspaced caps, 10 px tracking |
| Footer | Avenir Next Medium | 22 pt | Letterspaced caps, 6 px tracking |
| Audiogram captions | Avenir Next | 60 pt | Ivory with black stroke |
Logo System
Status: LOCKED
Treatment:
- Use the current Better Than Perfect logo with the white background removed.
- On dark templates, render the logo pure white
#FFFFFF; rose gold#E3B7A0is accent-only for dividers, kickers, prompts, progress fill, and small text accents. - Cover slide logo: 150 px, centered at
x=540,y=195. - Sign slide logo: 110 px, centered at
x=960,y=120. - Question card logo: 140 px, centered at
x=540,y=185. - Quote card logo: 110 px, centered below the quote block.
- Audiogram logo: 135 px, centered at
x=540,y=185.
Clear space:
- Maintain at least one logo-mark width around the logo when possible.
- Never let body text, ghost glyphs, or frame lines touch the mark.
Minimum size:
- Feed graphics: never below 90 px.
- Video/audiogram: never below 110 px.
- Small UI/documentation thumbnails may scale below this only as previews, never as production creative.
Misuse rules:
- Never stretch, skew, crop, or rotate the logo.
- Never recolor it away from pure white on brand backgrounds; rose gold is no longer a logo tint.
- Never place it on busy photography without a dark overlay.
- Never restore the white box background on dark templates.
- Never use off-brand shadows, bevels, glows, or sticker outlines.
Signature Motifs
Status: LOCKED
- Ghost numerals and glyphs: Giant low-contrast Baskerville numerals or punctuation behind content. Sign numeral is 300 pt at
(84, 150). Quote glyph is 420 pt at(70, 90). Question mark is 460 pt at(825, 420)with transparency. - Letterspaced kickers: Avenir Next Medium caps with 8-10 px tracking.
- Accent dividers: Rose-gold 3 px horizontal lines, usually 120-156 px wide.
- Progress footer: 6 px bar from
x=90tox=990, placed aty=1244-1250, with rose-gold fill showing slide progress. - Film grain:
Image.effect_noisewith alpha 8, subtle only. - Vignette glows: Blurred ellipses in upper-right and lower-left, using each scheme's glow color.
- Generous margins: Primary feed graphics use a 90 px left/right margin on 1080 px width.
- No border frames on carousel slides: The rejected rehearsal added frame-like decoration. The approved carousel does not.
4. Photography & Imagery
Status: PROPOSED
Direction
BTP photography should look like real relationship conversations captured with editorial restraint. Think warm, candid, emotionally present, and human. The viewer should feel close to a true conversation, not a staged stock shoot.
Host And Episode Photography
Use:
- Candid expressions between thoughts.
- Seated conversational compositions.
- Warm interiors, soft natural light, evening lamps, or studio light that feels like a room.
- Medium-close frames where eyes, hands, and posture carry emotion.
- Negative space that can hold type when needed.
- Imperfect but intentional moments: a pause, a half-smile, a direct look, a leaned-in reaction.
Avoid:
- Harsh direct flash.
- Clinical white backgrounds.
- Generic stock couples.
- Podcast cliches: oversized headphones as the hero, thumbs-up poses, fake laughing at microphones.
- Overly glossy influencer portraits.
- Busy backgrounds behind text.
- Visuals that feel like therapy brochures.
Lighting And Grade
- Soft directional key light.
- Warm shadows, not orange shadows.
- Slightly desaturated warm tones.
- Deep enough blacks to sit beside navy and wine templates.
- Skin should remain natural; do not push everything into a red or brown cast.
Photography With Templates
When text sits on photography:
- Apply a dark navy or wine overlay before setting type.
- Preserve the rose-gold accent system.
- Use Baskerville for the main statement and Avenir Next for the kicker.
- Keep text in open negative space; do not float it over faces.
- If the image cannot support 90 px margins and clean readability, choose a different image.
5. Content Systems
Status: LOCKED
Weekly Cadence
| Day | Asset | Status | Purpose |
|---|---|---|---|
| Friday | Generate and preview full pack | LOCKED | One approval moment for the week |
| Monday | Carousel + slideshow Short | LOCKED | Main educational/social save asset |
| Wednesday | Quote graphic | LOCKED | Emotional save/share post |
| Thursday | Hot take graphic | LOCKED | Comment and share driver |
| Saturday | Question of the week | LOCKED | Direct engagement post |
| Gap days | Audiograms and editor clips | LOCKED | Keep feed active; fill around editor deliveries |
| Tuesday | Clip gap check | LOCKED | Flag missing editor clips early |
Carousel
Status: LOCKED
Format: 8 slides, 1080x1350.
Purpose: Turn the episode into a saveable, searchable relationship framework.
Structure:
- Cover
- Sign 01
- Sign 02
- Sign 03
- Sign 04
- Sign 05
- Recap
- CTA
Key geometry:
- Cover logo: 150 px at center
y=195. - Cover kicker:
BETTER THAN PERFECT ยท EP. Naty=295. - Cover headline: Baskerville 112 pt, starts
y=460. - Sign kicker:
SIGNat(90, 100). - Sign ghost number: Baskerville 300 pt at
(84, 150). - Sign headline: Baskerville 90 pt, starts
y=560. - Sign body: Georgia 40 pt, starts after headline.
- Footer progress bar and footer text on all non-cover carousel slides.
Quote Graphic
Status: LOCKED
Format: 1080x1350.
Purpose: Pull the most saveable emotional line from the episode.
Rules:
- Verbatim or lightly trimmed transcript line.
- Max 20 words.
- 2-4 visual lines.
- Baskerville Italic body.
- Ghost quotation mark.
- Footer and centered logo.
Question Of The Week
Status: LOCKED
Format: 1080x1350.
Purpose: Turn the episode's central tension into comments.
Rules:
- Direct second-person question.
- Max 15 words.
- 2-3 visual lines.
- Prompt line: "Tell us in the comments." unless there is a stronger episode-specific prompt.
- Ghost question mark.
Hot Take
Status: LOCKED
Format: 1080x1350.
Purpose: Create a defensible argument people want to agree with or challenge.
Rules:
- Most contrarian supported claim from the transcript.
- Statement form, not question form.
- Max 14 words.
- No hedging words.
- Same dark template system.
- Uses a thin rose-gold frame in the current renderer.
Note: the carousel itself must not use border frames. The hot-take card has a deliberate frame treatment in make_single.py.
Audiogram Short
Status: LOCKED
Format: 1080x1920.
Purpose: Create editor-independent Shorts from the strongest audio-only moments.
Rules:
- Segment length: minimum 25 seconds; target 30-60 seconds.
- Hook starts in first 5 seconds.
- Segment is understandable without surrounding context.
- Uses original episode or clip audio.
- Waveform and captions must be readable in the bottom third.
- Title max 55 characters.
Key geometry:
- Logo 135 px at
y=185. - Kicker at
y=300. - Baskerville title starts around
y=430. - "listen to this moment" Georgia Italic at
y=690. - Waveform panel from
(100, 1100)to(980, 1730). - Footer at bottom left.
Slideshow Short
Status: LOCKED
Format: 1080x1920.
Purpose: Turn the carousel into a vertical motion asset for Shorts/Reels/TikTok.
Rules:
- Uses the 8 carousel slides.
- Slides are scaled to 1080x1350 and padded into 1080x1920 with vertical offset.
- Durations: 4.0, 4.5, 4.5, 4.5, 4.5, 4.5, 4.0, 5.0 seconds.
- Crossfade: 0.6 seconds.
- FPS: 30.
- Default music: Kevin MacLeod, "Almost in F".
6. Application Rules
Status: LOCKED where practiced
Platform Specs
| Asset | Size | Platforms |
|---|---|---|
| Carousels | 1080x1350 | Instagram, Facebook, TikTok photo carousel where supported |
| Quote / question / hot take | 1080x1350 | Instagram, Facebook, TikTok photo posts where supported |
| Slideshow Short | 1080x1920 | YouTube Shorts, TikTok, Instagram Reels |
| Audiogram Short | 1080x1920 | YouTube Shorts, TikTok, Instagram Reels |
Approval Gate
Status: LOCKED
Nothing posts or schedules without John's explicit approval of that exact preview batch.
Approval covers:
- Assets shown in the preview.
- Captions.
- First comments.
- Schedule.
- Platforms.
Approval does not automatically approve future weeks.
Music And Attribution
Status: LOCKED
The slideshow Short uses:
/Users/navi/clawd/agents/echo/skills/btp-social-weekly/assets/music_Almost_in_F.mp3
Attribution block required in every YouTube description for slideshow Shorts using that track:
Music: "Almost in F" by Kevin MacLeod
Licensed under Creative Commons: By Attribution 4.0 License
https://creativecommons.org/licenses/by/4.0/
Source: https://incompetech.com/music/royalty-free/index.html?isrc=USUAN1100394
Audiograms use original episode/clip audio and do not add background music unless John approves a new format.
Pinned First Comments
Status: LOCKED
Every post gets a first-comment question when the platform supports it.
Rules:
- One sentence.
- Max 110 characters.
- No hashtags.
- No emojis.
- No links.
Formulas:
| Piece | Formula | Example |
|---|---|---|
| Carousel | Ask which sign hit home | "Which one hit home? 1-5 below." |
| Slideshow Short | Ask the main readiness question | "Which sign is hardest to admit?" |
| Quote | Ask agree/disagree | "Agree or disagree?" |
| Hot take | Invite challenge | "Am I wrong?" |
| Question post | Restate the question | "Are you actually ready to date again?" |
| Audiogram | Ask about the moment's core claim | "Have you ever used dating as a distraction?" |
| Clip | Ask about the specific claim in the clip | "Have you seen this pattern in dating?" |
Platform support:
- Instagram:
platformSpecificData.firstCommentsupported for feed, reels, carousels. - Facebook:
platformSpecificData.firstCommentsupported for feed posts. - YouTube: first comment can be posted/pinned for Shorts through the YouTube flow.
- TikTok: no reliable documented first-comment support in current Zernio docs; store and flag manual/browser parity if needed.
Hashtag Standards
Status: LOCKED
Use 3-5 standard hashtags from:
#BetterThanPerfect#RelationshipPodcast#DatingAdvice#RelationshipAdvice#HealingAfterBreakup
Add exactly 2 episode-specific hashtags based on the topic.
Avoid policy-risky or explicit hashtags.
7. Governance
Status: LOCKED
Source Of Truth
This brand guide is the source of truth for:
- Visual identity.
- Social template rules.
- Brand voice.
- Template QA.
- Weekly automation decisions.
Canonical markdown source:
/Users/navi/clawd/agents/echo/vault/01_brand/btp-brand-guide.md
Rich HTML reading copy:
/Users/navi/clawd/shared/rich-replies/r/btp-brand-guide/index.html
Change Control
Template changes require:
- John's approval of the proposed change.
- Update this brand guide.
- Update the relevant renderer/script.
- Run a fidelity check against approved reference images.
- Generate a side-by-side proof before production use.
Fidelity References
Approved reference assets:
- Navy cover:
media/ep136-carousel/variants/v5_navy_cover.png - Navy sign:
media/ep136-carousel/variants/v5_navy_sign.png - Wine cover:
media/ep136-carousel/variants/v5_wine_cover.png - Wine sign:
media/ep136-carousel/variants/v5_wine_sign.png
Any future renderer must preserve the approved geometry, typography, palette, logo treatment, and spacing.
State Tracking
Status: LOCKED
The navy/wine alternation and weekly item statuses are tracked in:
/Users/navi/clawd/agents/echo/vault/07_episodes/social-state.json
Do not hand-flip the scheme casually. Production runs write the scheme once per episode and then flip next_scheme for the following episode.
Versioning
This guide is versioned in the Echo vault. Long-term changes should be noted in daily memory with a pointer, not pasted into MEMORY.md.
v2.2 Changelog
- Rolled the BTP logo to pure white across production social templates and brand-background usage.
- Demoted rose gold to accent-only: episode lines, dividers, prompts, progress fills, and small text accents stay rose gold.
- Regenerated
audiogram_frame.pngwith the white logo and updated every rendered guide plate that contains the BTP logo to use the pure-white lockup.
v2.1 Changelog
- Fixed the audiogram and website logo rendering with a reusable transparent logo asset that preserves source aspect ratio.
- Added printed brand-book graphical plates for color, type, logo usage, template anatomy, grid, motifs, and website UI components.
- Added logo zoom evidence plate for future fidelity checks.
v2.0 Changelog
Status: LOCKED as guide history.
- Fixed the audiogram logo treatment: the production renderer now removes the JPEG white field softly, crops the live mark, preserves logo aspect ratio, and downscales with LANCZOS instead of squeezing the mark into a square.
- Expanded the guide from a social-template guide into a fuller brand system: website design, photography/color grading, LUT, motion, audio identity, social profile kit, brand architecture, and asset governance.
- Added rendered plates: website homepage mockup, social avatar, highlight covers, 3x3 social grid rhythm, photography/LUT comparison, and refreshed audiogram frame.
- Added
BTP-Warm.cubeas a working LUT asset in both the public guide assets folder and the Echo vault.
8. Website Design System
Status: PROPOSED
Strategic Role
The website should feel like the permanent home of Better Than Perfect, not a generic podcast archive. It should be dark-first, emotionally direct, and editorial: a place to listen, browse episodes, subscribe, and understand the promise of the show in under ten seconds.
Web Palette
| Token | HEX | Usage |
|---|---|---|
--btp-navy-900 |
#040C1A |
Page background, footer, dark cards |
--btp-navy-800 |
#0A1A30 |
Hero gradient top, section bands |
--btp-navy-700 |
#111E33 |
Episode cards, audio player bar |
--btp-wine-800 |
#3B0A1E |
Newsletter block, feature accents, wine-week modules |
--btp-rose |
#E3B7A0 |
Primary buttons, links, focus rings, dividers |
--btp-ivory |
#F4F0E8 |
Primary text on dark |
--btp-muted |
#CFC4BC |
Secondary body text |
--btp-line |
rgba(227,183,160,.28) |
Hairlines, card borders |
Typography
Status: PROPOSED for web implementation, derived from locked social typography.
Display stack: Baskerville, "Playfair Display", Georgia, serif.
Body stack: Georgia, "Times New Roman", serif.
UI stack: "Avenir Next", Avenir, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif.
| Level | Size | Line height | Use |
|---|---|---|---|
| Display XL | 3.5rem mobile / 6.75rem desktop |
.96 |
Homepage hero headline |
| H1 | 3.5rem |
1.0 |
Episode page title |
| H2 | 2.25rem |
1.08 |
Section titles |
| H3 | 1.5rem |
1.18 |
Card titles, subheads |
| Body large | 1.125rem |
1.55 |
Lead paragraphs |
| Body | 1rem |
1.6 |
Standard copy |
| Kicker | .75rem |
1.2 |
Avenir caps, .18em letter spacing |
Rules:
- Do not scale type directly with viewport width. Use breakpoint steps and
clamp()only where min/max are explicit. - Never use negative letter spacing.
- Keep body copy at
65-78characters per line. - H1/H2 text should retain a human editorial pace: 2-4 lines is acceptable; single-line cleverness is not required.
Components
Navigation Bar
- Height:
84pxdesktop,68pxmobile. - Background:
rgba(4,12,26,.92)with optionalbackdrop-filter: blur(12px). - Left: pure-white logo, max width
170px, with24pxclear space. - Links: Avenir Next Medium,
12px, uppercase,0.16emtracking, ivory at 78% opacity; hover/focus rose-gold. - Bottom border:
1px solid rgba(227,183,160,.22).
Hero
- Dark navy gradient
#0A1A30to#040C1Awith a soft wine glow in the upper-right. - Layout: 12-column grid, text spans columns 1-7, episode art/player spans 8-12.
- Eyebrow:
FEATURED EPISODE, rose-gold, Avenir caps. - H1: display serif, max width
760px. - Primary action: round pill, rose-gold fill, navy text,
56pxheight,28pxradius. - Secondary action: transparent pill, rose-gold border, ivory text.
- Hero must show the actual episode or latest content; no abstract gradient-only landing page.
Episode Card Grid
- Card width: 3-up desktop, 2-up tablet, 1-up mobile.
- Radius:
10pxmax. - Background:
#111E33; border1px solid rgba(227,183,160,.18). - Thumbnail ratio:
4:3with navy/wine template still or graded photography. - Metadata: Avenir caps, rose-gold,
11px. - Title: Baskerville/Georgia,
1.5rem, ivory. - Description: Georgia,
1rem, muted ivory.
Inline Audio Player Bar
- Height:
112-132pxdesktop. - Background:
#081222; border rose-gold at 22% opacity. - Play button:
56pxcircle, rose-gold fill, navy icon. - Waveform: rose-gold at 55% opacity over muted navy track.
- Progress fill: rose-gold; inactive track
#263044.
Buttons
| Button | Fill | Text | Border | Hover |
|---|---|---|---|---|
| Primary | #E3B7A0 |
#0A1A30 |
none | Lighten fill 6%, translateY(-1px) |
| Secondary | transparent | #F4F0E8 |
#E3B7A0 1px |
Background rgba(227,183,160,.10) |
| Text link | none | #E3B7A0 |
underline on hover | underline offset 4px |
Focus ring: 2px solid #E3B7A0, offset 3px.
Newsletter Signup
- Use wine block as the default conversion module.
- Background:
#3B0A1E; border1px solid #E3B7A0at 60% opacity. - Minimum height desktop:
300px. - Field radius:
999px; input fill ivory; button rose-gold. - Copy promise: one useful relationship truth per week, no motivational fog.
Footer
- Background:
#100F12or#040C1A. - Include listen links, social links, contact, music/creative attribution when needed, and copyright.
- Footer logo should be pure white on dark brand backgrounds; rose gold stays reserved for accents and actions.
Page Templates
Homepage
- Sticky nav.
- Feature hero with latest episode, play button, and branded episode art.
- Inline audio player for latest episode.
- Recent episodes grid.
- Social proof / best-of clips strip.
- Newsletter signup block.
- Footer.
Episode Page
- Episode hero with title, episode number, publish date, and player.
- One-paragraph episode thesis.
- Listen links.
- Key takeaways / signs / timestamps.
- Embedded Short or carousel preview.
- Transcript section, collapsed by default.
- Related episodes.
About Page
- Brand promise hero: real conversations about imperfect relationships.
- Host/production photography treated with BTP Warm grade.
- What the show believes / does not believe.
- Listener outcomes.
- Subscribe and follow links.
Website Design Plate
Rendered visual: shared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/website_mockup.png
Standalone mockup file: shared/rich-replies/r/btp-brand-guide/assets/website-mockup.html
Accessibility
Status: LOCKED for contrast math, PROPOSED for web implementation.
| Pair | Ratio | WCAG Result |
|---|---|---|
Ivory #F4F0E8 on navy #0A1A30 |
15.05:1 |
Passes AA/AAA normal text |
Ivory #F4F0E8 on navy bottom #040C1A |
18.31:1 |
Passes AA/AAA normal text |
Rose gold #E3B7A0 on navy #0A1A30 |
8.93:1 |
Passes AA/AAA normal text |
Rose gold #E3B7A0 on wine #3B0A1E |
7.83:1 |
Passes AA/AAA normal text |
Navy #0A1A30 on rose gold #E3B7A0 |
8.93:1 |
Passes AA/AAA normal text |
Muted #CFC4BC on navy #0A1A30 |
10.45:1 |
Passes AA/AAA normal text |
Wine body #D2B6AF on wine #3B0A1E |
6.65:1 |
Passes AA normal text |
Avoid rose-gold text on ivory. It fails contrast for body copy and should only appear as decorative linework on light surfaces.
9. Photography & Color Grading
Status: PROPOSED
Brand Photography Look
BTP photography should feel like warm editorial realism: emotionally close, slightly desaturated, deep navy shadows, warm skin, and quiet practical light. It should look like a real conversation happened in the room five seconds before the shutter clicked.
Required cues:
- Warm skin tones without orange cast.
- Shadows pushed subtly toward navy/teal.
- Highlights warm rose-gold, especially lamps, candles, wood, and paper.
- Saturation reduced
10-15%from neutral capture. - Contrast shaped with a gentle S-curve: deeper blacks, protected skin highlights.
- Directional light: window, lamp, or studio source that feels like a room.
Avoid:
- Stock couple poses, thumbs-up podcast images, clinical white walls, over-smoothed skin, influencer gloss, heavy teal/orange blockbuster color, and busy backgrounds behind text.
Generated Photography Plates
Assets live in shared/rich-replies/r/btp-brand-guide/assets/. Current guide includes AI-generated editorial photography plates for:
- Warm couple conversation.
- Host-style portrait.
- Intimate detail shot.
- Moody interior with navy shadows.
BTP Warm LUT
Status: PROPOSED asset, implemented
Files:
- Public guide asset:
shared/rich-replies/r/btp-brand-guide/assets/BTP-Warm.cube - Canonical vault copy:
agents/echo/vault/01_brand/luts/BTP-Warm.cube
Recipe:
- White balance: warm highlights by approximately
+4.5% red,+1.8% green,-1.8% blueabove mid-gray. - Shadow tint: add
+5.5% blue,+1.5% green,-2.5% redbelow mid-gray to pull shadows toward navy. - Saturation: multiply chroma by
.88(-12%). - Contrast: gentle S-curve around 0.5 with approximately
1.08xmidtone contrast. - Blacks: keep rich, not crushed; preserve face detail.
- Skin: never let the grade push skin magenta or gray.
BTP Midnight LUT Spec
Status: PROPOSED written spec
Use for wine-week moodier content, late-night reels, and dramatic episode stills.
- White balance: warmer highlights than BTP Warm,
+6% red,+2% green,-2% blue. - Shadows: deeper navy-wine cross tint, with blue lift in darkest shadows and wine-red lift in low mids.
- Saturation:
-18%global, then preserve skin saturation locally if grading manually. - Contrast: stronger S-curve than BTP Warm; black point may lower
3-5%if faces remain readable. - Use only when the image has enough lamp/window warmth to avoid becoming muddy.
Photography Plate Assets
Rendered visuals:
shared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/photography_plates_contact_sheet.pngshared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/photo_couple_conversation.pngshared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/photo_host_portrait.pngshared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/photo_detail_hands.pngshared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/photo_moody_interior.png
Before / After Plate
Rendered visual: shared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/photo_lut_before_after.png
Episode Shot List Standards
Capture per episode or recording block:
- 6 host candids: seated, thinking, laughing naturally, listening, direct-to-camera, between-takes.
- 4 detail inserts: hands, notebook, coffee, phone with notes, mic detail only if not cliche.
- 4 room/BTS images: lamp, chairs, studio corner, production moment.
- 2 negative-space frames for quote overlays.
- 2 vertical portraits for Reels/Stories.
Minimum capture specs:
- Still photos:
4000pxlong edge minimum, RAW preferred, JPEG acceptable only if high quality. - Social crop safety: capture loose enough for
4:5,1:1,9:16, and website16:9crops. - Shutter: avoid motion blur unless intentionally editorial.
- Delivery: upload selects and RAWs to the episode media folder; do not flatten LUT into the only master.
10. Motion & Animation
Status: LOCKED where implemented, PROPOSED for broader motion language
Slideshow Short Motion
Status: LOCKED from make_short.py.
- Format:
1080x1920,30fps. - Source slides: 8 carousel PNGs at
1080x1350. - Pad into vertical frame at y offset
285px. - Durations:
4.0, 4.5, 4.5, 4.5, 4.5, 4.5, 4.0, 5.0seconds. - Crossfade:
0.6s. - Zoompan:
z='1+0.04*on/frames', centered x/y. - Music fade: in
1.5s, out2.5s.
Audiogram Motion
Status: LOCKED from make_audiogram.py.
- Format:
1080x1920,30fps. - Segment length:
25-60s, target30-60s. - Audio fade: in
0.3s, out0.3s. - Audio loudnorm:
I=-16,LRA=11,TP=-1.5. - Waveform: ffmpeg
showwaves=s=820x220:mode=cline:colors=E3B7A0. - Waveform position: centered at x, y=
780. - Caption style: ivory, black outline, bottom alignment,
MarginV=210when subtitle filter is available; PIL fallback uses Avenir Next60pt.
Broader Motion Principles
Status: PROPOSED
- Easing:
cubic-bezier(.22,.61,.36,1)for UI; no elastic/bounce easing. - Text reveals: fade or 8-12px upward drift over
300-450ms. - Scene transitions: crossfade
0.5-0.8s. - Logo animation: fade only, max
300ms. - Caption animation: no bouncing words; if animated later, use phrase-level fade/slide, not karaoke chaos.
Never:
- Spinning logos.
- Bounce text.
- Stock whooshes.
- Glitch effects.
- Fast zooms that feel like generic motivational reels.
- Decorative particles/orbs unrelated to content.
11. Audio Identity
Status: LOCKED for current music and attribution; PROPOSED for future sonic identity.
Current Locked Music
The slideshow Short uses Kevin MacLeod, "Almost in F" under CC-BY 4.0.
Required YouTube attribution block:
Music: "Almost in F" by Kevin MacLeod
Licensed under Creative Commons: By Attribution 4.0 License
https://creativecommons.org/licenses/by/4.0/
Source: https://incompetech.com/music/royalty-free/index.html?isrc=USUAN1100394
Future Sonic Direction
- Intro sting:
3-5s, warm piano or soft keys, intimate room tone, no corporate podcast swell. - Mood: reflective, direct, late-evening conversation.
- Avoid: ukulele, corporate marimba, EDM risers, aggressive cinematic booms.
- Loudness target:
-14 LUFS integratedfor streaming exports; true peak-1.0 dBTPmax. - Voiceover tone: close mic, natural breath, confident but not announcer-like.
12. Social Profile System
Status: PROPOSED, with rendered assets included.
Avatar
Asset: shared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/btp_avatar_800.png
Spec:
- Canvas:
800x800. - Background: navy gradient with subtle wine glow.
- Logo: pure-white mark, center safe inside a circular crop.
- Safe area: keep all critical logo detail inside a
640pxcircle centered at(400,400). - Never use the white-background JPG directly as a profile image.
Bio Formulas
Instagram, 150 characters:
Real conversations about imperfect relationships. Dating, breakups, healing, and the truth you keep avoiding. New episodes Fridays.
TikTok, 80 characters preferred:
Dating, breakups, healing, and uncomfortable relationship truths.
YouTube, 1-2 sentences:
Better Than Perfect is a relationship podcast about dating, breakups, healing, and the honest patterns people avoid saying out loud. New conversations every Friday.
Facebook page:
A relationship podcast for people who are done pretending love, dating, healing, and self-work are clean or linear.
Highlight Covers
Rendered assets:
highlight_signs.pnghighlight_qa.pnghighlight_episodes.png
Spec:
- Canvas:
800x800. - Navy background.
- Ghost glyph/numeral in locked low-contrast color.
- Rose-gold Avenir caps label.
- No icons unless a platform requires them; the brand motif is type-led.
Pinned-Post Strategy
Pin three posts when the platform supports it:
- Best evergreen carousel: what the show helps listeners see.
- Best short clip: high-retention, direct statement of the brand promise.
- Current episode or weekly question: freshness and comments.
Grid Rhythm
Rendered visual: shared/rich-replies/r/btp-brand-guide/https://betterthanperfectpod.com/content/images/2026/08/social_grid_rhythm.png
Rule:
- Keep the weekly pack one scheme at a time, but alternate by episode week: navy โ wine โ navy.
- Avoid posting three identical formats in a row. Preferred rhythm: carousel, clip/audiogram, quote, clip, hot take, question.
- The grid should read as one brand from nine squares away: dark base, ivory type, rose-gold signals, no random palette breaks.
13. Brand Architecture & Extensions
Status: PROPOSED
Master Brand
Better Than Perfect remains the master brand for the podcast and all relationship-content extensions.
Naming pattern:
Better Than Perfect Podcastfor the show.Better Than Perfect Livefor events.Better Than Perfect Sessionsfor workshops or courses.Better Than Perfect: [Topic]for limited series.
Avoid creating cute sub-brand names until there is a real audience/product reason. The parent brand should accumulate equity first.
Scheme Usage By Extension
- Navy leads for evergreen authority, website, profile, episode archive, and flagship materials.
- Wine leads for intimate, emotional, live, premium, or limited-run materials.
- Rose-gold stays the connective tissue across all extensions.
Merch
- Dark garments: rose-gold or ivory type, no full-color white-box logo.
- Type-led slogans only if they sound like the show, not generic relationship merch.
- Minimum mark size on apparel:
1.25intall if using the full logo,0.75inif using a simplified future monogram.
Live Events / Courses
- Use BTP Warm photography plus navy overlay.
- Event pages may use more wine than episode pages, but must keep ivory type and rose-gold action buttons.
- Course graphics should feel calmer than hot-take posts: fewer arguments, more clarity.
Guest Promo Lockups
- Guest photo receives BTP Warm or BTP Midnight grade.
- Apply a navy overlay at
35-55%if type sits over image. - Use guest name in Baskerville, role/topic in Avenir caps.
- Logo lockup: BTP logo left, guest/show lockup right, separated by a rose-gold 1px divider.
- Never let guest brand colors override the BTP palette unless there is a formal co-brand campaign.
14. Asset Management & Governance v2
Status: LOCKED where practiced
Naming
Production social assets should follow:
epNNN_type_scheme_variant.ext
Examples:
ep137_carousel_wine_slide01.pngep137_quote_wine.pngep137_question_wine.pngep137_hottake_wine.pngep137_audiogram_wine_01.mp4ep137_first-comments.json
Folder Structure
- Production skill:
agents/echo/skills/btp-social-weekly/ - Episode/social state:
agents/echo/vault/07_episodes/social-state.json - Canonical brand guide:
agents/echo/vault/01_brand/btp-brand-guide.md - LUTs:
agents/echo/vault/01_brand/luts/ - Rich guide:
shared/rich-replies/r/btp-brand-guide/ - Guide assets:
shared/rich-replies/r/btp-brand-guide/assets/ - Working episode media:
agents/echo/media/work/<project-slug>/ - Deliverable docs/images:
agents/echo/media/deliverables/<type>/
Approval Gate
Nothing posts or schedules without John's explicit approval of the exact preview batch. Approval covers assets, captions, first comments, schedule, and platforms for that batch only.
Fidelity Check Procedure
- Generate current assets from production renderer.
- Compare cover/sign outputs against approved references.
- Read the generated image visually before showing John.
- If geometry, logo, type size, palette, or spacing drift, fix the renderer before previewing.
- Update this guide after any approved change.
Logo Quality Rule
Status: LOCKED after v2 fix
For video/audiogram outputs, the logo must be composited from the reusable pure-white transparent asset with:
- Soft white-field removal.
- Cropped transparent mark.
- Aspect ratio preserved.
- LANCZOS downscale only.
- No JPEG export before video encoding.
- Minimum display size:
135pxheight for audiograms.
Reference Gallery
Status: LOCKED examples
The HTML version embeds the current production examples copied into:
/Users/navi/clawd/shared/rich-replies/r/btp-brand-guide/assets/
Included assets:
v5_navy_cover.pngv5_navy_sign.pngv5_wine_cover.pngv5_wine_sign.pngquote_navy.pngquote_wine.pngquestion_navy.pngquestion_wine.pnghottake_navy.pnghottake_wine.pngaudiogram_frame.png
Sourced Values
Exact locked values were sourced from:
/Users/navi/clawd/agents/echo/tmp/ep136-carousel/make_v5_duo.py/Users/navi/clawd/agents/echo/skills/btp-social-weekly/scripts/make_carousel.py/Users/navi/clawd/agents/echo/skills/btp-social-weekly/scripts/make_single.py/Users/navi/clawd/agents/echo/skills/btp-social-weekly/scripts/make_audiogram.py/Users/navi/clawd/agents/echo/skills/btp-social-weekly/scripts/make_short.py/Users/navi/clawd/agents/echo/skills/btp-social-weekly/SKILL.md
Values not sourced from code:
- Brand foundation, photography direction, and competitive positioning are strategic proposals based on the approved creative direction and podcast content context.