# UI text standard (ruling 57)

How every staff-facing string in the app reads: labels, buttons, hints, tooltips, empty states, statuses, errors, dialogs,
toasts. Ruling 57 (his words 2026-09-28: "not standard or professional", "uses personal pronounce, redudant, informal",
"uses questions") and ruling 58 (no hard-coded or one-case notice). Built from the style guides listed at the end, read
2026-09-28; where they prefer "you", the owner's rule wins, met the way enterprise consoles meet it (imperative, noun
phrases, the role named). A web test enforces what it can; the rest is checked in review.

## The standard

Voice
1. Impersonal register: no I, me, my, mine, myself, we, us, our, ours, ourselves, you, your, yours,
   yourself, yourselves, no contracted forms of these, no "let's". Name the object, the role or the action. [Owner] [Apple] [M3] [Polaris]
2. Instructions use the imperative, which needs no pronoun: "Select a field", never "can select a field". [Google] [Polaris] [MS]
3. No questions: no UI string ends in "?" or holds one. Titles, labels, hints, placeholders, empty states and dialogs
   state a fact or give an instruction. [Owner] [SAP] [WAC] [M3]
4. People by role, in the third person: "the contact" (anyone in Contacts), "the customer" only where the sales role
   matters, "the member" or the role name for staff, "the AI" (never "bot"), "the team", "Silver Oak Properties". [Owner] [MS] [SAP-beta]
5. "they", "them" and "their" stay allowed for one generic person when the noun sits in the same sentence;
   otherwise the noun repeats. No generic he, she, his or her. [MS] [SAP-beta]
6. Each thing is said once: a body never restates its title, a hint never restates its label, a tooltip never
   restates its control. [Owner] [WAC] [SAP] [Polaris]
7. Professional, neutral words: no interjections (oops, great, hi), no idioms or chat ("for good", "right now",
   "head back", "goes quiet", "land here"), no hedges ("just", "simply", "actually", "might"). [Owner] [SAP-beta] [Win32] [Apple]
8. No "please", "sorry" or "thank you". [GOV.UK] [Carbon] [Win32]
9. No contractions: "cannot", "could not", "does not", "it is". [GOV.UK] [Owner]
10. Active voice by default; passive only when the system acted and naming it adds nothing ("Campaign archived"). [MS] [Carbon] [SAP-beta]
11. One term per concept everywhere: conversation (never DM), AI (never bot), contact, member, flow, campaign,
    template, segment. [SAP-beta] [Shopify] [Owner]

Mechanics
12. Sentence case for every UI string: page titles, headings, tabs, labels, buttons, menu items, table headers.
    Capitals only for the first word and proper nouns (WhatsApp, Meta, ManyChat, LeadRat, Silver Oak Properties,
    AI, CSV, API). No all caps for states or emphasis: "Live", not "LIVE". [MS] [Google] [M3] [Carbon] [Polaris] [GOV.UK]
13. End punctuation: none on titles, labels, buttons, badges and one-fragment toasts; a period on every full
    sentence and on any text of two sentences or more. Never "!". [MS] [SAP] [Win32] [Owner]
14. Dashes and symbols: no em dash (a colon, comma or new sentence instead); an en dash without spaces only for
    ranges; "…" only for work in progress ("Saving…"), never on buttons or placeholders, never "..."; no "(s)"
    plurals; no "e.g.", "i.e." or "etc." ("for example"); no "&" inside sentences. [Owner] [M3] [SAP] [AIW]
15. Numbers and dates: numerals for every count ("3 contacts"); thousands separators ("12,000"); separate singular
    and plural strings; month as a word, never numerals only ("28 Sep 2026"); ranges with "to" or an en dash;
    relative time in lists ("5 min ago"), absolute time in details. [Polaris] [SAP] [M3] [GOV.UK]
16. No AI-writing patterns: no "not X, it is Y", no hollow intensifiers (genuinely, truly), no inflated words
    (seamless, robust, leverage, comprehensive), no filler lead-ins. [AIW] [Owner]

