UI Research — app-ceo — Round 001

Generated: 2026-05-27T00:00:00Z by kashi-ui-researcher | Surface: /app/ceo (ExecutiveBriefPage) | Stage: 1/3 (research only — translator designs, mockupper renders)

1. Kashi 現状サマリ

DATA_VISIBILITY_MATRIX 確認: Executive は Org-level executive aggregates: Y(k-anon) のみ許可。Affected-candidate identity: N (aggregate-only)Individual risk alerts: N (aggregate-only)Raw transcripts: —。現状の /app/ceo/[slug] への drill-down 動線は §6 の unlock 4 条件 (pilot phase, evidence grade, no dispute freeze, grace-period) を満たした場合のみ解放される設計であることを前提に以降の analysis を行う。

2. 参照リファレンス (N=7)

Ref URL / ソース Archetype 調査ソース
Stripe Dashboard docs.stripe.com/dashboard/basics Financial executive dashboard — aggregate metrics + role-based access WebFetch 2026-05-27。Sidebar IA, Home page widget, role-based team access, drill-down patterns, time window controls を確認。
Linear Insights linear.app/docs/insights Team-level aggregate analytics — sidebar panel, measure/slice/segment model WebFetch + WebSearch 2026-05-27。Sidebar panel IA, measure/slice/segment 3-param, scatterplot quartile, burn-up chart, drill-down-to-issue-list pattern を確認。
Vercel Analytics vercel.com/docs/analytics Aggregate project/deployment overview — privacy-first, anonymized hash WebFetch 2026-05-27。Visitors/Page Views タブ構造、Panels (top entries list)、timeframe dropdown、bot 排除、cookie-less 匿名化パターンを確認。
Workday People Analytics workday.com — augmented analytics Enterprise HR executive analytics — role-personalized insight delivery WebFetch 2026-05-27。Overview dashboard → discovery board → drill-down 階層、c-suite narrative summary、diversity/retention/attrition domain 分割、role-based personalized insights を確認。
Lattice People Analytics lattice.com/analytics People analytics — executive trend spotting, manager vs exec vs HR 3-tier WebFetch 2026-05-27。Manager/HR/Exec 3-tier role separation、cross-cycle charts、DEIB aggregate、Feedback Log bottleneck visibility を確認。
F1Studioz Smart SaaS Dashboard f1studioz.com/blog/smart-saas-dashboard-design/ SaaS strategic dashboard — executive overview, 3-type framework WebFetch 2026-05-27。Strategic / Analytical / Operational 3-type分類、F-pattern layout、"traffic light only for true alerts"、progressive disclosure hierarchy を確認。
OutSail / SHRM Labs HR Analytics outsail.co + shrm.org labs HR executive dashboard best practices — privacy guardrails, audit trails, 5-8 metric limit WebFetch 2026-05-27。Executive 5-8 metrics limit、role-tiered dashboard (exec/dept/ops)、privacy-by-design、audit trail / appeal pathway、plain-language disclosure pattern を確認。

3. 強信号パターン (≥3 refs で観察)

Pattern Kashi 課題との対応 観察 refs Kashi 互換性
P-01: Executive 5-8 metric limit + 単一トップラインスコアの排除

経営層向け dashboard では一画面に表示する一次メトリクスを 5-8 個に制限し、北極星指標 1 つを最上部に配置して残りをサブカードに降格させる。"everything equally important = everything unimportant" を防ぐ。

現状の /app/ceo は 4-col stat strip + roster + Plan C 5-col + Positive 5-col + governance section を同一 weight で並列表示。どこが「経営判断に直結する最重要情報」か不明瞭。
permanent-ui-principles.md §8: "A screen fails if everything looks equally important."
OutSail (5-8 core metrics)、F1Studioz (strategic dashboard北極星)、Smashing Magazine 2025 ("limit visible elements to ~5")
3/7 refs
✓ 直接適用

4-col stat strip を整理し「review candidates」を最重要 H1 メトリクスとして昇格、Plan C / Positive は progressive disclosure (折りたたみ) に降格。canon 違反なし。

P-02: 3-4 レベル drill-down 階層 + breadcrumb コンテキスト

aggregate overview → domain/team level → per-entity detail → raw data の 3-4 段階の階層。各ドリルイン時に "どこにいるか" を breadcrumb で明示。ユーザー研究では "level 2 以降でドロップオフ急増" のため shallow drill が最効率。

