One real run of the Opportunity Engine, published as-is, including the unflattering findings. No live inference on this page. Step through how it was produced

Proposal package · synthesis

Customizable navigation drawer

Claude mobile app (Android-first) · nav-drawer edit mode: reorder + reversible hide · 2026-07-13

Instrument + retention A/B first — don't fund the full build yet 7 High 11 Medium 3 Low

Instrument first (Phase 0 / Experiment 1), then run the retention A/B — do NOT fund the full build until both clear.

The problem is plausible and the PRD is an unusually honest de-risk-first plan, but the two findings that gate the investment are both unresolved: the high-ARPU cohort the premise rests on has never been measured, and the retention lift the whole bet depends on is hypothesized, not tested. Fund the ~1 eng-week instrumentation to confirm the cohort (Gate 1), then design the retention/renewal A/B as the make-or-break gate; withhold the ~7–12 eng-week Android beta (and the ~12–21 eng-week cross-platform build) until both clear.

Assumptions (premises, not risks). This proposal assumes the PM owns the mobile-nav surface and has reconciled it with the current roadmap (including any bottom-tab-bar direction); nav-shell / roadmap fit is a stated premise, and the PRD's "Gate 0" reconciliation is treated as owned/cleared by the PM. The preference model is still kept nav-shell-agnostic (R10) as cheap durability hygiene. Build timelines below assume AI-assisted development as the baseline — the calendar is gated by validation runtime, on-device accessibility testing, cross-platform QA, and review, not code volume.

What this is

