---
title: "Brand brief"
description: "Stage 1: codename, promise, voice, mark, do and don't; name and domain open."
source: "design/brand/brief.md"
---

> Part of [Brand and design](/design/llms.txt). Every page: [llms.txt](/llms.txt).

# Brand brief: Shuke (codename)

Stage 1 of the design process (botgumi ADR-0004). Closes at the brand and name gate. Filled from `README.md`
and `docs/decisions/ADR-001-product-decisions.md`; the gate has not been held, so the open items below stay open.

## Name

Working codename **Shuke / 述刻**. The final app name, branding and domain are TBD (README); everything
brand-specific lives behind the token layer (`../tokens.css`) so the name and brand can be swapped. No name options
have been drawn up or checked yet.

| Name | Domain | Store search | Notes |
|---|---|---|---|
| Shuke / 述刻 | open: no domain yet (the Workers run on `workers.dev`, `docs/deployment.md`) | open | codename, not a decision |

Open: 3 to 5 name options with their domain check and store search, for the gate.

## Promise

每天十分钟，把复杂的事讲清楚 — ten minutes a day to explain complex things clearly (`app.tagline` in
`../strings.json`). A spoken-expression trainer: read a short article, retell it aloud, get feedback with one thing
to change, retell it compressed, see the delta. Multilingual from day one (en and zh-Hans first, ADR-001 D13).

## Voice

Not written as three words yet (open for the gate). What the copy already follows (ADR-001 D10, `../engagement.md`,
`../copy.md`): honest numbers over praise, one change at a time ("这次只改一件事" / "Change just one thing"),
no guilt copy, no fake scarcity, no countdowns, scores are never shamed (bands are amber, ink, green and violet,
never red).

## Mark

The gallery uses a letter mark: `述` in zh-Hans, `S` in en (`.brand-mark` in `../base.css`, drawn on the ink
colour). There is no `mark.svg`, no light and dark variants, no minimum size and no clear-space rule yet: open for
the gate.

## Do and don't

From ADR-001, `../tokens.md` §1 and `../engagement.md`. Colours are named by token, so a rule can be checked on a board.

### Do

- **Spend coral on one thing a screen:** the primary action (`color.accentPrimary`). During capture the record button,
  its ring and waveform are coral as well; both mean "the live action". Coral topic tiles (`--color-topic-coral`) are
  square with a glyph, so they never read as a button.
- **Keep lime for rewards only** (`color.reward`): XP, level, achievements, the round-2 score, the done step. On light
  surfaces its strokes use `color.rewardDeep`.
- **Write coral text with the text token** (`color.accentPrimaryStrong`), never the fill coral; amber text and the
  streak flame use `color.statusWarning`.
- **Say one honest thing, then the next step.** Do: "Shorter, and the key points held." Don't: "Amazing job!" on a
  regression. Do: "Not yet today — 10 minutes is enough." Don't: "You'll lose your streak."
- **Make every state legible:** text at 4.5 : 1 or more, large text and UI strokes at 3 : 1 (`../tokens.md` §1),
  touch targets 44 × 44 pt, Dynamic Type to the largest tested size, a VoiceOver label for every control
  (`../ios-handoff.md`). Shuke ships on iOS only (`botgumi.config.ts`); an Android client would add Material 3
  type and touch-target rules here before it starts.
- **Write every string in en and zh-Hans**, with no hard-coded language or script; length and reading-speed rules
  are per language.

### Don't

- No coral or lime as decoration, on bars, icons, scores or body text.
- No accent correction, no exam scoring, no shaming of accents or disability-related speech patterns.
- No guilt copy, fake scarcity, countdowns on the paywall or decoy pricing (`../engagement.md`, "Dark patterns").
- No more than one notification a day. When several qualify, trial-ending comes first, then result-ready, then the
  daily or plan reminder, then streak-risk; the rest are dropped (`../engagement.md`, "Notifications").
- No prices, periods or trial lengths written into copy: they come from the store (StoreKit on iOS).