現状は roster カードクリック → /app/ceo/[slug] の 2 段階。breadcrumb なし。executive が per-manager page に到達したとき「どのコンテキストで見ているか」が失われる。
DATA_VISIBILITY_MATRIX §6: per-manager drilldown は 4 条件 unlock が必要。unlock 前後で UX が変わることを breadcrumb で伝える必要がある。
DataBrain drill-down guide ("breadcrumb navigation", level 2 drop-off)、Linear Insights (measure/slice → issue-list drill)、Stripe (customer → subscription → payment 3-level)
3/7 refs
△ 要調整

drill-down は DATA_VISIBILITY_MATRIX §6 の unlock 条件充足後のみ有効にする必要あり。breadcrumb に「集約ビュー → チーム [slug] (unlock 済)」のように unlock 状態を visible に。"個人識別情報なし" の注記を breadcrumb 隣に添える。

P-03: データ品質・観測窓の explicit 表示 (suppression-first)

各メトリクスカードに "last updated / data freshness" タイムスタンプを付与。データが取得できない / 閾値未満の場合は 0 や空白でなく "suppressed" / "below threshold" と明示する。Vercel は "bot traffic excluded" を UI 上に常時表示。

現状は suppressedCount を roster 上部のテキストで表示するが、stat strip の 4 数値は suppressed cards を除外した後の数字であることが読み取りにくい。k-anon 閾値 (team_size < 5) による抑制を明示しないと "見えているものがすべて" という誤読が生じる。
DATA_VISIBILITY_MATRIX §5: 閾値未満は "explicitly suppressed, not silently 0"。
permanent-ui-principles.md §6: "No qualifying signal never means no issue."
Vercel Analytics ("bot excluded" 表示、daily hash reset 説明)、Smashing Magazine ("last updated timestamp + sync status")、SHRM Labs ("plain-language disclosures wherever AI touches")
3/7 refs
✓ 直接適用

stat strip の各数値カードに "of [total including suppressed]" サブ文を追加。k-anon suppression count を stat strip 内で直接見えるようにする。WORKER_FACING_TRUST_CANON §6.2 の verbatim suppression footer を 1 行で stat strip 下に常時表示。canon 適合。

P-04: 時間窓コントロール = 「表示しているデータ窓」の誠実な連動

時間窓セレクター (7d / 30d / 90d 等) は必ず全メトリクスに連動する。"一部のカードだけが変化し他は静的" という状態は混乱を生むため、連動しない場合はコントロール自体を非表示にし固定窓の注記を出す。

現状は CEO_ROSTER_WINDOW_AWARE = false のため window toggle を抑制し t("coverage.windowUnsupportedNote") を表示する設計が既に正しく実装済み (AC-05)。ただし、この "固定窓注記" が coverage strip の小さなテキストに埋没しており、executive が気づかない可能性がある。
関連: r19 §7.4 disclaimer language inconsistency。
Vercel Analytics (timeframe dropdown 全タブ連動)、Stripe (Reports 全体に custom time-range)、Smashing Magazine (cached snapshot に timestamp — "trust through transparency")
3/7 refs
✓ 直接適用

既存の AC-05 実装の方針は正しい。UI 改善の余地は "windowUnsupportedNote" を coverage strip 内の小テキストから、roster セクションヘッダー直下の明示的インフォバーに昇格させること。canon 違反なし。

P-05: ロール文脈の常時可視化 (role label + visibility boundary)

executive / admin / manager 等のロールラベルを画面左上または page header に常時表示。"あなたは [Role] としてこのデータを見ています" を 1 行で宣言。ロール境界の説明 (何が見えて何が見えないか) を expandable で提供。Stripe, Workday いずれもロール切替 or ロール明示 UI を持つ。

現状の /app/ceo は kicker テキスト (t("index.kicker")) と h1 のみ。"あなたは CEO/Admin としてログインしています" という ロール文脈が消えやすい。複数 role を持つ admin ユーザーが誤って executive 視点と admin 視点を混同するリスクがある。
permanent-ui-principles.md §3: "Every screen must answer: Who is viewing this? What are they allowed / NOT allowed to see?"
permanent-ui-principles.md §11: "Every internal screen must include role label + visibility boundary."
Stripe ("Customer Service role" 等のロール別 access 表記)、Workday ("secure and personalized insights tailored to different leadership levels")、Lattice (Manager / HR / Exec 3-tier 明示)
3/7 refs
✓ 直接適用

page header または executive brief section の直下に "経営者ビュー — 集約データのみ表示 | 個人識別情報なし" の 1 行 role boundary note を追加。enterprise badge section (t("index.enterpriseBadge")) をこの role note と統合可能。canon §3 §11 適合。

P-06: ガバナンスステータスの progressive disclosure (expandable ではなく overview → detail ページ)

ガバナンス状態 (レーン設定 / レビュープロセス / 労働合法性等) は executive landing page ではステータスチップ 4 個のみを表示し、詳細は別ページに routing する。Workday は "business question tour" を landing から分離。Stripe は "Production Checklist" を landing に配置しつつ Detail は別画面。

現状の ExecutiveAggregateSection は landing page に structural lane / semantic lane / reviewer process / labor legitimacy の 4 状態を詳細テキスト付きで inline 表示。経営層が最初に見る画面としては情報量が多い。
permanent-ui-principles.md §7: "Governance detail should be discoverable, not dumped."
permanent-ui-principles.md §9: "Dashboard supports interpretation, not judgment."
Workday (overview → discovery board 分離)、Stripe (checklist widget + detail 別画面)、F1Studioz (strategic dashboard: clarity without detail)
3/7 refs
✓ 直接適用

ExecutiveAggregateSection を landing では "4 status chips + overall health indicator" のみに縮小し、詳細テキストは "ガバナンス詳細を確認" リンクで別画面へ routing。§7 progressive disclosure 原則に完全適合。

P-07: delta indicator + sparkline による時系列トレンドの inline 表示

各 KPI カードに "先月比 ±N%" や "3 週間の micro-chart (sparkline)" を付与することで、経営者が「今の数字が良い / 悪い / 変化した」を判断できる文脈を提供。数字単体では解釈不可能。

現状の stat strip は raw count (totalManagers / reviewCandidateCount 等) のみ。前週比 / 前月比の trend 情報なし。"review candidates が 3 件" が増加トレンドなのか安定なのか不明。
Kashi の moat は "longitudinal-across-meetings" = 時系列が最重要な見せ方。
permanent-ui-principles.md §9: dashboard card は "what window?" を答えねばならない。
Smashing Magazine ("delta indicators + sparklines")、OutSail ("sparkline trend over recent periods")、Linear Insights (burn-up chart / cumulative flow for trend)
3/7 refs
△ 要調整

trend を表示できるのは aggregate level のみ (DATA_VISIBILITY_MATRIX §3: Y(k-anon))。sparkline は aggregate counts の時系列のみ — 個人識別可能な動きを表示してはいけない。小規模チームで team_size < 5 の場合は trend も suppressed (k-anon floor §5)。

P-08: "Red alert = 真の障害のみ" ルール (traffic light の厳格運用)

赤色アラートは「本当に壊れている / 即時対応が必要」な状態にのみ使用。"注意" や "観察中" は amber/orange、"通常" は neutral / green。全員が赤いと誰も何もしない (alarm fatigue)。F1Studioz: "Never use red unless something is broken."

現状の gradeStyles は BLOCKED/INSUFFICIENT/WEAK/EMERGING/STABLE/HIGH_CONFIDENCE_STABLE の 6 グレードを stone/emerald palette で表現しており赤色は使っていない — 正しい方向性。ただし "AlarmTriangle" アイコン付き adaptationWatchPill の視覚的重みが、赤アラートと混同されないか確認が必要。
design_system_v1.md §1: --kashi-state-error は "NEVER use for 'risk detected' or analyzer output."
F1Studioz ("Never use red unless something is broken")、Smashing Magazine (amber = warning, red = critical)、OutSail ("red/yellow/green thresholds — executives instantly recognize")
3/7 refs
✓ 直接適用

