---
id: "3.9"
title: "Content design"
dept: design
status: draft
owner: Param
branded: false
last_verified: 2026-10-26
sources:
  - "brand-directions/_shared/product-model.md:67-97, 162-219"
  - "brand-directions/_shared/ia.md:147-153"
  - "brand-directions/_shared/kit-contract.md:39-76"
  - "brand-directions/_shared/surface-map.md:425-505"
  - "brand-directions/_shared/no-ai-look.md:20-34"
  - "brand-directions/BRIEF.md:9-24"
  - "brand-directions/book/content/d2.js:1146-1194"
  - "brew origin/main b91e364: cards-gen.js:2, 188-191; card-page.js:10-32; public/app.js:1657, 4119-4122"
  - "memory: brew-proof-plain-make, brew-one-version, brew-card-fit-and-counts, brew-quiet-ui"
---

# Content design

## Answer

Every product surface has a word budget, one plain word per concept and the glance rule, so a founder gets any card in three seconds, and this page is where those budgets and words are set.

## Today

Checked 26 October 2026 against brew origin/main at b91e364.

| Fact | Source |
|---|---|
| A closed feed card stacks up to a dozen text parts before a tap, roughly 60 to 90 words | [src: brand-directions/_shared/product-model.md:164] |
| Card generation asks for a title under 60 characters and a sub of exactly two sentences, 25 to 35 words | [src: brew origin/main cards-gen.js:188-189] |
| Each card also carries three reasons under 14 words and three steps under 12 words | [src: brew origin/main cards-gen.js:190-191] |
| The card page asks for a lead under 18 words and options under 8 words | [src: brew origin/main card-page.js:10-12] |
| plain.js rewrites each card's title, sub, why and how into plain words on the fast model, with the numbers checked in code | [src: memory brew-proof-plain-make] |
| A card's button must fit what it makes; alert and rule cards with no asset say Set up the rules | [src: memory brew-card-fit-and-counts] |
| Make steps lead with one version and offer Redo it for another take | [src: memory brew-one-version] |
| Redo it is the live label for another take | [src: brew origin/main public/app.js:4119-4122] |
| The feed ends with "You're done for today" and a Find more link | [src: brew origin/main public/app.js:1657] |
| Toasts: 317 toast calls and 8 long toasts in six styles | [src: brand-directions/_shared/surface-map.md:453] |
| Back buttons use eight labels, from Back to Back to my feed | [src: brand-directions/_shared/surface-map.md:446] |
| Six status vocabularies for one jam, 4 brief formats, 5 places listing waiting work under 3 names | [src: brand-directions/_shared/product-model.md:5] |
| Quiet pages already keep one sentence under each title | [src: memory brew-quiet-ui] |

## Tomorrow

### The glance rule

A founder gets the point of any card in three seconds without reading past the picture. If a card needs a second look, it is wrong. [src: brand-directions/_shared/product-model.md:166-168] v1, Changes.

### The closed card: five things, 25 words at most

| Order | Part | Budget | Rule | Version | Tag |
|---|---|---|---|---|---|
| 1 | Area and source | 5 words | One line, area tag then where it came from: "Ads, from your reviews" | v1 | Changes |
| 2 | The thing | no words | The draft, or one picture of the brand's product. With no asset, one big number with its source chip | v1 | Changes |
| 3 | Headline | 8 words | The idea as an action, verb first, naming the product: "Run the Monsoon candle rain ad" | v1 | Changes |
| 4 | Why | 12 words | One fact with a number and a source chip: "41 reviews mention the smell of rain." Unsure numbers carry To confirm, never a sentence | v1 | Changes |
| 5 | Actions | one button | One main button in plain words, plus Heart and Not for me as icons | v1 | Changes |

Before, about 70 words on the sample card. After, 19 words: "Ads, from your reviews". The draft. "Run the Monsoon candle rain ad". "41 reviews mention the smell of rain." Make it, Heart, Not for me. [src: brand-directions/_shared/product-model.md:215-219]

Everything else goes into the open pick: the plan, steps, margin note, proof, rows, the make chip, the AI answers line, connect lines and versions. [src: brand-directions/_shared/product-model.md:180]

