Files
usher-manage-stack/.planning/research/FEATURES.md

14 KiB
Raw Blame History

Feature Landscape

Domain: CRM/Admin Member Note Systems Researched: 2026-02-13 Confidence: MEDIUM

Table Stakes

Features users expect. Missing = product feels incomplete.

Feature Why Expected Complexity Notes
Create note inline Standard in admin interfaces; users expect quick annotation without navigation Low Alpine.js inline form on member list row
View note count Badge indicators are universal pattern for "items present" Low Badge on member row, clickable to expand
Display author + timestamp Audit integrity; users need "who wrote this when" Low Laravel auth()->user() + created_at
Chronological ordering Notes are temporal; most recent first/last is expected Low ORDER BY created_at DESC in query
Expandable note history Accordion/expansion is standard UX for "show more" Low Alpine.js x-show toggle, accordion pattern
Search/filter by content Modern CRMs make notes searchable; users expect to find past comments Medium Full-text search on notes.content field
Empty state messaging When no notes exist, users need clear "no notes yet" indicator Low Conditional display in Blade template
Responsive display Admin interfaces must work on tablets; notes should be readable on smaller screens Low Tailwind responsive classes

Differentiators

Features that set product apart. Not expected, but valued.

Feature Value Proposition Complexity Notes
Note export (member-specific) Chairman can generate member note history PDF for meetings or handoffs Medium barryvdh/laravel-dompdf already in stack
Batch note visibility filter Show only members with notes vs. all members for focused review Low Query scope: whereHas('notes')
Recent notes dashboard widget Surface latest N notes across all members for quick admin overview Medium Dashboard addition with notes query
Note length indicator Visual cue for long vs short notes (e.g., truncated preview with "read more") Low CSS + Alpine.js for text truncation
Keyboard shortcuts Power users expect quick access (e.g., 'N' to add note on focused row) Medium Alpine.js keyboard listener, accessibility consideration
Note context linking Link note to specific member action (payment, status change, etc.) for context High Polymorphic relationship, context metadata

Anti-Features

Features to explicitly NOT build.

Anti-Feature Why Avoid What to Do Instead
Note editing/deletion Destroys audit trail; creates compliance risk (append-only is healthcare/NPO standard) Addendum pattern: add new note clarifying/correcting previous note
Private/role-scoped notes Chairman explicitly wants transparency; adds complexity with minimal value All admin roles share notes; document in UI that notes are shared
Rich text editor (WYSIWYG) Overkill for simple observations; formatting rarely needed; security risk (XSS) Plain text with auto-linking for URLs
Note categories/tags Premature optimization; no user request; adds cognitive overhead If categorization needed later, add via simple text conventions (e.g., "[follow-up]")
Note attachments/files Scope creep; files belong in member documents, not quick notes Link to existing document library in note text if needed
Scheduled reminders/tasks Transforms simple note system into task manager; different domain Keep notes as observations only; use separate task system if needed
Real-time collaboration Single chairman use case; no concurrent editing needed; adds WebSocket complexity Standard AJAX; page refresh shows new notes from other admins
Note templates No evidence of repeated note patterns; premature optimization Copy-paste from previous notes if patterns emerge
Soft delete for notes Violates append-only principle; creates "hidden but recoverable" ambiguity Hard constraint: no delete operation at all

Feature Dependencies

Display note count badge
    └──requires──> Create note (must have notes to count)

Expandable note history
    └──requires──> Display note count badge (badge is the expand trigger)
    └──requires──> Display author + timestamp (what to show when expanded)

Search/filter by content
    └──requires──> Create note (must have notes to search)

Note export (member-specific)
    └──requires──> View note history (export queries same data)

Batch note visibility filter
    └──requires──> Display note count badge (filters on notes existence)

Recent notes dashboard widget
    └──requires──> Display author + timestamp (widget shows who/when)

Note context linking
    └──enhances──> Display author + timestamp (adds "why" context to "who/when")

Dependency Notes

  • Display note count badge requires Create note: Badge shows count; zero notes = no badge or "0" badge (design choice)
  • Expandable note history requires Display note count badge: Badge is the UI affordance for expansion (click to show)
  • Search/filter by content enhances Create note: Makes note system scalable beyond 10-20 notes per member
  • Note context linking enhances everything: If added, transforms simple notes into action-linked annotations (v2+ feature)

MVP Recommendation

Launch With (v1)

Minimum viable product — what's needed to validate the concept.

  • Create note inline — Core value: quick annotation on member list
  • Display note count badge — Table stakes: visual indicator of notes present
  • Expandable note history — Table stakes: view past notes without navigation
  • Display author + timestamp — Table stakes: audit integrity
  • Chronological ordering — Table stakes: temporal display
  • Empty state messaging — Table stakes: UX clarity when no notes

Rationale: These 6 features deliver the core value ("annotate members inline") with minimal complexity. All are Low complexity and align with user's stated need.

Add After Validation (v1.x)

