Skip to content

[Epic] Needly v2 - Attention layer, differentiation and growth loops #22

Description

@kasuken

Goal

The MVP (#1) shipped the P0 row of docs/productidea.md: webhook ingestion, five detectors, the Action Inbox, lifecycle controls, Saved Views and Rules.

That is a working inbox. It is not yet the product the strategy describes, and it has no way to reach anybody who has not already installed it.

This epic covers the work between those two states, in three movements:

  1. Make it usable for a full workday. Today the Inbox only shows work assigned to you, has no search, no sort within groups, no bulk actions, and every row is a one-way door to github.com. These are table stakes, not differentiators, and their absence is why the app does not survive daily use.
  2. Build the differentiation the strategy already identified. Attention score, review risk, agent-PR detection, and "what changed since I last looked" are the four things that make Needly something other than a second inbox. docs/productidea.md sections 9, 10, 13 and 14 specify them; none exist.
  3. Give it a way to grow. Needly's growth rate is structurally zero: one person installs a GitHub App and looks at a private page, and no other collaborator ever learns it exists. Features do not fix that - loops do.

Honest diagnosis of the current state

Gap Evidence
Only shows work assigned to you, never work you are waiting on No "waiting on others" concept anywhere in the domain
No search of any kind InboxFilterBar.razor is structured-filter only
No ordering within a group Inbox.razor.cs groups by ActionType, then nothing
Pin effect is invisible IsPinned is computed in InboxVisibilityService.cs and never rendered
Three ActionType values have no detector Decide, FollowUp, Monitor are dead enum members
PWA notifies nobody service-worker.js ships with no push handler
No growth loop at all Nothing Needly produces is ever visible to a non-user

Task list

Movement 1 - Usable for a full workday

Movement 2 - Differentiation

Movement 3 - Growth loops

Movement 4 - Distribution surfaces

Suggested sequencing

First - the Movement 1 items. Without them nothing else is worth building, because the app does not survive daily use.

Then - attention score, review risk, and agent-PR detection. That trio is the product thesis. Everything else is an inbox.

Then - the check run first, then organisation-wide enrolment, then badges. Web push runs in parallel throughout, since the PWA shell already exists and only the push handler is missing.

Decisions taken in this epic

  • Check runs require checks: write, which changes Needly's posture from read-only observer to a service that writes to repositories. This will slow some enterprise reviews. Mitigated by making the permission optional and per-repository opt-in. The loop is worth the friction.
  • Nothing ranks individual engineers. Team queues, SLA reporting and Review Wrapped are aggregate and system-level only. Per-developer productivity scoring turns this into surveillance software and kills team adoption, which is the segment that pays. See docs/productidea.md section 12.
  • Needly still never rebuilds code review. The detail pane is read-only triage context. No diff viewer, no comment box, no merge button. Section 15 stands.

Explicitly out of scope

  • GitLab and GitHub Enterprise Server. Both are large integration surfaces that buy no virality and dilute the GitHub-native positioning that makes check runs and badges possible.
  • Analytics dashboards beyond what SLA attainment and the team queue already require.
  • Any replacement for github.com/notifications. The architecture decision in docs/productidea.md section 17 stands: GitHub App installation plus webhooks, never the classic-PAT-only Notifications API.

Metadata

Metadata

Assignees

No one assigned

    Labels

    epicTracking issue grouping ordered work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions