Morning Ledger: Brand Voice Framework (Draft v1)
Voice at a glance
Morning Ledger treats coffee as a small daily ritual worth doing well. The "ledger" idea gives us a point of view: we keep honest accounts of what's in the bag, what it costs, and when it arrives. We sound like a dependable friend who happens to know a lot about coffee.
Position on the spectrums
- Formal โโโโโโโ Casual: leans casual, but tidy
- Simple โโโโโโโโโ Complex: plain language, with no jargon unless we explain it
- Serious โโโโโโโ Playful: dry and warm, not zany
- Reserved โโโโโโโ Expressive: calm enthusiasm, saved for the coffee itself
Personality traits
| Trait | What it means | Do | Don't |
|---|---|---|---|
| Dependable | We're precise and consistent, and we keep our promises about dates, prices and origins. | "Ships Tuesday. Arrives by Friday." | "Arrives whenever the coffee gods allow!" |
| Transparent | Like a ledger, we show our numbers: sourcing, roast dates, pricing, how to pause or cancel. | "Roasted Oct 2. Farmer paid $4.10/lb, up from $2.60 market." | "Ethically sourced, premium quality." |
| Warmly dry | Understated humor and a morning-person-adjacent sense of humor. Never forced. | "Your coffee's here. The day can begin." | "OMG you NEED this in your life!!!" |
| Knowledgeable, not snobby | We know our stuff and share it simply, without gatekeeping. | "Tastes like brown sugar and orange peel. Good with milk or without." | "Notes of bergamot-adjacent stone fruit with a nuanced finish." |
| Unhurried | We respect mornings and people's attention. We keep copy short and never create false urgency. | "Skip a month anytime." | "Last chance! Only 2 hours left!" |
Tone by channel
Website
Tone: clear, calm, and specific. This is where the ledger idea shows most.
- Lead with facts: roast date, origin, price, delivery cadence.
- Short sentences. Headlines state the benefit plainly.
- Make subscription terms (pause, skip, cancel) easy to find, in plain words.
- Humor is light and limited to microcopy (empty states, confirmations, 404).
Examples
- Hero: "Good coffee, on the calendar."
- CTA: "Start my subscription" (not "Join the revolution")
- Confirmation: "Entry recorded. Your first bag ships Tuesday."
- 404: "This page isn't on the books."
Tone: personal, useful, and brief. It's like a note from someone who knows your routine.
- Transactional (orders, shipping, billing): the most straightforward. Information first, with a small touch of warmth.
- Lifecycle/newsletter: a bit more story, such as the farm, the roast, a brew tip. One idea per email.
- Problem or apology: own it quickly, with no spin, and say what we're doing. No jokes.
- Subject lines: specific, under about 45 characters, with no ALL CAPS or stacked exclamation marks.
Examples
- Subject: "Your October bag ships Tuesday"
- Subject: "A small price change, explained"
- Apology: "Your bag was late, and that's on us. We've refunded the shipping and sent a replacement."
Social
Tone: the most playful and conversational, though still dry rather than loud.
- Observational humor about mornings, routines and the first cup.
- Short captions. Let photos of the coffee, the farm and the kitchen counter carry the content.
- Reply like a person, using first names and real answers. Handle complaints publicly with empathy, then move to DMs for details.
- Emoji sparingly (โ at most). Hashtags minimal.
Examples
- "Monday, itemized: 1 alarm, 2 snoozes, 1 very good cup."
- "Roasted yesterday. In your kitchen by Friday. That's the whole trick."
- Reply to a complaint: "That's not the experience we want you to have, Sam. Sending you a DM now."
Phrases and patterns to avoid
Hype and empty superlatives
- "Best coffee ever" / "world-class" / "game-changing" / "life-changing"
- "Revolutionize your mornings"
- "Premium quality" / "artisanal" without proof
Vague virtue claims
- "Ethically sourced" / "sustainable" / "ethically-made" with no specifics. Give numbers or leave it out.
Fake urgency and pressure
- "Don't miss out!" / "Last chance!" / "Act now!"
- "You'll regret it" or any guilt-based opt-out copy ("No, I don't like great coffee")
Coffee clichรฉs and caffeine-addict tropes
- "But first, coffee" / "Rise and grind" / "Brew-tiful" / "Bean there, done that" / "Espresso yourself"
- "I can't function without my coffee" / "Fuel for your hustle"
Pretentious tasting language
- "Nuanced," "terroir-driven," "elevated," "curated" (unless explained simply)
- Unexplained jargon: "washed process," "cupping score" (explain it or skip it)
Subscription-industry dark patterns in copy
- Hiding cancellation ("Contact us to cancel")
- "Free trial" without stating when billing starts
Tone-deaf filler
- "We're so excited to announceโฆ" / "Thrilled toโฆ"
- "Hey coffee lover!" / "Hi there, friend!"
- "Oops!" for serious errors like billing mistakes
Mechanics: no ALL CAPS shouting, no more than one exclamation mark per piece, and avoid puns in subject lines.
Sample rewrites
| Generic | Morning Ledger |
|---|---|
| "Experience the ultimate coffee journey with our premium curated beans!" | "Two new coffees each month, roasted days before they ship." |
| "Don't miss out! Subscribe NOW!" | "Start whenever you're ready. Skip or cancel anytime." |
| "Oops! Something went wrong with your order ๐ " | "We charged you twice for October. The extra $18 is already on its way back." |
Voice test
Before publishing, ask:
- Could a competitor say this word for word? If so, make it more specific.
- Is there a real number, date, or detail? Add one.
- Would we say it out loud to a customer at the counter?
- Is anything pushing the reader instead of informing them?
Next steps
The skill's workflow keeps the source of truth in docs/brand-guidelines.md, and I haven't written any files yet. Do you want me to save this there (via the starter template), or keep iterating on the draft first? Also, since the brand is fictional, I invented the specifics (prices, dates, "Tuesday" shipping). Swap in whatever you want to treat as canon.
Real run in an isolated folder with only this skill installed. Only the Skill and Read tools were enabled, so no bundled script was run and no file was written. The coffee brand is invented for the test, and the model says so in its answer.
What it does
Gives the model a set of frameworks for brand work: a voice framework (personality, tone by channel, words to avoid), visual identity, messaging, color palette management, typography specifications, logo usage rules, asset organization and an approval checklist. A starter template covers a complete brand guidelines document.
How it works
- The model opens the matching reference file on demand (voice, visual identity, messaging, consistency, asset organization and so on).
- The
updatesubcommand walks through changing brand colors, typography and mood, then keepsdocs/brand-guidelines.mdand the design tokens in sync. - Four small Node.js scripts help along the way: read brand context out of the guidelines for prompts, list the brand palette, check an asset's file name, size and format, and sync brand colors into design tokens.
Good for
Writing a brand voice, auditing content for consistency, setting up a guidelines document, and naming and approving marketing assets.
Contains four Node.js scripts. Three only read local files and print results: `inject-brand-context.cjs`, `extract-colors.cjs` (it does not analyze images; it prints an ImageMagick command and instructions) and `validate-asset.cjs` (its `--fix` option is documented but changes nothing). `sync-brand-to-tokens.cjs` is the one that writes: it updates `assets/design-tokens.json`, regenerates `assets/design-tokens.css` by calling the `design-system` skill's script (not included here), removes the `coral`, `purple` and `mint` color keys and sets the brand name to a hard-coded ClaudeKit label. It stops if your project already has token sources, unless you pass `--force`; use `--dry-run` first and commit before running it. The scripts do not use the network. The asset guidance mentions removing duplicate or outdated assets while advising to archive instead of delete, so confirm before anything is removed. Test files left out.