Scope
17. Explanations stay: a label stays short and its explanation sits in the tooltip behind the exclamation-circle
    icon, in full sentences that add something new. [Owner, ruling 34] [WAC]
18. Text written for customers is a different audience and sits outside rules 1, 3, 7 and 9: WhatsApp templates,
    auto-reply text, AI reply samples, sample customer messages, the public privacy notice. Staff-facing labels
    around that text follow every rule. [Owner scope; main's default 2026-09-28, his to change]
19. UK spelling (colour, organise, cancelled), as the app is written today. [main's default 2026-09-28, his to change]

## Patterns per UI element

| Element | Pattern | Example |
|---|---|---|
| Page title | Noun phrase, no possessive | Automations |
| Section heading | Noun phrase | Alert emails |
| Tab, nav item | One or two nouns | Test audience |
| Field label | Noun phrase, no colon when above the field | Name |
| Placeholder | Format or sample value, or none when the label says enough | +971501234567 |
| Hint under a field | Instruction or fact, full sentence | Select the language of the template text. |
| Tooltip (info icon) | Full sentences that add new information | Replies below this score wait for approval before posting. |
| Button | Verb + noun, one to three words | Create account |
| Link | The destination or the action | Open test audience |
| Checkbox, toggle | What happens while on | Email an alert when WhatsApp is silent |
| Status, badge | Past participle or adjective | Not sent |
| Empty state, first use | "No <items> yet" + how items arrive + verb button | No templates yet. Create a template, then submit it to Meta for approval. |
| Empty state, filtered | "No matching <items>" + a clear action | No matching contacts / Clear filters |
| Loading | Gerund + object + "…" | Loading alerts… |
| Success toast | Object + past participle, no period | Campaign archived |
| Field error | What to enter, as an instruction | Enter the number in E.164 format, for example +971501234567. |
| Error toast or banner | What failed. The cause, when known. The fix. | Connection failed. Check the access token. |
| Warning banner | State, then consequence | Offline. Sending is unavailable until the connection returns. |
| Confirmation title | Verb + object, no "?" | Cancel campaign |
| Confirmation body | Consequence as fact; "This cannot be undone." only when true | Unsent recipients are stopped. Delivered messages cannot be recalled. |
| Confirmation buttons | The title's verb + a safe exit named for what stays | Cancel campaign / Keep sending |
| Unsaved-changes dialog | "Unsaved changes" + consequence + three buttons | Leaving this page discards the changes. / Save changes / Discard / Cancel |
| Actor or speaker label | Member name, role or company, never "You" or "Us" | Silver Oak Properties |
| Relative time | Numeral + unit + "ago" | 5 min ago |

## Sources (read 2026-09-28)

Tags in brackets are used in the rules below. All read 2026-09-28.

| Tag | Source | What it covers | Page date |
|---|---|---|---|
| [MS] | https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice | Voice, brevity, sentence case, end punctuation | 2026-07-02 |
| [MS] | https://learn.microsoft.com/en-us/style-guide/grammar/person | You, I, we in docs and product UI | 2022-06-24 |
| [MS] | https://learn.microsoft.com/en-us/style-guide/capitalization | Sentence case for titles, labels, buttons | 2024-08-26 |
| [MS] | https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/p/please | "please" only when inconveniencing | 2018-01-19 |
| [MS] | https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/sorry | "sorry" only for serious failures | 2025-11-06 |
| [MS] | https://learn.microsoft.com/en-us/style-guide/bias-free-communication | Gender-neutral terms, singular they | 2024-04-18 |
| [WinApps] | https://learn.microsoft.com/en-us/windows/apps/design/style/writing-style | Fluent voice, errors, dialogs, buttons, periods | 2020-09-24 |
| [WAC] | https://learn.microsoft.com/en-us/windows-server/manage/windows-admin-center/extend/guides/ui-text-style-guide | An admin console: buttons, confirmations, toasts, null states, tooltips | 2021-05-12 |
| [Win32] | https://learn.microsoft.com/en-us/windows/win32/debug/error-message-guidelines | Error message content and style | 2025-07-14 |
| [Apple] | https://developer.apple.com/design/human-interface-guidelines/writing (local copy `.claude/skills/apple-design/references/hig/writing.md`) | Voice, possessives, "we", empty states, errors, hints | Apple change 2025-12-16 |
| [Apple] | https://developer.apple.com/design/human-interface-guidelines/alerts (local copy `hig/alerts.md`) | Alert titles, button titles, Cancel | Apple change 2024-02-02 |
| [M3] | https://m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices | Consequences, sentence case, abbreviations | none shown |
| [M3] | https://m3.material.io/foundations/content-design/style-guide/word-choice | Pronouns | none shown |
| [M3] | https://m3.material.io/foundations/content-design/style-guide/grammar-and-punctuation | Periods, exclamation, ellipsis, dashes, numbers, ampersands | none shown |
| [M3] | https://m3.material.io/components/dialogs/guidelines | Dialog headlines and actions | none shown |
| [Google] | https://developers.google.com/style/person | Second person, imperative | 2025-04-10 |
| [Google] | https://developers.google.com/style/capitalization | Sentence case | 2025-04-02 |
| [Google] | https://developers.google.com/style/tone | Tone, "please", exclamation | 2026-05-27 |
| [Google] | https://developers.google.com/style/ui-elements | Naming UI elements, action verbs | 2026-05-06 |
| [Polaris] | Shopify Polaris content guidelines, read from `github.com/Shopify/polaris-react-archive` (`content/content/fundamentals.mdx`, `error-messages.mdx`, `grammar-and-mechanics.mdx`, `components/layout-and-structure/empty-state.mdx`, `components/actions/button.mdx`). polaris.shopify.com/content/* now 301-redirects to shopify.dev/docs/api/polaris and the repo is archived. | Fundamentals, errors, capitalization, numbers, dates, empty states, buttons | repo pushed 2026-09-11 |
| [Shopify] | https://shopify.dev/docs/apps/design/content | Current app content guidance: CTAs, one term per concept | none shown |
| [Carbon] | IBM Carbon, read from `github.com/carbon-design-system/carbon-website` (`guidelines/content/writing-style.mdx`, `data/guidelines/glossary.js`, `patterns/dialog-pattern`, `empty-states-pattern`, `notification-pattern`); live pages at carbondesignsystem.com/guidelines/content/ | Capitalization, politeness, pronouns, action labels, dialogs, empty states | main branch |
| [SAP] | https://www.sap.com/design-system/fiori-design-web/v1-151/foundations/writing-and-wording/ux-writing/ui-text-guidelines-for-sap-fiori | Current SAP Fiori UI text rules: capitalization, ellipsis, periods, please, messages, confirmations | v1-151 |
| [SAP-beta] | https://www.sap.com/design-system/fiori-design-web/v1-145/foundations/writing-and-wording/ux-writing/ux-writing-guidelines/basics | SAP voice ("approachable expert"), tone table, inclusive terms | v1-145 beta |
| [SAP-beta] | https://www.sap.com/design-system/fiori-design-web/v1-145/foundations/writing-and-wording/ux-writing/ux-writing-guidelines/ui-text | Terms, second person, title vs sentence case, numbers, message types, confirmations | v1-145 beta |
| [GOV.UK] | https://guidance.publishing.service.gov.uk/writing-to-gov-uk-standards/style-guides/a-to-z-style-guide/ | Contractions, capitals, dates, numbers, "you" | none shown |
| [GOV.UK] | https://design-system.service.gov.uk/components/error-message/ | Error wording, banned words | updated Jan 2024 |
| [GOV.UK] | https://design-system.service.gov.uk/patterns/question-pages/ | Question headings on forms | none shown |
| [AIW] | `C:\Users\SOP-User\.claude\skills\synced\...\avoid-ai-writing\SKILL.md` v3.14.0 | AI-writing patterns: em dashes, intensifiers, inflated words | local |
| [Owner] | Ruling 57 and ruling 34 in `docs/DECISIONS.md`; rulings 18 ("AI", never "bot") and 32 ("conversation", never "DM") | The owner's rules | 2026-09-28 |