Features to add once core is working and chairman confirms value.

  • Search/filter by content — Add when: chairman has >50 total notes across members and reports difficulty finding specific comments
  • Batch note visibility filter — Add when: chairman wants to review "all members I've annotated" without scrolling
  • Note length indicator — Add when: notes consistently exceed 200 characters and full display clutters UI

Trigger for adding: User feedback after 2-4 weeks of usage, or when specific pain point emerges.

Future Consideration (v2+)

Features to defer until product-market fit is established.

  • Note export (member-specific) — Defer: no stated need for printed reports in initial request
  • Recent notes dashboard widget — Defer: chairman uses member list as entry point, not dashboard
  • Keyboard shortcuts — Defer: no power-user workflow identified yet
  • Note context linking — Defer: major complexity; evaluate after understanding note content patterns

Why defer: Not requested, not table stakes, and complexity doesn't justify speculative value.

Feature Prioritization Matrix

Feature User Value Implementation Cost Priority
Create note inline HIGH LOW P1
Display note count badge HIGH LOW P1
Expandable note history HIGH LOW P1
Display author + timestamp HIGH LOW P1
Chronological ordering HIGH LOW P1
Empty state messaging MEDIUM LOW P1
Search/filter by content MEDIUM MEDIUM P2
Batch note visibility filter MEDIUM LOW P2
Note length indicator LOW LOW P2
Note export (member-specific) MEDIUM MEDIUM P3
Recent notes dashboard widget LOW MEDIUM P3
Keyboard shortcuts LOW MEDIUM P3
Note context linking LOW HIGH P3

Priority key:

  • P1: Must have for launch (table stakes + core value)
  • P2: Should have, add when specific need emerges
  • P3: Nice to have, future consideration after validation

Competitor Feature Analysis

Based on research of CRM and member management systems in 2026:

Feature SugarCRM/Salesforce Sumac (Nonprofit) Our Approach
Note creation Separate "Notes" tab, requires navigation Case notes within case management module Inline on member list (no navigation)
Note visibility Role-based permissions available Shared across caseworkers Shared across all admin roles
Edit/Delete Editable with audit log Append-only with addendum pattern Append-only (no edit/delete)
Rich formatting WYSIWYG editor Plain text with attachments Plain text only
Search notes Full-text search with filters Search across cases and notes Full-text search (v1.x)
Note categories Tags and custom fields Service plan categories None (anti-feature)
Timestamps Absolute + relative display Absolute timestamps Absolute + relative (tooltip)
Count indicator Badge on related list tab Note count in case summary Badge on member row
Export Include in reports/exports PDF export per case PDF export (v2+)

Our competitive position:

  • Simpler: No categories, tags, or rich formatting (reduces cognitive overhead)
  • Faster: Inline creation vs. tab navigation (optimized for quick annotation)
  • More transparent: Forced shared visibility (aligns with NPO culture)
  • More auditable: Strictly append-only (exceeds healthcare standards)

Implementation Pattern Reference

Based on research findings, recommended UX patterns:

Badge UI (Material Design 3, PatternFly):

  • Pill shape, positioned at right edge of member row
  • Count display: "3" for small counts, "99+" for >99 notes
  • Color: Blue/info semantic (not red/error unless tied to action required)
  • Clickable affordance: Cursor pointer + hover state

Accordion/Expansion (Smashing Magazine, Accessible Accordion):

  • Caret icon: Downward when collapsed, upward when expanded
  • Entire badge area clickable (not just icon)
  • Icon position stays constant (no layout shift on toggle)
  • Smooth transition (Alpine.js x-transition)
  • ARIA: aria-expanded attribute for screen readers

Timestamp Display (PatternFly, Cloudscape):

  • Recent (<24h): "2小時前" (relative)
  • Older: "2026-02-11 14:30" (absolute)
  • Tooltip on hover: Full ISO 8601 timestamp
  • Format: Taiwan locale (zh-TW), 24-hour time

Inline Form (Eleken List UI, Data Table UX):

  • Textarea (not single-line input) for multi-line notes
  • 3 rows visible, auto-expand on focus
  • Submit on Ctrl+Enter (keyboard UX)
  • Cancel button to close without saving
  • Loading state during AJAX submit

Research Confidence

HIGH confidence (Context7/Official docs):

  • None (no Context7 libraries for this domain-specific question)

MEDIUM confidence (Multiple credible sources agree):

  • Table stakes features: Based on CRM industry standards from Salesforce/Sugar docs, Material Design, PatternFly component libraries
  • Append-only best practice: Healthcare compliance docs (Healthie, Sessions Health), audit trail standards
  • UI patterns: Design system documentation (Material Design 3, PatternFly, Smashing Magazine)
  • NPO CRM landscape: Multiple 2026 nonprofit CRM reviews (Neon One, Bloomerang, Case Management Hub)

LOW confidence (WebSearch only, needs validation):

  • Specific NPO note-taking workflows beyond Sumac case management
  • Exact usage frequency of note export features (no user research data available)

Sources


Feature research for: Member Notes System (會員備註系統) Researched: 2026-02-13