medium complexity extracted Notifications & Follow-up Confidence: 100%
10
Components
198
Shared
14
User Stories
Yes
Analyzed

Description

Automated notification flow for HLF's peer mentor certification lifecycle. The system sends advance warnings (e.g., 60, 30, and 7 days before expiry) to the peer mentor and their coordinator. If the certificate expires without renewal, the peer mentor is automatically surfaced as inactive in coordinator views and their public listing is suppressed — matching HLF's requirement that expired peer mentors disappear from local chapter websites. The in-app Notifications tab shows a persistent banner for the peer mentor until the certificate is renewed or the coordinator acknowledges the lapse. Coordinators can trigger a manual course enrollment prompt from within the notification detail view, linking to the course administration feature.

Analysis

Business Value

Closes a compliance gap for HLF where expired certifications currently require manual tracking. Protects the organisation's quality assurance and reduces coordinator overhead for certificate monitoring.

Implementation Notes

Store certification_expiry_date in user_roles or a peer_mentor_profile table. Scheduled Edge Function queries upcoming expirations daily. Status suppression logic in Supabase RLS or a computed column. Coordinator notification uses same FCM path as other alerts.

Components (208)

User Interface (2)

Service Layer (4)

Data Layer (2)

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 (14)

View Notification Detail for Certification Expiry Alert
medium 3 pts

As a As a Peer Mentor (Likeperson)

I want to open a detailed notification view for any certification expiry alert in my notification center

So that I can review the full context of the alert, understand exactly what action is required, and act on it directly

Acceptance Criteria
  • Given a certification expiry push notification was sent 2 days ago, When the peer mentor opens the notification center, Then the expiry notification appears in the list with a 'Certification' type badge and an unread indicator
  • Given the peer mentor taps the notification list item, When the detail view opens, Then it displays the certificate name, expiry date, days remaining, and a 'View Certification Status' action button
  • Given the notification detail view is opened, When the view renders, Then the notification is marked as read and the unread indicator disappears
  • +3 more
View Full Story →
View Notification Detail for Certification Expiry Alert
medium 3 pts

As a As a Coordinator

I want to open a detailed notification view for any certification expiry alert in my notification center

So that I can review the full context of the alert, understand exactly what action is required, and act on it directly

Acceptance Criteria
  • Given a certification expiry push notification was sent 2 days ago, When the peer mentor opens the notification center, Then the expiry notification appears in the list with a 'Certification' type badge and an unread indicator
  • Given the peer mentor taps the notification list item, When the detail view opens, Then it displays the certificate name, expiry date, days remaining, and a 'View Certification Status' action button
  • Given the notification detail view is opened, When the view renders, Then the notification is marked as read and the unread indicator disappears
  • +3 more
View Full Story →
See Expiry Warning Banner on Home Screen
high 3 pts

As a As a Peer Mentor (Likeperson)

I want to see a persistent in-app warning banner on my home screen when my certification is within 30 days of expiry

So that I cannot accidentally miss the expiry even if I have disabled push notifications

Acceptance Criteria
  • Given a peer mentor whose certification expires in 25 days, When they open the app and navigate to the home screen, Then a warning banner is displayed showing 'Certification expires in 25 days – Renew Now'
  • Given the warning banner is displayed and the peer mentor dismisses it, When they close and reopen the app, Then the banner reappears in the next session
  • Given a peer mentor whose certification is more than 30 days away, When they open the home screen, Then no expiry warning banner is shown
  • +3 more
View Full Story →
View Certification Status Screen with Expiry Timeline
high 5 pts

As a As a Peer Mentor (Likeperson)

I want to open a dedicated certification status screen that shows my current certificate, its expiry date, and how many days remain

So that I can understand my certification health at a glance and take renewal action from a single place

Acceptance Criteria
  • Given a peer mentor with an active certification expiring in 45 days, When they open the certification status screen, Then the certificate is listed with an amber expiry badge showing '45 days remaining'
  • Given a peer mentor with a certification expiring in 15 days, When they view the status screen, Then the badge is red and a prominent banner states 'Urgent: renew before [date]'
  • Given a peer mentor whose certification has already expired, When they view the status screen, Then the badge shows 'Expired' in red and their active status indicator is suppressed
  • +3 more