### The open pick: four layers in this order

1. The draft, big, with New version and Versions under it.
2. Why this: at most three lines, each with its source.
3. The plan: at most five steps, each under ten words.
4. Where to post, then the bottom bar: Make it or Hand it off.

[src: brand-directions/_shared/product-model.md:182-187] v1, Changes.

### Words per surface

| Surface | Budget | Rule | Version | Tag |
|---|---|---|---|---|
| Closed card | 25 words | The five parts above | v1 | Changes |
| Mini card in See everything | the same 25 | The same closed card, smaller. No extra words | v1 | Changes |
| Need your yes | question 10 words | A yes or no question, one line on what happens either way, Yes and Not now | v1 | Changes |
| Story ring frame | 8 words | One fact per frame, set over the picture | v1 | Stays |
| Story ring label | 2 words | Under the ring | v1 | Stays |
| Your store rows | theme 4 words | A theme, a count and a mood chip. Quotes only when real and credited to their public source | v1 | Changes |
| Notifications | 60 characters | One thing, opens exactly that thing | v1 | Changes |
| Hand it off sheet | one line each | Three choices plus Me. The brief preview is the numbered brief itself | v1 | Changes |
| Sheet | title 6 words | One line under it, one main button | v1 | Changes |
| Toast | 10 words | One line, three seconds, one at a time | v1 | Changes |
| Button | 3 words | Plain verb: Make it, Hand it off, Copy all, Try again | v1 | Changes |
| Tab | 2 words | Today, Work, Your store | v1 | Changes |
| Menu item | 4 words | | v1 | Changes |
| Chip | 3 words | Choices and filters | v1 | Changes |
| Field | label 3, hint 6 | Errors say how to fix it | v1 | Changes |
| Empty state | 12 words, one button | The character's line and one button that fills it | v1 | Changes |
| Error state | 1 sentence, 1 button | What happened, what is safe, one way out | v1 | Changes |
| Long wait | 10 words | Says you can leave | v1 | Changes |
| Character line in any slot | 12 words | Each line at most 12 words unless noted | v1 | New |
| Reading source tick | 8 words | One per source, seven sources | v1 | Changes |
| Monday email subject | 8 words | | v1 | New |
| Brief sign off | 8 words | | v1 | New |
| Chat answer from the AI | 60 words before More | | v1 | Changes |
| Fact in What we know about you | 12 words with a source | | v1 | Changes |
| Plan step | 10 words | At most five steps | v1 | Changes |

Budgets come from product-model.md section 10, kit-contract.md and surface map section B. [src: brand-directions/_shared/product-model.md:189-198] [src: brand-directions/_shared/kit-contract.md:41] [src: brand-directions/_shared/surface-map.md:425-505]

### One plain word per concept

Buttons, tabs and cards use the plain word in every direction. The character's word lives around it, never on a control. [src: brand-directions/_shared/product-model.md:67-97]

| Concept | The one plain word | Retire these |
|---|---|---|
| Paste | Paste your store, Build my feed | Read my store |
| The read | Reading your store | The read, findings, Check what we read |
| An idea | Pick for the five, idea for the rest | card, call, decision, signal |
| The strategy behind it | Why this, with its plan | Plays as a user word, playbooks, plans as a page name, proofs, evidence |
| The five | This week's picks | today's 10 |
| The rest | See everything | Find more, See the next 15 |
| Needs the owner | Need your yes | On your board, Needs you, Needs your OK, Your call |
| Keep | Heart, meaning More like this | Save for later, Saved, Keep |
| Drop | Not for me | Not interested, Less like this, Show fewer, Remove |
| Snooze | Later | Remind me tomorrow, Not now |
| Making space | Make it | jam, studio, remix, stage, package, canvas |
| Another take | New version | Redo it, Another take, Make it again, One more |
| History | Versions | History, Earlier takes |
| Hand off | Hand it off | Send brief, Share the brief, Send PDF, Brief a team and six more |
| Status | Idea, In the works, Handed off | Drafting, With teammate, Ready, Brief shared, Decided, Done, sent, received |
| Memory | What we know about you | Memory, Learned, Brand learnings, Fact sheet, Lessons, Rules |
| Who you are | Which of these do you handle | seat, view, Viewing as, role |
| Areas | Social posts, Ads, Website, AI search, Email and WhatsApp | Creative, Performance, Catalog, Storefront, CRM, AI visibility |
| Listening | What customers say | Heard, What we heard |
| Rivals | What rivals run | competitors, Popular ads |
| Back | Back | Feed, Back to my feed, and the other back labels |
| Start over | Start again | Reset, Start fresh, Back to the start |
| Our team | our team, by its future name | build crew, team as a bare word, vendor names |

