Brainstorm the intervention
Before committing to a fix, ask for the whole option space — grounded in what actually exists in the code — so the choice you make is informed by alternatives you didn't know you had.
“Here's my rough problem: Acme users churn after onboarding. Search the codebase and brainstorm 10 places we could intervene, from cheapest to most ambitious. I'll tell you which ones resonate.”
10 places to intervene, cheapest to most ambitious
I searched apps/web, services/, and packages/ for onboarding, invite, and first-session code paths. A pattern showed up: a lot of retention machinery already exists but is disconnected — the cheapest options below are mostly wiring, not building. Check the ones that resonate and copy the reply at the bottom.
Fix the dead-end empty state
Found in code — The zero-projects dashboard renders the illustration and the copy “No projects yet” — and nothing else. NewProjectButton exists two directories over but was never imported here; the only way forward is the tiny “+” in the top nav. Every churned user's last screen was probably this one.
Turn on the sample project that already exists
Found in code — Someone built a complete seeded demo project — “Product teaser v3” with a 45s clip, four timestamped comments, and one resolved thread — behind the flag sample_project_v1. The flag is still false for everyone and the file hasn't been touched in 8 months. The feature is done; it was just never shipped.
Show pending invites inside the app
Found in code — Invites go out as email only. TeamPanel queries team_members but ignores the invites table entirely — an inviter can't see that their teammate never accepted, and there's no resend. For a collaborative review tool, a solo user is a churn-in-waiting.
Wire the milestones table to a dashboard checklist
Found in code — The backend already records first_upload, first_comment, first_invite_accepted, and first_approval in user_milestones — but no client code reads the table. It exists purely for an analytics dashboard. All the ingredients for a “3 of 4 steps done” checklist are sitting there.
Engineer the first-comment moment
Found in code — Timestamped comments are Acme's core loop, but the affordance is hidden: clicking the timeline seeds the timestamp into the composer, and nothing teaches this. Timeline.tsx has a TODO: first-run hint? from the original author. Add a ghost pin on first play — “click anywhere to comment at this moment”.
Rescue silently failed first uploads
Found in code — When transcode fails (unsupported codec, oversized ProRes, corrupt moov atom), the job moves to failed, logs to Sentry, and tells the user nothing — the project card just shows a spinner forever. There's a retry-with-fallback-preset code path that's only reachable from an internal admin script.
Watch-together first session for teams
Found in code — Live presence is fully built — shared playhead, live cursors, “Maya is watching” badges — but it only lights up if two people happen to open the same review. Nothing engineers that coincidence. Add a “review together” scheduling nudge when a teammate accepts an invite, deep-linking both into the same session.
Ship five review-workflow templates
Found in code — Approval workflows (rough cut → client review → final sign-off) are fully configurable — and start completely blank. The definitions directory contains only __fixtures__ for tests. Judging by a comment in WorkflowEditor.tsx, power users copy a shared Notion doc to set theirs up. Ship 5 opinionated templates: agency delivery, YouTube pipeline, client sign-off, internal QA, localization pass.
Built-in quick screen & camera recording
Found in code — Today Acme's onboarding has a hard external dependency: you need a finished video before the product is useful. But services/ingest already accepts chunked webm uploads (built for the mobile app), so a MediaRecorder-based “record your screen, get feedback” flow needs no pipeline work — “just” the capture UI. Removes the biggest reason a trial goes idle: nothing to review yet.
First-class client review portals
Found in code — Guest share links exist but are deliberately crippled: tokens expire after 24h, guests can't comment, and there's a // TODO(sasha): revisit guest perms after launch from two years ago. The users who churn are often the ones whose clients wouldn't sign up. Make guests first-class — persistent portal, comment-with-name, no account — and every external review becomes a retention loop (and an acquisition one).