medium complexity extracted Gamification & Engagement Confidence: 100%
5
Components
198
Shared
5
User Stories
Yes
Analyzed

Description

Intelligent, context-aware push notifications that prompt peer mentors to log activity, check in after a period of inactivity, celebrate a milestone, or act on an expiring certification. Notifications are triggered by specific scenarios rather than sent on a fixed schedule, reducing notification fatigue while maximising relevance. Examples: 'You haven't logged an activity in 3 weeks — is everything OK?', 'You just hit 50 sessions this year — great work!', or 'Your certification expires in 30 days — book your renewal course.' HLF explicitly requested this capability as part of improved peer mentor follow-up.

Analysis

Business Value

Directly addresses the 40% peer mentor follow-up dissatisfaction from HLF's survey. Reduces coordinator manual follow-up burden. Keeps peer mentors engaged and reduces silent churn — where volunteers simply stop without formally resigning.

Implementation Notes

Trigger logic implemented in Supabase Edge Functions reacting to database events and scheduled checks. Notification content localised and personalised per user. Users can configure notification preferences (opt-out per scenario type). Deep-link notifications to the relevant in-app screen. Respect WCAG 2.2 AA for in-app notification banners.

Components (203)

User Interface (2)

Service Layer (1)

Infrastructure (2)

Shared Components

These components are reused across multiple features

User Interface (59)

ui Role Switch Widget medium Shared ui Role-Aware Bottom Navigation medium Shared ui Activity Type Selection Screen low Shared ui Speech-to-Text Field Overlay medium Shared ui Receipt Capture Widget medium Shared ui Peer Mentor Single Selector low Shared ui Proxy Audit Badge Widget low Shared ui Export Period Picker low Shared ui Contact Card Widget low Shared ui Contact Search Bar low Shared ui Peer Mentor Card Widget low Shared ui Activity History List low Shared ui Multi-Chapter Affiliation Chip Widget medium Shared ui Certification Status Badge low Shared ui Duplicate Activity Warning Dialog medium Shared ui Mentor Multi-Select Widget medium Shared ui Map Filter Panel medium Shared ui Claim Status Badge low Shared ui Export Date Range Picker low Shared ui Custom Date Range Picker low Shared ui Duplicate Activity Warning Dialog low Shared ui Proxy Activity Form medium Shared ui Proxy Peer Mentor Selector medium Shared ui Expected Return Date Picker low Shared ui Pause Activation Screen low Shared ui Pause Status Indicator low Shared ui Admin KPI Stat Widget low Shared ui Organisation Hierarchy Navigator high Shared ui Bufdir Period Selector Widget low Shared ui Export History List medium Shared ui Activity Type Donut Chart medium Shared ui Monthly Activity Bar Chart medium Shared ui Statistics Period Filter Bar low Shared ui Statistics Summary Cards low Shared ui Notification Badge Widget low Shared ui Certificate Expiry Status Indicator low Shared ui Animated Stat Card Widget medium Shared ui In-App Notification Banner low Shared ui Accessible Modal Sheet Widget high Shared ui Live Region Announcer medium Shared ui Semantics Wrapper Widget medium Shared ui Sensitive Field Warning Dialog high Shared ui Confirm Before Submit Screen medium Shared ui Inline Contextual Help Widget low Shared ui Labelled Navigation Bar low Shared ui Plain Language Error Display low Shared ui Single-Action Screen Layout medium Shared ui Wizard Progress Indicator low Shared ui Accessible Text Style System medium Shared ui Accessible Touch Target Wrapper low Shared ui Contrast-Safe Color Palette Widget medium Shared ui Accessible Bottom Navigation Bar medium Shared ui Modal Close Button low Shared ui Persistent Back Button low Shared ui Vertical Scroll Container low Shared ui Organization Card Widget low Shared ui Terminology-Aware Text Widget low Shared ui FeatureGate Widget low Shared ui Chapter Switcher medium Shared

Service Layer (52)