View Full Story →
Receive Course Enrollment Prompt When Certificate Expires
high 5 pts

As a As a Peer Mentor (Likeperson)

I want to be prompted to enroll in a renewal course immediately when my certification has expired

So that I understand the consequences of expiry and can take the fastest path to regaining active status

Acceptance Criteria
  • Given a peer mentor whose certification expired yesterday, When the nightly scheduler runs, Then an expiry notification is sent via FCM with messaging indicating they are no longer active
  • Given a peer mentor whose certification has expired, When they open the app, Then a full-screen enrollment prompt is presented explaining their inactive status and offering 'Enroll in Renewal Course' and 'Remind Me Later' actions
  • Given the peer mentor taps 'Enroll in Renewal Course', When the action triggers, Then the Dynamics portal course enrollment page opens via deep-link
  • +3 more
View Full Story →
Receive Push Notification Before Certification Expires
high 8 pts

As a As a Peer Mentor (Likeperson)

I want to receive push notifications at configurable intervals (90, 60, and 30 days) before my certification expires

So that I have enough time to enroll in a renewal course and avoid an involuntary lapse in my active status

Acceptance Criteria
  • Given a peer mentor whose certification expires in 90 days, When the nightly scheduler runs, Then a push notification is dispatched via FCM with the expiry date and a deep-link to the certification status screen
  • Given a peer mentor who receives a 90-day notification, When 30 more days pass without renewal enrollment, Then a 60-day reminder notification is dispatched
  • Given a peer mentor who receives a 60-day notification, When 30 more days pass without renewal enrollment, Then a 30-day urgent reminder notification is dispatched with elevated priority
  • +3 more
View Full Story →
Record Certification Renewal After Completing Course
high 8 pts

As a As a Peer Mentor (Likeperson)

I want to have my renewed certification automatically synced from HLF's Dynamics system into the app, or to manually record a renewal with a new expiry date

So that my active status is restored, expiry notifications stop, and I reappear on the public peer mentor roster

Acceptance Criteria
  • Given HLF's Dynamics system sends a certification update webhook, When the hlf-dynamics-sync-service processes it, Then the peer mentor's certification record is updated with the new expiry date within 5 minutes
  • Given the certification record is updated with a new valid expiry date, When the certification management service processes the update, Then the mentor's active status is re-enabled and visibility suppressor restores their public listing
  • Given the renewal is confirmed, When the expiry notification orchestrator checks pending notifications, Then all scheduled expiry reminders for that certification are cancelled
  • +3 more
View Full Story →
See Expiry Warning Banner on Home Screen
high 3 pts

As a As a Coordinator

I want to see a persistent in-app warning banner on my home screen when my certification is within 30 days of expiry

So that I cannot accidentally miss the expiry even if I have disabled push notifications

Acceptance Criteria
  • Given a peer mentor whose certification expires in 25 days, When they open the app and navigate to the home screen, Then a warning banner is displayed showing 'Certification expires in 25 days – Renew Now'
  • Given the warning banner is displayed and the peer mentor dismisses it, When they close and reopen the app, Then the banner reappears in the next session
  • Given a peer mentor whose certification is more than 30 days away, When they open the home screen, Then no expiry warning banner is shown
  • +3 more
View Full Story →
View Certification Status Screen with Expiry Timeline
high 5 pts

As a As a Coordinator

I want to open a dedicated certification status screen that shows my current certificate, its expiry date, and how many days remain

So that I can understand my certification health at a glance and take renewal action from a single place

Acceptance Criteria
  • Given a peer mentor with an active certification expiring in 45 days, When they open the certification status screen, Then the certificate is listed with an amber expiry badge showing '45 days remaining'
  • Given a peer mentor with a certification expiring in 15 days, When they view the status screen, Then the badge is red and a prominent banner states 'Urgent: renew before [date]'
  • Given a peer mentor whose certification has already expired, When they view the status screen, Then the badge shows 'Expired' in red and their active status indicator is suppressed
  • +3 more
