Copy standards — Intrinsic Value
Voice is part of the design system. Tokens make UI consistent; these rules make language consistent.
Philosophy: WRITING_PHILOSOPHY.md (Zinsser · Segall · Buffett · Strunk) · Trust: TRUST_COPY.md · Audit: REVIEW_PASSES.md
Tone
| Attribute | Do | Don't |
|---|---|---|
| Clarity | One idea per sentence | Jargon stacks, hedge words |
| Confidence | State what happened + next step | "Oops!", "Uh oh", fake friendliness |
| Respect | User agency, opt-in | Guilt, urgency, dark patterns |
| Brevity | Short labels; details on tap | Wall-of-text errors |
| Focus | One job per surface; one primary CTA (Segall) | Competing hero messages, feature laundry lists |
Typography roles: footnote, caption, label in tokens/foundation.json — patterns/TYPOGRAPHY.md.
Ethics: tasteful docs/FOUNDATION/ETHICAL_BOUNDARIES.md (reference in consumer repos).
Strunk mechanics (every string)
| Rule | Example |
|---|---|
| Omit needless words | "Add a meal" not "Start tracking your meals by adding your first one" |
| Active voice | "Meal saved." not "Your meal has been successfully saved" |
| Positive form | "Add a few meals first" not "Nothing to suggest yet" |
| Concrete nouns | "Recipe" not "content asset" |
| One CTA | One primary action per empty state |
Word budgets (targets)
| Surface | Target |
|---|---|
| Button | ≤ 4 words when possible |
| Alert title | ≤ 6 words |
| Empty state title | ≤ 4 words |
| Empty state body | ≤ 120 characters |
| Email subject | ≤ 50 characters |
Error messages (shape)
Every error users see:
- What happened (plain language)
- What they can do (one action)
Couldn't sync meals. They're still on this phone. Try again when you're online.
Not: Error 503: upstream unavailable · Something went wrong
Success messages
Past tense. Specific. No exclamation spam.
Meal saved.
Recipe imported.
Not: Successfully saved! · Great job!
Banned in user-facing copy
| Ban | Use instead |
|---|---|
| Oops / Uh oh / Something went wrong | "That didn't work" / "Couldn't …" |
| Successfully (in UI) | (omit) or past tense verb alone |
| Intelligent / smart (marketing) | (omit) or "from your history" |
| Personalized / personalization | "from what you've saved" |
| Powered by / AI-powered | (omit) or name vendor only if required |
| Seamless / curated / journey | Plain verb |
| Recommendation engine | "Suggestions" / "meal ideas" |
| Start tracking | "Add a meal" |
| Limited time / Act now | (omit) |
| Upgrade now or lose… | Honest feature description |
| Operator (Keystone) | Admin |
| 360 / customer 360 | User detail page |
| Users (ambiguous Keystone list) | People |
Product-specific bans: products/<app>.md
Links
- Tasteful: Accent on interactive controls; body links use default text
- Legal: Full URLs in product
AppURLs; footer© {year} Intrinsic Value LLC
Localization
- New user-visible strings → String Catalog (iOS) / centralized constants (web)
- Entity names in
ENTITY_NAMES.mdare glossary keys for translators
Product voice sheets
| Product | Sheet |
|---|---|
| Tasteful | products/tasteful.md |
| Keystone | products/keystone.md |
Domain terms: ENTITY_NAMES.md + product sheet.
iOS capitalization
| Element | Case |
|---|---|
| Buttons, toolbar actions | Title Case (patterns/PRIMARY_ACTION.md) |
| Body, footers, alert messages | Sentence case |
| Section headers (Settings) | Title Case (system default) |
Ship gate
See REVIEW_PASSES.md PR checklist.