Brand framework

Set your brand once. Claude reads it on every Send. Every output matches.

A brand in Clearly is colors + typography + voice notes + logos + reference imagery. Set it once per canvas (or share one brand across many canvases). When you Send to Claude, the active brand is injected into the system prompt automatically — Claude doesn't need to be told. Outputs match your brand by default.

Brand changes are versioned. Every brand update creates a new immutable row in brand_versions; you can revert to any prior version anytime. The "current" brand is just a pointer.

What a brand contains

A brand row has these fields (all optional; you can ship with just colors if you want).

FieldExampleHow Claude uses it
colors.primary#7C3AEDHero CTA color, primary accent in code
colors.secondary#10B981Secondary CTA, hover states
colors.accent#F59E0BHighlight + warning states
colors.background#FAFAFAPage background; flips for dark mode
colors.text#0A0A0CBody text default
typography.headingInter 600 / 48pxh1-h3 styling, hero text
typography.bodyInter 400 / 16pxParagraph + UI default
voiceNotes"Warm, playful, never corporate"Adjusts copy tone in generated text
logos[]Array of image URLsUsed in nav bars, footers, OG images
defaultStyle"editorial-warm"Maps to a Clearly style preset for visual generation

How to set a brand

Three paths depending on how built-out your brand is.

1

Manual creation

Go to /brand → New brand. Fill in colors, typography, voice notes, upload logos. Save. Set as default for new canvases OR attach to specific canvas via composition-set-brand.

2

Extract from a logo (wizard)

Coming soon — wizard that takes 1 logo + 1-3 reference images + 1 paragraph and suggests colors/voice/typography automatically. Built on Claude with vision.

3

Propose-update flow (Claude-driven)

Send Claude a moodboard + instruction "update the brand to match this vibe". Claude calls brand-propose-update — drops an approval form on your canvas with the suggested patch + rationale. You approve to commit; reject to discard. Approval signed via HMAC.

Brand-update approvals use a signature primitive. Once you sign an approval, the brand version is locked + signed by you. Time-stamped record of who changed what; useful for client-facing canvases.

Brand on shared canvases

When you share a canvas with view-only or view+comment scope, viewers see the brand-snapshot block but can't modify the brand. With edit scope (Studio tier), collaborators can propose brand updates that you approve before they commit.

Multiple brands per project

Common for agencies. Each composition has a brand_id; switching brands is one composition-set-brand call. Brands aren't tied to projects — they're top-level so you can reuse a brand across many compositions.