View Full Story →
Receive Course Enrollment Prompt When Certificate Expires
high 5 pts

As a As a Coordinator

I want to be prompted to enroll in a renewal course immediately when my certification has expired

So that I understand the consequences of expiry and can take the fastest path to regaining active status

Acceptance Criteria
  • Given a peer mentor whose certification expired yesterday, When the nightly scheduler runs, Then an expiry notification is sent via FCM with messaging indicating they are no longer active
  • Given a peer mentor whose certification has expired, When they open the app, Then a full-screen enrollment prompt is presented explaining their inactive status and offering 'Enroll in Renewal Course' and 'Remind Me Later' actions
  • Given the peer mentor taps 'Enroll in Renewal Course', When the action triggers, Then the Dynamics portal course enrollment page opens via deep-link
  • +3 more
View Full Story →
Receive Push Notification Before Certification Expires
high 8 pts

As a As a Coordinator

I want to receive push notifications at configurable intervals (90, 60, and 30 days) before my certification expires

So that I have enough time to enroll in a renewal course and avoid an involuntary lapse in my active status

Acceptance Criteria
  • Given a peer mentor whose certification expires in 90 days, When the nightly scheduler runs, Then a push notification is dispatched via FCM with the expiry date and a deep-link to the certification status screen
  • Given a peer mentor who receives a 90-day notification, When 30 more days pass without renewal enrollment, Then a 60-day reminder notification is dispatched
  • Given a peer mentor who receives a 60-day notification, When 30 more days pass without renewal enrollment, Then a 30-day urgent reminder notification is dispatched with elevated priority
  • +3 more
View Full Story →
Record Certification Renewal After Completing Course
high 8 pts

As a As a Coordinator

I want to have my renewed certification automatically synced from HLF's Dynamics system into the app, or to manually record a renewal with a new expiry date

So that my active status is restored, expiry notifications stop, and I reappear on the public peer mentor roster

Acceptance Criteria
  • Given HLF's Dynamics system sends a certification update webhook, When the hlf-dynamics-sync-service processes it, Then the peer mentor's certification record is updated with the new expiry date within 5 minutes
  • Given the certification record is updated with a new valid expiry date, When the certification management service processes the update, Then the mentor's active status is re-enabled and visibility suppressor restores their public listing
  • Given the renewal is confirmed, When the expiry notification orchestrator checks pending notifications, Then all scheduled expiry reminders for that certification are cancelled
  • +3 more
View Full Story →
Automatic Removal from Active Roster When Certificate Expires
critical 8 pts

As a As a Peer Mentor (Likeperson)

I want to understand that my profile will be automatically suppressed from HLF's public-facing website and active peer mentor lists when my certification expires

So that I know the real-world consequences of inaction and am motivated to renew my certification promptly

Acceptance Criteria
  • Given a peer mentor's certification expired at midnight, When the expiry check edge function runs, Then the mentor's active status is set to false and the visibility suppressor updates the record
  • Given the mentor's active status is set to false, When a public query is made for active peer mentors in their chapter, Then the expired mentor is excluded from results due to RLS policy enforcement
  • Given the mentor's active status has been suppressed, When the mentor opens their own profile in the app, Then they see a clear status banner: 'Your certification has expired. You are currently not visible to the public.'
  • +3 more
View Full Story →
Automatic Removal from Active Roster When Certificate Expires
critical 8 pts

As a As a Coordinator

I want to understand that my profile will be automatically suppressed from HLF's public-facing website and active peer mentor lists when my certification expires

So that I know the real-world consequences of inaction and am motivated to renew my certification promptly

Acceptance Criteria
  • Given a peer mentor's certification expired at midnight, When the expiry check edge function runs, Then the mentor's active status is set to false and the visibility suppressor updates the record
  • Given the mentor's active status is set to false, When a public query is made for active peer mentors in their chapter, Then the expired mentor is excluded from results due to RLS policy enforcement
  • Given the mentor's active status has been suppressed, When the mentor opens their own profile in the app, Then they see a clear status banner: 'Your certification has expired. You are currently not visible to the public.'
  • +3 more
View Full Story →