現状の実装は基本的に正しい。Audit: adaptationWatchPill の AlertTriangle アイコンが amber/neutral であることを確認。design_system_v1 --kashi-state-warning (#B45309) を使用し赤を使わないこと。canon 適合。

4. 弱信号 (1-2 refs のみ、参考まで)

5. Kashi canon に反するため採用しないパターン

X-01: 個人離職リスクスコア / 退職予測ダッシュボード
Workday の "Retention and attrition" domain、Lattice の "risk reduction" 文言は executive に "誰が辞めそうか" を見せるパターンに接近する。Kashi は CANONICAL_PRODUCT_TRUTH.md §2: "A resignation / leave / future-behavior predictor" ではなく、かつ forbidden wording に "predicts resignation", "at-risk employee" が含まれる。executive view にこの軸を持ち込むと surveillance feel = permanent-ui-principles.md §1 "CEO surveillance dashboard" 化。→ 絶対採用不可。
X-02: マネージャーランキング / リーダーボード
Lattice / Workday の "performance ranking" パターン。Kashi は evidence grade を executive に見せるが、グレード順ランキングリストは "moral ranking of people" になる (permanent-ui-principles.md §9: "No dashboard may rank people morally")。現状のロスター表示順は managerId によるものだが、grade 順 sort は危険。→ sort は名前 / 部門順のみ可。grade 降順ソートは採用不可。
X-03: 組織健康スコア / チーム健康スコア
SaaS executive dashboard でよく見られる "Org Health: 82/100" パターン。forbidden wording: "organizational health score", "team health score" (CANONICAL_PRODUCT_TRUTH.md §2)。aggregate evidence grade の平均値を単一スコアに畳み込むと同等の問題。→ 採用不可。aggregate は count ベース (N teams with STABLE grade) で表現。
X-04: AI 生成 "組織診断" narrative
Workday の natural language narrative generation ("AI identifies top drivers, risks, and opportunities") や Lattice の "AI insight surfacing" パターン。Kashi にこれを持ち込むと "AI magic" feel = permanent-ui-principles.md §1 "generic AI SaaS hype"。また "AI が組織問題を自動検出した" という framing は forbidden: "detects intent / detects emotion" に近接。→ 採用不可。
X-05: k-anon threshold 未満データのサイレント表示
小グループ (team_size < 5) のデータを "0" や "N/A" で表示するパターン。DATA_VISIBILITY_MATRIX §5: "explicitly suppressed, not silently reported as 0 or no data". 0 表示は "問題がない" と読まれ permanent-ui-principles.md §6 "no qualifying signal never means no issue" 違反。→ suppression footer verbatim 必須。

6. translator への引き継ぎメモ

最重要パターン上位 3 つ

  1. P-01 + P-06 セット: 情報ヒエラルキーの再構築。 現状は 5 セクションが equal weight で並列。"review candidates" を北極星 H1 メトリクスとして昇格し、Plan C / Positive セクションを progressive disclosure (expandable または detail ページ) に降格、ExecutiveAggregateSection を status chip 4 個 + detail link に縮小する。これが /app/ceo の cognitive load の根本改善。
  2. P-03: k-anon suppression の explicit 表示を stat strip に統合。 "3 teams reviewed / 2 suppressed (below k=5 threshold)" のような分子分母形式で stat strip に常時表示。WORKER_FACING_TRUST_CANON §6.2 suppression footer を stat strip の下端に 1 行固定。これは canon 要件でもある。
  3. P-05: Role boundary note をページトップ固定。 "経営者ビュー — 集約データのみ | 個人識別情報は表示されません" を h1 直下に 1 行表示。enterprise badge と統合可能。permanent-ui-principles.md §3 §11 の merge gate 要件を満たす。

絶対に外せない Kashi 制約 (translator が proposal 設計時に守るべき)

  1. 個人 drill-down 動線は DATA_VISIBILITY_MATRIX §6 の 4 条件 unlock を表示すること。 unlock 済みカードと未解放カードを UI 上で明確に区別する。未解放カードは /app/ceo/[slug] へのリンクを表示しない。
  2. aggregate 数値は必ず suppressed count を分母に含めること。 "3 teams" と表示するなら "3 of 5 teams (2 suppressed)" と書く。
  3. grade 順ランキングソートは禁止。 sort は部門名 / チーム名 (alphabetical) のみ。grade によるソートは moral ranking 化する。
  4. 赤色 (--kashi-state-error) はシステムエラーにのみ使用。 evidence grade や alert には amber (--kashi-state-warning) 止まり。
  5. "no qualifying signal" は "問題なし" と表現してはいけない。 suppression / window / quality の理由を必ず添える (permanent-ui-principles.md §6)。

References: Stripe Dashboard Docs | Linear Insights Docs | Vercel Web Analytics | Workday Augmented Analytics | Lattice Analytics | F1Studioz Smart SaaS Dashboard | OutSail HRIS Executive Dashboard | SHRM Labs Privacy Guardrails | Smashing Magazine Real-Time Dashboards 2025 | DataBrain Drill-Down Guide