service Authentication Service medium Shared service Authentication Session Manager medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Permission Checker Service medium Shared service Role State Manager medium Shared service No-Access Route Guard low Shared service Activity Type Metadata Resolver low Shared service Chapter Scope Resolver medium Shared service Organisation Hierarchy Resolver medium Shared service Coordinator Notification Service medium Shared service Duplicate Activity Detection Service high Shared service Mentor Filter Service low Shared service Receipt Threshold Validator low Shared service Approval Status Notification Service medium Shared service Threshold Evaluation Service medium Shared service Declaration Encryption Service high Shared service Organization Feature Flag Service low Shared service Participant Deduplication Service high Shared service Reporting Period Service medium Shared service Activity Attribution Service low Shared service Proxy Duplicate Detection Service medium Shared service Pause Management Service medium Shared service Pause Notification Service medium Shared service Admin Export Service medium Shared service Admin Row-Level Security Guard high Shared service Organisation Hierarchy Service high Shared service User Management Service high Shared service Role Access Validator low Shared service Peer Mentor Stats Aggregator medium Shared service Push Notification Dispatcher medium Shared service Notification Preference Service low Shared service Scenario Deep-Link Router medium Shared service Scenario Notification Content Builder medium Shared service Badge Criteria Integration medium Shared service Activity Summary Aggregator low Shared service Focus Management Service medium Shared service Screen Reader Detection Service medium Shared service Sensitive Field Privacy Guard high Shared service Plain Language Content Service medium Shared service Wizard State Manager medium Shared service Tab State Manager medium Shared service Organization Route Guard medium Shared service Tenant Context Service high Shared service Label Key Resolver Service low Shared service Organization Labels Notifier medium Shared service FeatureFlagProvider (Riverpod) medium Shared service Access Scope Service high Shared service Hierarchy Aggregation Service high Shared service Hierarchy Service high Shared service Unit Assignment Service medium Shared

Data Layer (33)

Infrastructure (54)

infrastructure Keyboard-Aware Layout Utility low Shared infrastructure Supabase Auth Client low Shared infrastructure Deep Link / OAuth Redirect Handler medium Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase Session Manager medium Shared infrastructure URL Launcher Utility low Shared infrastructure Local Storage Adapter low Shared infrastructure Supabase Activity Client low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client low Shared infrastructure Organisation Field Config Loader medium Shared infrastructure Speech-to-Text Adapter medium Shared infrastructure File Download Handler low Shared infrastructure Duplicate Reviewed Flag Middleware low Shared infrastructure Contact RLS Query Builder low Shared infrastructure Contact Form Validator low Shared infrastructure Design Token Theme low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client Provider low Shared infrastructure Search Debounce Utility low Shared infrastructure Expense Type Analytics Tracker low Shared infrastructure Receipt Image Picker Integration low Shared infrastructure CSV / JSON File Generator medium Shared infrastructure Coordinator Role Guard low Shared infrastructure Nightly Job Scheduler medium Shared infrastructure Supabase RLS Policy Configuration high Shared infrastructure Export File Storage Adapter low Shared infrastructure Supabase Storage Adapter low Shared infrastructure Peer Mentor Pause Management Service medium Shared infrastructure Push Notification Service medium Shared infrastructure fl_chart Adapter medium Shared infrastructure Push Notification Service low Shared infrastructure FCM Push Notification Sender medium Shared infrastructure FCM Notification Dispatcher medium Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Supabase Realtime Subscription Service medium Shared infrastructure Organisation Data Isolation Guard low Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Deep Link Handler medium Shared infrastructure QR Code Generator low Shared infrastructure Share Sheet Bridge low Shared infrastructure Semantics Service Facade medium Shared infrastructure Accessibility Design Token Enforcer medium Shared infrastructure Accessible Theme Builder medium Shared infrastructure Navigation Route Configuration medium Shared infrastructure Accessibility Live Region Announcer low Shared infrastructure Feature Flag Provider low Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase RLS Tenant Scope Configurator medium Shared infrastructure Label Key Registry low Shared infrastructure Terminology Riverpod Providers low Shared infrastructure WCAG Semantics Label Resolver low Shared infrastructure Feature Flag Key Constants low Shared infrastructure RLS Policy Manager high Shared

User Stories (5)

Receive In-App Notification Banner for Scenario Prompt When App Is Open
medium 3 pts