Not for me and Later replace six card menu items. Not now stays only as the second button in Need your yes and on the paid confirm sheet. [src: brand-directions/_shared/product-model.md:82, 193]

### Rules for every product surface

1. Verbs first, product names over category words: Monsoon candle, never your product.
2. Digits for numbers, one number per line.
3. No marketing jargon on a closed card. CTR, ROAS and CPM live inside Why this, with a plain gloss.
4. One idea per card. Two ideas means two cards.
5. No hedge stacks. Unsure means a To confirm chip.
6. The character never speaks on a card. Cards belong to the brand. The character speaks around them: section headers, empty states, loading and celebrations.
7. No vendor or model names in front of a founder. A price shows only on the confirm sheet, never on a first button.
8. Sentence case, no dashes, no exclamation marks, no parentheses, no emoji, no all caps labels.
9. Coming soon chips are not shown to founders. Next and Later features are simply absent until they ship.
10. Status is always a word, never a colour alone.

[src: brand-directions/_shared/product-model.md:97, 111, 200-207] [src: brand-directions/BRIEF.md:9-24]

### What ships how

| Change | Type | Version | Tag |
|---|---|---|---|
| The closed card shows the existing title, the first sentence of the existing sub, the existing source line and the existing button; every other field goes into the open pick | Restyle and Recompose, no generation change | v1 | Changes |
| A card lint flags any title over 8 words or why over 12, for the team only | Add on | v1 | New |
| Card generation writes to the 8 and 12 word budgets directly | Change core risk, listed, not done this round | v1 | Changes |
| Redo it becomes New version everywhere | Restyle | v1 | Changes |
| Character words fill the 34 named slots in each direction's kit-skin.js | Add on | v1 | New |

[src: brand-directions/_shared/product-model.md:209-213]

## How we do it

1. Write the plain label from the word set above. If the concept is not in the set, add it there first.
2. Count the words against the surface budget. Over budget means cut, never shrink the type.
3. Put every number on its own line with its source chip. If the source is unsure, add To confirm.
4. For a card, run the glance test: show it for three seconds, hide it, ask what it wants you to do.
5. Run the writing check on every visible string. For the docs site it is this command:

```sh
node /Users/param/Documents/ChatGPT/brand-directions/_tools/check.mjs
```

6. For card budgets, run the card lint once it exists. Until then, count by hand on five cards from three brands.

## Numbers

| Number | Definition | Today | Where it is measured | Status |
|---|---|---|---|---|
| Words on a closed card | Visible words on a card before a tap, median across served cards | about 60 to 90 | Card lint over served packs | Proposed |
| Headlines over 8 words | Share of served cards whose title passes 8 words | not measured | Card lint | Proposed |
| Whys over 12 words | Share of served cards whose why passes 12 words | not measured | Card lint | Proposed |
| Retired words in view | Count of retired words found in visible UI strings | not measured | A string scan of public/*.js and the server pages | Proposed |
| Three second test | Share of people who say what a card wants after three seconds | none run | Founder sessions | Proposed |

## Open

1. Our team's future name is open, and the kit strings still name the old company. What is the plain word for our team on screens? Proposal: "our team" until the name is picked, then one find and replace.
2. Should card generation be shortened to the 8 and 12 word budgets, which is a core change? Proposal: ship the lint first, measure for two weeks, then decide.
3. Today's feed end says "You're done for today" with Find more. Tomorrow says caught up for the week. Is the week the unit for every brand? Proposal: yes, five picks a week, See everything for the rest.
4. Areas: are Social posts, Ads, Website, AI search, Email and WhatsApp the final five names? Proposal: accept them as written.
