BRIEF — Experience Optimization (app + agent harness)#
Status: standing brief — v1, 2026-08-03 Program of record: relay-app/docs/PLAN.experience-program.md Findings register: relay-app/docs/AUDIT.experience-findings.md Linear: Experience Optimization — App & Agent Harness (RCTX-1081 … RCTX-1087) Relay stream: Relay Experience (pc_9b8b6183e706)
The creative half of the experience program. The charter in relay-app owns the loop and the bar; this brief owns direction — what a fixed version should look and read like, before anyone builds it.
The ask#
Relay is a mobile-first product with the agent harness as its adjacent priority interface. Both need to feel fluid for people handling relays, Streams, Series, Sessions and Codes every day — not for someone taking a tour.
This is not a rebrand and not a redesign of v3.5. The visual system is settled: neutral-first surfaces, dual-value teal on interactive elements only, Cormorant reserved for display moments, Codes always mono and letter-spaced. Canon stays relay-app/DESIGN.md + packages/ui/tokens.css, with brand/relay-tokens-v35.css as the brand-side source.
What's asked for here is the layer above that: how the product behaves in the hand.
Where creative enters the loop#
Most findings are defects and go straight to build. Creative is pulled in for the two cases that can't be fixed by a developer reading a bug report:
- Direction — the finding is real but the fix isn't obvious. Needs a prototype or a comparison before it becomes an issue. Output: a concept page in
concepts/, or an annotated study here. - Language — the fix is wording. Empty states, errors, permission and gate states, expiry. Output: copy in
copy/, implemented by the app team. (Linear: RCTX-1087.)
finding (EXP-nnn, relay-app register)
→ triaged "direction, not defect"
→ study / prototype / copy ← this brief
→ back to the register, routed to Linear with the direction attachedCreative does not hold findings. The register in relay-app is the single list; anything sitting only in this repo is invisible to the program.
What good looks like#
The seven-point bar lives in the charter. Translated into creative terms:
| Bar | What it asks of design |
|---|---|
| Hand-reachable | Compose for the bottom third of a phone. The top of the screen is for orientation, not action. |
| One-thumb, few-step | Every added step needs a defence. Count taps in the prototype, not after the build. |
| Legible at a glance | State is carried by the object's own treatment, not by a legend the user learns. |
| Answers immediately | Design the acknowledgement, not just the result. Loading has a shape. |
| Recoverable | Prefer undo to a confirm dialog. A dialog that always says yes teaches people to stop reading. |
| Same object, same grammar | A relay looks and behaves like a relay in all three places. Divergence needs a reason written down. |
| Harness-honest | Text is the interface. A tool response is composed, not dumped. |
Specifically, for phone#
- Design at 390px first, and write copy to that column — don't trim desktop copy down to fit.
- Sheets that drag and dismiss, not modals that trap.
- The primary action stays reachable while a long detail page scrolls.
- Density is a real setting, not a desktop toolbar squeezed narrower.
Specifically, for the harness#
The harness has no pixels, and it still has visual design — hierarchy, rhythm, restraint. A tool response is judged on: does the next move read immediately, is every identifier accompanied by a name, is it the right amount. Existing reference: mcp/ (relay card display, response cards, Code presence tiers) and relay-platform/docs/DESIGN-NOTE.mcp-rich-display.md.
Assets and where they go#
| Kind | Location |
|---|---|
| Raw evidence (screenshots, recordings) | relay-app/docs/experience/screenshots/ — the durable copy, named EXP-nnn-<surface>-<slug> |
| Annotated studies, before/after comparisons | here — briefs/ alongside this file |
| Clickable prototypes | concepts/ (app: concepts/app-v35/, mobile: the mobile concept set) |
| Copy deliverables | copy/ |
| Vocabulary | _vocab/_VOCAB.md — locked; Code (never PIN), Stream (never Pulse) in anything user-visible |
Evidence deliberately lives in relay-app, not here: it belongs next to the register that indexes it and the code it describes. Reference it from creative work; don't copy it in. Two live copies is the failure mode.
Constraints worth stating up front#
- The web app is vanilla TypeScript with hand-built DOM — no framework, no component library. A prototype that assumes React components has to be translated by hand, and responsive behaviour is per-module rather than enforced. Design accordingly: patterns that repeat cheaply beat patterns that are individually clever.
- The native app is Expo/React Native. Shared design, not shared code, with the web.
- Accessibility is not a later pass — WCAG 2.2 AA is an active program (
relay-app/docs/AUDIT.accessibility.md). Touch targets, focus order, contrast and announcement are part of the direction, not a review gate at the end. - Motion respects
prefers-reduced-motion, always. SeeBRIEF.interaction-motion.md.
Flows back to Launchpad#
Relay, FirmClerk, and anything built on Launchpad share a shape: object-handling surface on the web, companion on mobile, MCP harness alongside. Patterns settled here — the interaction grammar, the empty/error language, the phone-width compositions — are framework material, and six of the seven Linear tracks carry framework-candidate.
Practical ask for creative work: keep studies brand-separable. Where a pattern only works because of Relay's specific vocabulary or object model, say so; where it would work for any product with lists and detail views, say that too. Launchpad · Phase 2 — Frontend Core extracts the generic shell from relay-app, and this program tells it what's worth taking.
Related#
BRIEF.interface-v35.md— the governing product-UI direction (neutral-first). This brief sits under it, not beside it.BRIEF.mobile-v1.md— the mobile product conceptBRIEF.interaction-motion.md·SPEC.pulse-motion.md— motion lawBRIEF.global-card-layer.md— card treatment across surfacesBRIEF.messaging-app-ux.md— prior art on conversational/dense mobile layoutsAUDIT.brand-identity-2026-07.md— visual/verbal consistency checkACCESSIBILITY.md— creative-side a11y notes