An explicit, discoverable edit mode for the Claude mobile app's left nav drawer: reorder and reversibly hide five destinations (Chats, Projects, Artifacts, Code, Dispatch), with "New chat" locked as a permanent top anchor. It targets a high-value minority — technical/agentic power users who treat the phone as a remote control for Code/Dispatch and pay a near-daily cost hunting for items 5–6 in a chat-tuned list. Demand is real-but-hypothesized: no organic mobile-drawer demand was found anywhere reachable; the case rests on an n=1 requester plus the identical complaint the same segment files against Claude Code's desktop sidebar (GitHub #72126 et al.).

Why it matters — the business bet. The target users are high-ARPU subscribers (Pro/Max) whose daily value comes from the agentic surfaces — Code (remote-control coding) and Dispatch (task assignment) — which today sit 5th–6th in a chat-tuned drawer. The bet, stated plainly: easing access to high-value features for high-value users can drive retention / reduce churn among the segment most expensive to lose. So the measure of success is a retention/renewal A/B test — adopters vs. a matched control in the same cohort — not UX-adoption or tap-speed proxies. The A/B is make-or-break; the retention lift is hypothesized, not proven.

Scope decision. The riskiest third — set-default-landing — is cut from V1: it changes app-open behavior for a majority well-served by chat-home today, has no positive comparator precedent (Outlook, mobile Safari, MyFitnessPal all declined it), and directly triggered a kill-condition. That cut is the right call; the residual is holding the deferral through build.

See it — the proposed solution

Before the cost and risk analysis below, here is the feature itself. The problem: a power user hunting past chat-centric items for Code / Dispatch every time they open the app. The potential solution, in your hands: open the drawer, tap Edit, then drag to reorder or hide destinations — "New chat" stays locked on top. Try it before reading the trade-offs.

A native-feeling Android/dark-mode prototype: working drag-reorder, reversible hide into a "More" group, the locked New-chat anchor, Done/Reset, and a first-run discovery prompt. State is in memory only — no real routing or sync.

Read it as a look-and-feel reference, not a build. Three risk-sweep agents read the demo's code directly: it implements almost none of its own accessibility intent (rows 2 and 11 below), and its "Opens on launch" exploration control persists into committed state on Done — contradicting the V1 cut of set-default-landing (row 10).

Open the demo full screen →

Top 3 risks

The three highest-ranked from the register (full list below).

Disagreements (not averaged)

Build-or-not — the core call. Growth / monetization (business-viability review) argues fund ONLY the cheap validation, not the full build (power-user minority, no moat, UX-proxy metrics); the PM, Product Design, and Tech Architecture endorse de-risk-first build sequencing. Both are right about different questions — the sequencing de-risks the UX, not the business. Synthesis take: add a churn/renewal metric before the build gate; don't let Experiment 2's UX bar auto-authorize the ~7–12 eng-week beta (or the ~12–21 eng-week cross-platform build).
Design vs. implementation (accessibility). Product Design's a11y intent and Accessibility review's independently re-verified contrast math check out; the Prototyper's demo builds almost none of it. Synthesis take: treat the "mandatory" non-drag path as a release-gated workstream — the prototype proves the naive build drops both the reorder path and focus.
Mechanism. Product Design recommends free-drag; Competitive research and Tech Architecture recommend pin-to-top (the only shape any comparator validated — cheaper, simpler a11y, same data model). Synthesis take: pin-to-top for the beta; it upgrades to free-drag later with no data migration.
"Extend Starred." The PM / the PRD and Competitive research imply cheap reuse; Tech Architecture shows Starred is a per-project content boolean, so nav prefs are a NEW subsystem. Synthesis take: price it as one, not as "we already have Starred."
C2 hide-policy. Growth / monetization (business-viability review) frames it as governance (who holds the veto — should be growth, not the feature team); Ethics & Trust/Safety says it's prior — is it legitimate to metric-gate a user's own "hide" so it doesn't conceal monetized surfaces? Synthesis take: resolve the "More" default in the user's favor; C2's 10% is a ceiling to justify, not a target.

Dig here next

  • Phase 0 / Experiment 1 — instrument the drawer (~1 eng-week) to test Gate 1 (does the high-ARPU cohort exist at scale?) — but resolve the R11 telemetry consent + retention posture (EU/UK ePrivacy) before WS-INSTR ships broadly.
  • Design the retention/renewal A/B (adopters vs. a matched control in the same cohort) as the make-or-break gate before any build commitment — the retention lift is hypothesized, not proven, and UX-adoption proxies won't stand in for it.
  • Confirm two eng unknowns: is the synced-preferences store extensible (±2–3 wks on WS-MODEL), and does a server-side validator reject new_chat in the synced blob (the fleet-wide-strand gap)?

Handoff note

  • Design: react to the drag-a11y gap, the pin-to-top-vs-free-drag call, and the C1 affordance-salience tradeoff; validate every inferred token/affordance against a live build.
  • Eng: react to the server-side write-validation gap, the "new subsystem, not Starred reuse" estimate + store extensibility, and build the support/reset tool and accessible reorder path as first-class workstreams.
  • Legal/T&S: react to the R11 telemetry consent + retention posture (before WS-INSTR hits EU/UK), the C2 "hide must actually conceal" guardrail, and the WCAG/ADA drag exposure.
  • Product leadership: own Gate 1 (does the cohort exist) and the retention-A/B design; decide whether the hypothesized retention lift is worth the build before funding it.

Implementation approach (reference key)

A compact key so every coded identifier used on this page resolves here. Sourced from prd.md (gates, experiments, requirements, counter-metrics) and tech-spec.md (workstreams + effort). This is a reference, not new analysis. Estimates assume AI-assisted development as the baseline — hand-writing the drag list, schema, and merge is no longer the schedule's long pole; the calendar is gated by validation runtime (Experiment 2 needs weeks of live user data), on-device accessibility testing, cross-platform native QA, and review, not code volume.

Build sequence

  1. Phase 0Instrument (= Experiment 1). WS-INSTR only — drawer telemetry (R11), no new UI. Delivers Experiment 1 outright and is shell-agnostic. ~1 eng-week · the one clearly proportionate spend today.
  2. Gate 1Cohort exists. Experiment 1 must show a skewed-usage (high-ARPU) cohort at meaningful scale before any build. No visible cohort → do not build.
  3. Phase 1Model + Android beta (= Experiment 2). WS-MODEL (nav_preferences schema + merge), WS-READ-AND, WS-EDIT-AND, WS-A11Y-AND, WS-DISCOVERY, WS-RELEASE (C1/C2/C3 gates). ~7–12 eng-weeks cumulative · ~2–4 calendar weeks of build on a small pod — then the beta's calendar is gated by Experiment-2 runtime (weeks of user data), not the code.
  4. Phase 2Production parity — after the beta validates. WS-READ-IOS / WEB / DESK, WS-EDIT-IOS, WS-EDIT-WEBDESK (native, no reuse across platforms). ~12–21 eng-weeks full cross-platform total.

Glossary

Gate 1
Does the skewed-usage (high-ARPU) cohort exist at scale (from Experiment 1)? The one remaining pre-build gate.
Experiment 1
Instrument the existing drawer, no new UI — measure whether a cohort disproportionately taps Code/Dispatch and pays a time/error cost.
Experiment 2
Actively-promoted fake-door / limited beta of edit-mode to that cohort; adoption measured vs. the ~15% iOS-14-under-promotion ceiling (<5% = kill/rescope) — paired with the retention A/B as the business gate.
Phase 0 / 1 / 2
Instrument → Android beta → cross-platform parity (see sequence).
R1
Discoverable entry to edit mode (a persistent, visible affordance — not a hidden gesture).
R2
Reorder the five destinations.
R3
Reversible, non-destructive hide (items move to a collapsed "More" group).
R4
Non-hideable chat fallback — "New chat" always visible, top, locked; can't be moved or hidden.
R5
Gated surfaces stay reachable — hidden Code/Dispatch/Artifacts remain in "More."
R6
One-tap reset to default order + visibility.
R7
Persistence across app restart and update.
R8
Cross-device sync of the order/hide state.
R9
Active, targeted discovery — a one-time contextual prompt to the cohort.
R10
Nav-shell-agnostic preference model — the saved state is stored independently of the drawer UI; cheap durability hygiene if the nav shell ever changes.
R11
Instrumentation — drawer telemetry powering every success/counter-metric and the experiments.
C1
Counter-metric: majority chat-loop non-regression (±2%, a hard release gate).
C2
Counter-metric: gated-surface / upgrade-funnel non-regression — hiding must not cut exposure >~10%.
C3
Counter-metric: backlash / confusion ("menu changed," "can't find X") near zero.
WS-INSTR
Drawer telemetry workstream (= Experiment 1). ~1 eng-week.
WS-MODEL
nav_preferences schema + merge logic + versioning; extend the synced-preferences store. 1–2 eng-weeks riding existing sync, 3–5 if net-new — the spec's single largest cost swing.
WS-READ-AND / -IOS / -WEB / -DESK
Per-platform read/render path (apply order + hidden, render "More," pin the anchor).
WS-EDIT-AND / -IOS / -WEBDESK
Per-platform edit mode (reorder, hide/unhide, reset) — native-built per platform, no reuse.
WS-A11Y-AND
Non-drag accessibility path (move-up/down actions + announcements) — the "least compressible" workstream, a quality/legal gate.
WS-DISCOVERY
Edit affordance (R1) + one-time cohort prompt (R9) + cohort batch job.
WS-RELEASE
Feature flags, kill switch, QA against the C1/C2/C3 gates.

Risk register

Every risk in one list, sorted by severity then confidence. Filter by lens (who owns it) and severity; filters combine. Full detail and the coverage note are in risk-register.md. (The roadmap-collision finding is now a stated premise — see Assumptions — not a scored risk.)

Lens
Severity

Showing 21 of 21 risks

#1HighProduct ViabilityConf: High
Business bet is hypothesized, not yet validated — the retention/churn A/B is the gate.

The bet — easing access to Code/Dispatch for high-ARPU (Pro/Max) users to drive retention / reduce churn — is plausible but unproven, and the three success metrics (adoption, efficiency, config-retention) are all UX proxies. The make-or-break gate is a retention/renewal A/B (adopters vs. a matched control in the same cohort), which isn't designed yet; without it, "success" is adoption + speed, not money.

Flagged by: business-viability  ·  Investigate: Finance/data + PM — design and pre-register the retention/renewal A/B (90-day churn/renewal delta, adopters vs. matched control) as the build gate; don't let UX-adoption proxies stand in for it.

#2HighDesignOtherConf: High
Accessible reorder path is unbuilt and unvalidated (WCAG 2.2 SC 2.5.7 + ADA/Unruh exposure).

In the prototype, drag has zero keyboard/screen-reader/switch route, and every edit action rebuilds the DOM and drops focus — breaking even the buttons that work. The spec calls the a11y actions "mandatory" but underspecifies focus retention, a sighted-keyboard path, and locked-anchor interaction, so the mandatory path is at risk of being dropped.

Flagged by: accessibility, product-designer, tech-architect, legal-compliance  ·  Investigate: Accessibility + mobile eng — build and manually test a real TalkBack/switch/keyboard reorder path (WS-A11Y), re-architect the render to preserve focus, release-gated; designer adds the missing mechanics to the spec.

#3HighTechnicalConf: High
No support tooling to inspect/reset nav preferences; operations unstaffed.

Nothing lets support view or reset a user's nav_preferences, so a "my menu changed / item disappeared" ticket that in-app Reset/"More" can't fix means diagnosing blind, with an ad-hoc eng DB edit the only escalation. Ownership of the cohort/telemetry pipeline and post-launch monitoring is also unnamed.

Flagged by: operational-readiness (privacy-security + ethics note the same gap)  ·  Investigate: Support lead + backend eng — scope a minimal read-and-reset support tool and name a pipeline owner before Phase 1 GA.

#4HighProduct ViabilityOtherConf: Med
C2 hide-policy is one design decision from a dark pattern.

C2 caps the exposure loss from hiding Code/Dispatch/Artifacts at ~10%, and the open "More collapsed vs. expanded-by-default" question frames the business-favoring option as keeping the "hidden" item visible. Resolved toward the metric, "hide" is named as concealment but engineered not to conceal for the monetized surfaces (DSA Art. 25 / FTC §5 exposure) — and the veto sits with the feature team, not an independent growth owner.

Flagged by: ethics-trust-safety, business-viability, legal-compliance, product-analyst, product-manager (5)  ·  Investigate: Product leadership + design-ethics reviewer + independent growth owner — ratify that "hide" must functionally reduce exposure; resolve "More" in the user's favor; treat C2's 10% as a ceiling to justify, not a target.

#5HighOtherConf: Med
Telemetry governance — a bigger risk surface than the feature itself.

R11 per-account, high-granularity drawer telemetry ships early, broadly, "unflagged or near-so" under Experiment 1 — before the feature and regardless of whether it ever ships — with no retention window, no aggregation, no confirmed opt-out link, and no purpose-limit on the derived cohort/hide-state signals. EU/UK ePrivacy (TTDSG/PECR) imposes a consent-for-device-access test separate from GDPR, and it's unknown whether the native app has that gate.

Flagged by: privacy-security, legal-compliance, ethics-trust-safety (3)  ·  Investigate: Privacy counsel + data-governance + analytics eng — before WS-INSTR reaches EU/UK, confirm consent basis, set a bounded raw-event retention (e.g., 60–90 days) with aggregation, and purpose-scope the cohort label.

#6HighTechnicalConf: Med
The "can't be stranded" invariant is client-side only — no server validation on the write path.

R4 is "enforced in code, not data." Without server-side write validation, a modified/replayed client could write hidden:[new_chat] or a malformed order to the synced store and — via last-writer-wins across every device — durably reproduce the exact fleet-wide "stranded from chat" failure the feature designs against. The write and telemetry paths also need account-scoped authz (IDOR could corrupt other blob fields; injected events could poison the cohort and C1/C2/C3 gates).

Flagged by: privacy-security  ·  Investigate: Backend/platform + security eng — add server-side schema validation (manifest allowlist, reject new_chat, size/dedupe) and pen-test both endpoints for ID/session substitution before WS-MODEL/WS-INSTR ship.

#7HighProduct ViabilityConf: Med
Opportunity cost + orphan risk — a non-differentiating feature vs. a reliability backlog.

The ~12–21 eng-week cross-platform build (~7–12 for the Android beta) serves a minority the team's own evidence calls no-moat, while the same paying segment has documented Dispatch/Code reliability bugs (#39549/#54973/#46391) — a more direct retention mechanism no one has compared against. As a "sideways" feature it's a canonical candidate to be built Android-only then orphaned, never reaching the parity (R8) the PRD says is required.

Flagged by: business-viability (competitive on no-moat)  ·  Investigate: Product leadership — before Phase 1, require a stated reason this beats reliability work on retention-dollars-per-eng-week, and decide committed-multi-quarter vs. bounded-experiment explicitly.

#8MediumProduct ViabilityConf: High
Demand unproven / cohort unmeasured.

No direct organic demand was found in any reachable channel; the evidence is adjacent (Claude Code desktop GitHub #72126/#70104/#25974) plus the n=1 requester — and the cohort the premise rests on has never been measured because the per-item telemetry doesn't exist yet.

Flagged by: user-research, product-manager, tech-architect (3)  ·  Investigate: PM + data — run Experiment 1 (WS-INSTR, ~1 eng-week), confirm the cohort at scale (Gate 1), and pull Anthropic-side feedback corpora the tools couldn't reach.

#9MediumDesignConf: High
Fidelity + net-new interaction paradigm — validate against a live build.

Every token and edit affordance is eyeballed from two Android dark-mode screenshots and is net-new to Claude mobile (the app teaches no list-edit gesture). If the live app has a contradicting pattern or the real token export differs, it reads "almost right but foreign" — and the demo commits to free-drag where the PRD left the mechanism open.

Flagged by: design-language, product-designer, prototyper, product-analyst (4)  ·  Investigate: Product-designer/prototyper — validate against a live build + token export and the live nav taxonomy before hi-fi; treat the demo as one option.

#10MediumProduct ViabilityDesignConf: High
Set-default-landing: the cut is right, but the deferral isn't enforced.

Set-default-landing would change app-open behavior and degrade the majority's chat loop (product-analyst: high/high) and has no positive comparator precedent, triggering a kill-condition (competitive: high/med). V1 cuts it — which addresses the risk — but the demo still persists "Opens on launch" on Done and adds a second clay marker, contradicting the cut.

Flagged by: product-analyst, competitive, user-research, ethics, prototyper, business-viability (6)  ·  Investigate: PM — confirm the cut + three-part reopening bar hold; prototyper — strip the launch-flag persistence + clay marker from the demo before any stakeholder review.

#11MediumDesignTechnicalConf: High
Demo diverges from its own sound accessibility spec (build-time fixable).

0dp gap between the adjacent hide/grip controls (spec mandates ≥8dp) on the exact "don't fat-finger" loop the feature is for; text/secondary on surface/1 fails AA (~4.27:1); the locked padlock uses an undocumented token at ~2.99:1 (below the 3:1 floor); and the mandated grab cue, aria-live, and per-hide Undo are unimplemented.

Flagged by: accessibility, product-designer (2)  ·  Investigate: Prototyper/eng — add ≥8dp spacing, fix the contrast tokens, wire aria-live + Undo + a grip-brightening cue; usability-test on-device.

#12MediumTechnicalConf: High
Last-writer-wins sync silently discards edits.

Sync conflicts and old-client writes against an evolving schema can drop a customization with no notification, trail, or recovery beyond redoing it — a long-offline device reconnecting reads as "my menu randomly reverted," near-undiagnosable. tech-spec §8 proposes only "document it."

Flagged by: operational-readiness (tech-architect edge cases)  ·  Investigate: Backend eng — decide whether a lightweight conflict signal is worth it vs. accepting silent LWW; support lead gets a diagnostic macro regardless.

#13MediumTechnicalConf: High
Nav-taxonomy governance is an unbudgeted forever cost.

Every future nav change (add/rename/deprecate) now requires merge-path QA against customized-user states in perpetuity, and R9/R11 cohort thresholds decay as the taxonomy shifts — but no owner, checklist, or budget line exists. This drawer recently gained Code and Dispatch, so "add a nav item" is not rare.

Flagged by: operational-readiness  ·  Investigate: Mobile eng lead — own a nav-taxonomy change checklist; PM + data — name a permanent owner for cohort-definition health before the feature exits beta.

#14MediumProduct ViabilityDesignConf: Med
Majority chat-loop tax (C1 exposure).

A persistent "Edit menu" affordance on the one screen every user sees — to serve a minority — risks an IA/complexity tax on the majority chat segment and could breach C1 (±2%), which sits on the dominant Free→Pro conversion loop. Low-salience / cohort-only mitigations are unverified.

Flagged by: product-analyst, product-manager, product-designer, business-viability (4)  ·  Investigate: Product-designer + PM — A/B quiet-row-for-all vs. cohort-only display, with C1 as a hard release gate.

#15MediumProduct ViabilityConf: Med
Discovery is the behavior chain's weakest link.

Settings-gated, opt-in customization sees structurally low uptake without active promotion (Word study: <5% change any setting; ~86% keep default notifications), and this app teaches no list-edit gesture — so a silently-shipped affordance likely under-delivers even for the target cohort.

Flagged by: user-research, product-manager, competitive (3)  ·  Investigate: Product-designer + PM — commit to active targeted discovery (R9 prompt) and run Experiment 2 vs. the ~15% ceiling (<5% = kill/rescope).

#16MediumDesignTechnicalConf: Med
Form-factor gaps + R8 sync only partial in the beta.

The design is validated only for Android-phone dark mode; iOS, light mode, and tablet/desktop (a persistent sidebar, not a drawer) are behaviorally different and unobserved, and R8 sync is only partially deliverable in the Android-only beta — so a user who customizes on Android sees no change elsewhere, which the PRD's own bar says reads as a regression.

Flagged by: design-language, prototyper, operational-readiness (3)  ·  Investigate: PM — confirm the single V1 target and get iOS/light/desktop captures; align messaging to actual Phase-1 capability ("Android-only in V1").

#17MediumDesignOtherConf: Med
Non-cohort / vulnerable-user accidental hide.

The two edit-mode entries are a low-salience row and an undisclosed long-press, and the only recovery is a ~4s auto-dismissing Undo + a low-salience "More" — so an elderly, motor-impaired, or distracted user can hit edit mode by accident, mis-tap hide, and be left with a "missing" item that aggregate C1/C3 gates won't catch. A hidden Code/Dispatch may also delay reaching a pending real-world agent approval if notifications don't deep-link.

Flagged by: ethics-trust-safety  ·  Investigate: Product-designer + accessibility — usability-test the long-press mis-tap chain with older/motor-impaired testers, consider a longer recovery path, and resolve deep-linking with a safety framing.

#18MediumTechnicalConf: Med
Estimation swing — "extend Starred" is a metaphor, not code reuse.

Starred is almost certainly a per-project content boolean, so nav prefs are a NEW subsystem — anyone estimating from "we already have Starred" under-prices it. And the synced-preferences store's extensibility is unconfirmed: if schema-locked/other-team-owned, WS-MODEL roughly doubles (1–2 → 3–5 eng-weeks) with a cross-team dependency.

Flagged by: tech-architect  ·  Investigate: Mobile/backend eng lead — confirm Starred's implementation and any existing reorderable component, and the store's extensibility/ownership, before freezing scope.

#19LowOtherConf: High
Store data-disclosure filings for the new telemetry.

New R11 event types very likely require App Store Connect "App Privacy" and Google Play "Data Safety" updates, and the analytics vendor should be confirmed not to meet Apple's ATT "tracking" definition — store-policy filings independent of privacy law, with their own rejection/takedown risk.

Flagged by: legal-compliance  ·  Investigate: Mobile platform/privacy eng — update both filings and confirm no ATT trigger before the beta / Experiment 1 broad rollout.

#20LowOtherConf: High
New passive disclosure at rest.

The resting "More · N" badge and the cohort-only R9 hint card are visible without entering edit mode — a small new signal ("this account deprioritized N items" / "flagged as a power-user cohort") that today's fixed six-item drawer doesn't expose to a shoulder-surfer or screen-share.

Flagged by: privacy-security  ·  Investigate: Product-designer — confirm this tradeoff is acceptable (consistent with the drawer already showing Starred/Recents at rest).

#21LowProduct ViabilityConf: High
No moat — the edge is real but short-lived.

The reorder/hide pattern is fully commodity outside AI assistants and cheap for any of the five closest competitors to copy once prioritized (ChatGPT's community has asked since Jan 2024, unshipped). Any first-mover edge is temporary, not durable.

Flagged by: competitive-researcher  ·  Investigate: PM — frame this as "closing an AI-assistant-category gap for a valuable minority," not innovation, when presenting to leadership.

Artifacts