Coach mobile · Direction 01, revision B · back to all three

Rounds, rebuilt on what V1 actually has.

The first draft dealt clients ranked by Priority view. That surface is Post-V1. This one deals tasks from the coach task inbox — a V1 surface with a fixed priority score, severity, due dates, and the three snooze presets the session needs.

It's also no longer the whole app. Rounds is one tab beside Clients and Chat, because coach mobile owes V1 client context, progress and nutrition review, and messaging too.

Scope fix

Tasks, not clients

Reads GET /coach-tasks sorted by priority_score — the fixed V1 weights. No rankScore, no PriorityTier, no reason stack. Severity chips replace tiers.

Shell fix

A tab, not an app

Rounds is the default tab. Clients and Chat carry profile, progress, nutrition review, and messaging. You can always reach a client you weren't dealt.

Honesty fix

The hand-off is designed

Review tasks can't resolve in the inbox. Instead of hiding it, the card changes shape and says where it's sending you — and that it'll bring you back.

Four screens

Warmer palette: cream, apricot light, indigo ink. Colour carries severity — coral is urgent, amber is high, sky is normal — and mint only ever means done.

7:41▮▮▮ ⌁ ▊
Morning, Majd ☀️
12

tasks are waiting for you

About 8 minutes at your usual pace. Six more wake up tomorrow.
3
Urgent
5
High
4
Due
Start rounds
2 actions queued from the gym · syncing
Rounds
12
Clients
Chat
3
More
01 · OpenThe count is tasks, not clients. Badge excludes snoozes that haven't woken — the rule from BadgeCountPolicy.
7:43▮▮▮ ⌁ ▊
Urgent · Missed check-in 4/12
NH

Nadia Haddad

Active · 14 weeks
Third check-in missed in a row
Weekly check-in due Sunday. No submission, and no reply to your message about her knee.
×3
Occurrences
4d
Overdue
48%
Adherence
Message Nadia
1 hourTomorrowNext check-in
Sending resolves this task · or dismiss
02 · Directly resolvableMissed check-ins roll into one task with an occurrence count. Message sends, task resolves as MESSAGE_SENT with the message linked.
7:45▮▮▮ ⌁ ▊
Normal · Workout review 6/12
OA

Omar Aziz

Active · 6 weeks
Push day submitted for review
Logged Tuesday 19:40. Flagged two sets at RPE 9.5 and left a note on the incline press.
18
Sets
1
PR
1
Note
↗ This one opens the review screen

Workout review can't be closed from here — it resolves when you finish the review. You'll land back at card 6.

Open review
1 hourTomorrowNext check-in
Not now? It keeps its place in the deck.
03 · The hand-offDirectResolutionPolicy made visible. Review tasks leave the session and return — the card admits it rather than faking a resolve.
7:52▮▮▮ ⌁ ▊

Deck's clear

Every task that needed you this morning is handled, sent, or parked.
9
Handled
3
Snoozed
9:12
Minutes
Next up: Farah's form review, tomorrow 8:00.
Rounds
Clients
Chat
3
More
04 · EmptyThe badge is gone. This is the payoff a list can't give you, and the reason to keep the session model at all.

Does it fit coach mobile now?

Checked against the Public V1 scope contract, roles matrix, and the coach-mobile section of each feature page.
Task inbox
The whole point. Reads /coach-tasks and /summary; writes /start, /snooze, /resolve, /dismiss. Uses the fixed V1 priority weights for deck order.
Covered
Lightweight actions
Message, nudge, snooze, dismiss, resolve — one primary per card. Exactly the three mobile snooze presets: ONE_HOUR, TOMORROW_MORNING, NEXT_CHECK_IN.
Covered
Risk signals
Risk flags already project into the inbox as PROGRESS_ALERT tasks, so they arrive in the deck at urgent severity. Handling a flag beyond message/snooze still needs a flag screen under Clients.
Mostly
Client context
Not Rounds' job. The card carries a summary and a deep link only — payloads can't hold sensitive detail. Profile lives in the Clients tab.
Shell
Progress & nutrition review
These are the hand-off cards. Rounds routes to them and takes the coach back; the review screens themselves are separate work and unchanged by this direction.
Routes
Messaging
Chat tab. Rounds opens a composer scoped to the task and links the sent message as the resolution action — it doesn't own the thread.
Covered
Offline
Suits the session model well. The task inbox cache is a listed coach-mobile slice; a run works from cache and queues actions to the local outbox, which is what the chip on screen 1 reports.
Covered
Accessibility & dark mode
One card at a time is the easiest thing here to make screen-reader and dynamic-type safe — no dense grid, no colour-only status. Severity is always a word next to the colour. Dark theme still to draw.
Strong
Arabic / RTL
The progress spine, the skip gesture, and the card's forward motion all mirror. Worth prototyping early — direction is load-bearing in a session, unlike in a list.
Needs care
Inbox spec says "list"
The coach-mobile section of the task inbox page asks for a card list grouped by urgent / due today / snoozed. Rounds is a session over the same data. Real conflict — the doc has to change or this direction does.
Conflict
Priority view later
Additive when it lands. Deck order swaps from priority_score to rankScore, the summary block grows the reason stack, and a ranked Clients tab appears. Nothing here has to be thrown away.
Ready

What's still open

The list-versus-session question is yours, not mine. Everything else here is now inside V1 scope, but the task inbox page explicitly specifies a grouped list for coach mobile. Picking Rounds means editing that page — which is fine, it's a design decision the doc recorded before a designer looked at it, but it should be a decision rather than a drift.

The card got weaker and I want to be clear about that. The first draft's reason stack — reply gap +70, adherence +30 — was the most persuasive thing in the whole exploration, and it's gone, because that arithmetic only exists in Priority view. What's left is a task summary and whatever counters the payload can safely carry. Rounds is still worth building on the inbox; just don't expect this version to feel as sharp as the one you liked.

Two things I'd prototype before committing: whether the hand-off round-trip actually feels like it returns you to the session or breaks it, and whether the session survives RTL. Both are cheap to test and both can sink the direction.