MCP App Cards — convergent spec (six cards · real brand · density)

Six MCP App cards on ONE shared shell with the real SageOx brand lockup (OX logomark + theme-swapped wordmark PNG), a single ghost Open in SageOx deep-link, and a shared encoding vocabulary: source/actor as a neutral #slug pill, timestamp right-aligned sans, status as a hollow outline chip, topic as a filled pill (wip·sage / decision·copper / blocker·danger / done·teal). Density gains come from removing dead vertical space and redundant ink — not cramming. Light/dark via data-mode (top-right, or press m).

1 · Recording Insights

AI-extracted decisions, actions, and open questions. Owner #slug chip rides the trailing edge of each decision title row (no inline arrow); the per-decision context sub-line is kept. Neutral topic-routing chips ("knows: auth") are who-to-ask-about-X discovery only — no influence / rank (never-rank-people firewall). Only Decisions is inline; Actions + Open questions sit behind +N more.

Pending / extracting
SageOxSageOx

Recording Insights

Open in SageOx
Extracting decisions, actions & open questions…
Populated / owner chip + routing
SageOxSageOx

Recording Insights

Open in SageOx
from Platform sync · Tue May 27 · 32 min
Decisions
  • Adopt event-driven sync over polling for the platform pipeline#dana
    Polling at 30s was missing late events; outbox dispatcher removes the lag.
  • Ship the auth migration behind a feature flag, default-on in dev#ravi
    Hard kill-switch via env; per-user rollout through PostHog.
#dana — knows: auth #ravi — knows: moq #mira — knows: sync pipeline
AI-extracted — read-only.

2 · Decision Ledger

The AI / Human source badge is inlined at the trailing edge of the decision text row (not a solo line); the owner #slug chip rides the same edge. A per-decision speaker/time grounding line ("dana decided · 14:02") keeps extracted claims from floating. Provenance row names the source recording.

Pending / extracting
SageOxSageOx

Decision Ledger

Open in SageOx
Extracting decisions from this recording…
Populated / inline source + grounding
SageOxSageOx

Decision Ledger

Open in SageOx
from Auth migration · Wed May 28 · 41 min
Decisions
  • Cut over to session-cookie auth on the BFF, keep Bearer for CLI#danaHuman
    dana decided · 14:02
  • Run a pepper-rotation drift fallback for one release window#raviAI
    ravi proposed · 22:47
Action items
  • Wire the kill-switch env var into the api-go config loader#miraDue Fri
Extracted — read-only.

3 · Chapter Scrubber

The proportional per-chapter duration bar is kept (length = duration / total — the gold-standard mark); the redundant bar-label is dropped because the range chip already states 0:00–4:10. Node dots are hollow; per-topic-pill inner dots are gone. The fullscreen state is a shared-baseline horizontal Gantt (position = start, length = duration) — it reveals the gaps/overlaps the inline list hides, the only card that earns PiP.

Pending / extracting
SageOxSageOx

Chapters

Open in SageOx
Segmenting the recording into chapters…
Populated / inline duration bars
SageOxSageOx

Chapters

4 chapters Open in SageOx
from Platform sync · Tue May 27 · 32 min
Total31:40
AI-extracted chapters — click to jump in SageOx.

Fullscreen / shared-baseline Gantt — earns PiP

SageOxSageOx

Chapters · timeline

4 chapters · 31:40 Open in SageOx
from Platform sync · Tue May 27 · 32 min
0:008:0016:0024:0031:40
Kickoff
Polling vs events
Auth risks
Next steps
Horizontal position = when it started; bar length = how long it ran.
Kickoff & agenda 0:00–4:10 · Polling versus events 4:10–18:30 (longest, 14:20) · Auth migration risks 18:30–27:05 · ~1:00 gap · Next steps 28:05–31:40.
The Gantt reveals the gap before "Next steps" — the reason a chapter view earns full-screen / PiP.

4 · Recordings (picker)

Honestly a recordings picker — captioned as such so the catalog name doesn't oversell. Rows are already dense; padding tightened to ~8px. Status is a hollow outline chip (shape distinguishes it from a filled topic); the relative timestamp sits on the same row (no solo line).

Pending / loading
SageOxSageOx

Recordings

Open in SageOx
Loading recent recordings…
Populated / status outline chips
SageOxSageOx

Recordings

3 Open in SageOx
Click a recording to open its decisions and action items.

5 · Attention Tray

The heavy 46px kind-rail is collapsed to an inline kind chip on the meta row; row padding is ~7px. The "Sorted by urgency" header keeps the position=priority encoding legible. Topic is a filled pill, status (failed recording) is the hollow outline chip — same vocabulary as everywhere else. Blockers sort first, then decisions, then wip.

Pending / building tray
SageOxSageOx

Needs a look

Open in SageOx
Consolidating murmurs & recordings…
Error / self-heal
SageOxSageOx

Needs a look

Open in SageOx
Couldn't build the tray. Showing nothing rather than a stale list. Every failure offers the next move.
Populated / sorted by urgency · inline kind chip
SageOxSageOx

Needs a look

4 signals Open in SageOx
Sorted by urgency — blockers first
  • Auth migration blocked on pepper-rotation drift

    Murmur #api-go blocker High importance
  • Decided: events over polling for the sync pipeline

    Murmur #api-go decision
  • Mobile release retro — transcription failed

    Recording Failed
  • Wiring the kill-switch env var into api-go config

    Murmur #api-go wip
Consolidated murmurs + recordings for #api-go.

6 · Team murmurs

Canonical density fix: each murmur is now 2 lines — row 1 = topic pill + #slug source (moved up next to the topic) + relative time pushed right; row 2 = the murmur text. The vertical spine and per-item node dot are dropped (decoration — day-group + relative time already encode order). Day-group headers and the topic-count tally legend are kept.

Pending / loading feed
SageOxSageOx

Team murmurs

Open in SageOx
Loading recent murmurs…
Populated / 2-line rows + tally
SageOxSageOx

Team murmurs

5 murmurs Open in SageOx
Since 2d ago
Last 2d:1 blocker2 decisions2 wip
Today
  1. blocker#api-go

    Auth migration blocked on pepper-rotation drift — need a one-release fallback.

  2. decision#api-go

    Decided: events over polling for the sync pipeline.

  3. wip#api-go

    Wiring the kill-switch env var into the api-go config loader.

Yesterday
  1. decision#platform

    Decided to default the new auth flow on in dev.

Lightweight coordination signals from your team — read-only.