As a As a Peer Mentor (Likeperson)

I want to see a dismissible in-app notification banner at the top of the screen when a scenario prompt arrives while I am actively using the app

So that I do not miss important scenario prompts even when I already have the app open and push notifications are suppressed by the OS

Acceptance Criteria
  • Given the mentor is actively using the app and a new scenario notification record is inserted for their user ID, When the Supabase realtime subscription fires, Then the in-app notification banner appears at the top of the screen within 2 seconds
  • Given the in-app banner is displayed, When the mentor taps it, Then the scenario notification detail view opens and the banner dismisses
  • Given the in-app banner is displayed, When 5 seconds elapse without interaction, Then the banner dismisses automatically and the notification remains unread in the notification centre
  • +2 more
View Full Story →
Manage Personal Notification Preferences for Scenario Prompts
medium 5 pts

As a As a Peer Mentor (Likeperson)

I want to open the notification preferences screen and control which scenario-based notification types I receive and through which channel (push, in-app, or both)

So that I can tailor my notification experience to match my working style without being overwhelmed by prompts

Acceptance Criteria
  • Given the mentor navigates to notification preferences, When the screen loads, Then all scenario notification types are listed with their current push and in-app toggle states correctly reflecting stored preferences
  • Given the mentor toggles off push notifications for the inactivity reminder scenario, When the scenario evaluation edge function next runs and finds an inactivity condition for that mentor, Then no FCM push notification is sent but an in-app notification record is still created if in-app is enabled
  • Given the mentor toggles off all channels for a scenario type, When the condition for that scenario is met, Then no notification of any kind is created for that scenario type for that mentor
  • +2 more
View Full Story →
View History of Received Scenario Prompts in Notification Centre
medium 5 pts

As a As a Peer Mentor (Likeperson)

I want to open the notification centre and see a filterable list of all scenario prompts I have received, including read and unread status

So that I can review past prompts I may have dismissed, understand the pattern of reminders I receive, and act on any I missed

Acceptance Criteria
  • Given the mentor opens the notification centre, When scenario notification records exist for their account, Then they appear in the list ordered by timestamp descending with the correct scenario type label and icon
  • Given the mentor has unread scenario notifications, When they open the notification centre, Then unread items are visually distinguished from read items and the tab badge shows the correct unread count
  • Given the mentor taps the scenario filter option in the notification filter bar, When the filter is applied, Then only scenario-type notifications are displayed and all other types are hidden
  • +3 more
View Full Story →
View Scenario Prompt Detail and Take Contextual Action
high 5 pts

As a As a Peer Mentor (Likeperson)

I want to open a scenario notification and see a detailed view explaining why I received it, what action is suggested, and a direct call-to-action button

So that I understand the context behind the prompt and can act on it immediately without confusion

Acceptance Criteria
  • Given a scenario push notification exists in the notification centre, When the mentor taps on it, Then the scenario notification detail view opens showing the scenario type, trigger explanation, and a contextual action button
  • Given the detail view is open, When the mentor taps the primary action button, Then the scenario deep-link router navigates them to the correct screen (activity wizard, contact detail, etc.) based on the scenario type
  • Given the mentor views the detail screen, When they have not previously read this notification, Then the notification read service marks it as read and the unread badge count decrements
  • +2 more
View Full Story →
Receive Scenario-Triggered Engagement Notification When Activity Gap Detected
high 8 pts

As a As a Peer Mentor (Likeperson)

I want to receive a timely push notification when the system detects I have not logged any activity for a configurable number of days

So that I am gently reminded to keep my activity records up to date and maintain consistent engagement with my assigned contacts

Acceptance Criteria
  • Given a peer mentor has not logged any activity for the configured inactivity threshold, When the scenario evaluation edge function runs its scheduled check, Then a push notification is delivered to all registered FCM tokens for that mentor
  • Given the push notification is delivered, When the mentor taps it, Then the app opens and navigates directly to the activity registration bottom sheet via the scenario deep-link handler
  • Given the mentor has disabled scenario-based notifications in their preferences, When the inactivity threshold is exceeded, Then no push notification is sent for that scenario type
  • +2 more
View Full Story →