Duplicate Activity Detection
Feature Detail
Description
Automatic detection and flagging of likely duplicate activity records before or immediately after submission. A duplicate is defined as the same peer mentor, the same activity type, and the same date appearing more than once — either from the same user submitting twice or from two coordinators independently logging the same group event. NHF explicitly requires this because their 1 400 local chapters create real-world scenarios where the same event is reported from multiple angles. On detection, the app surfaces a non-blocking warning with side-by-side comparison of the suspected duplicate and the current entry. The user can proceed (if the records are genuinely distinct), merge (if one is a correction), or cancel. Coordinators see a separate deduplication queue in their view for records flagged but not resolved by the submitting peer mentor.
Analysis
Prevents inflation of Bufdir-submitted activity counts, which would constitute misrepresentation in grant applications. Also reduces coordinator administrative burden from having to manually reconcile duplicate entries at the end of each reporting period.
Check for duplicates in a Supabase RPC called before the final insert in the activity wizard. Query: same peer_mentor_id + activity_type_id + date, status not 'cancelled'. Return candidate matches to the client. Render a bottom-sheet comparison UI. If user confirms as intentional, insert with a `duplicate_reviewed: true` flag. Coordinator deduplication queue is a filtered view of activities where `duplicate_reviewed = false` and a matching record exists.
Components (207)
Shared Components
These components are reused across multiple features
User Interface (59)
Service Layer (52)
Data Layer (33)
Infrastructure (54)
User Stories (18)
As a As a Peer Mentor (Likeperson)
I want to view an audit history of all duplicate warnings that were triggered, dismissed, or resolved under my chapter
So that I can demonstrate to national administrators and Bufdir auditors that duplicate activity pairs were actively reviewed rather than silently ignored
- Given a coordinator dismisses a duplicate warning by selecting 'Submit Anyway', When the activity is saved, Then a log entry is written with the coordinator ID, both activity IDs, resolution action 'PROCEED_WITH_DUPLICATE', and timestamp
- Given a coordinator resolves a pair in the deduplication queue, When the resolution is saved, Then a log entry is written with resolution action, resolver ID, and timestamp
- Given the coordinator opens the duplicate audit log, When they view the list, Then each entry shows a human-readable summary: date, peer mentor name (masked if sensitive), resolution action, and resolver name
- +2 more
As a As a Peer Mentor (Likeperson)
I want to configure the time window and matching criteria used to classify two activities as potential duplicates
So that I can tune detection sensitivity to match my chapter's operational patterns without generating excessive false-positive warnings that slow down registration
- Given the coordinator accesses duplicate detection settings, When they view the configuration screen, Then they can set the time-overlap threshold: 'exact time overlap', 'within same hour', 'within same day'
- Given the coordinator sets a threshold, When a new activity is submitted, Then duplicate detection uses the configured window to determine if a match exists
- Given the coordinator wishes to exclude an activity type from duplicate detection (e.g., 'group informational session'), When they toggle that type off in settings, Then submissions of that activity type bypass duplicate checks
- +2 more
As a As a Coordinator
I want to view an audit history of all duplicate warnings that were triggered, dismissed, or resolved under my chapter
So that I can demonstrate to national administrators and Bufdir auditors that duplicate activity pairs were actively reviewed rather than silently ignored
- Given a coordinator dismisses a duplicate warning by selecting 'Submit Anyway', When the activity is saved, Then a log entry is written with the coordinator ID, both activity IDs, resolution action 'PROCEED_WITH_DUPLICATE', and timestamp
- Given a coordinator resolves a pair in the deduplication queue, When the resolution is saved, Then a log entry is written with resolution action, resolver ID, and timestamp
- Given the coordinator opens the duplicate audit log, When they view the list, Then each entry shows a human-readable summary: date, peer mentor name (masked if sensitive), resolution action, and resolver name
- +2 more
As a As a Coordinator
I want to configure the time window and matching criteria used to classify two activities as potential duplicates
So that I can tune detection sensitivity to match my chapter's operational patterns without generating excessive false-positive warnings that slow down registration
- Given the coordinator accesses duplicate detection settings, When they view the configuration screen, Then they can set the time-overlap threshold: 'exact time overlap', 'within same hour', 'within same day'
- Given the coordinator sets a threshold, When a new activity is submitted, Then duplicate detection uses the configured window to determine if a match exists
- Given the coordinator wishes to exclude an activity type from duplicate detection (e.g., 'group informational session'), When they toggle that type off in settings, Then submissions of that activity type bypass duplicate checks
- +2 more
As a As a Organization Administrator
I want to view an audit history of all duplicate warnings that were triggered, dismissed, or resolved under my chapter
So that I can demonstrate to national administrators and Bufdir auditors that duplicate activity pairs were actively reviewed rather than silently ignored
- Given a coordinator dismisses a duplicate warning by selecting 'Submit Anyway', When the activity is saved, Then a log entry is written with the coordinator ID, both activity IDs, resolution action 'PROCEED_WITH_DUPLICATE', and timestamp
- Given a coordinator resolves a pair in the deduplication queue, When the resolution is saved, Then a log entry is written with resolution action, resolver ID, and timestamp
- Given the coordinator opens the duplicate audit log, When they view the list, Then each entry shows a human-readable summary: date, peer mentor name (masked if sensitive), resolution action, and resolver name
- +2 more
As a As a Organization Administrator
I want to configure the time window and matching criteria used to classify two activities as potential duplicates
So that I can tune detection sensitivity to match my chapter's operational patterns without generating excessive false-positive warnings that slow down registration
- Given the coordinator accesses duplicate detection settings, When they view the configuration screen, Then they can set the time-overlap threshold: 'exact time overlap', 'within same hour', 'within same day'
- Given the coordinator sets a threshold, When a new activity is submitted, Then duplicate detection uses the configured window to determine if a match exists
- Given the coordinator wishes to exclude an activity type from duplicate detection (e.g., 'group informational session'), When they toggle that type off in settings, Then submissions of that activity type bypass duplicate checks
- +2 more
As a As a Peer Mentor (Likeperson)
I want to be warned immediately when I attempt to register an activity that appears to duplicate one already registered by another coordinator or peer mentor
So that I can avoid submitting redundant records that would inflate Bufdir reporting figures and create administrative cleanup work
- Given a coordinator submits an activity registration, When the system detects a record with the same participant and overlapping date/time window and same activity type, Then a duplicate-warning-bottom-sheet appears before the record is saved
- Given the warning dialog is shown, When the coordinator views it, Then both the new activity and the conflicting existing activity are displayed side by side in a duplicate-comparison-panel with date, time, type, and registrant
- Given the warning dialog is shown, When the coordinator selects 'Cancel', Then no record is saved and the wizard returns to the previous step
- +2 more
As a As a Peer Mentor (Likeperson)
I want to access a dedicated deduplication queue screen that lists all suspected duplicate activity pairs requiring my review
So that I can systematically work through unresolved conflicts rather than discovering them only at export time or when Bufdir questions the data
- Given the coordinator opens the deduplication queue screen, When there are unresolved duplicate pairs, Then each pair is listed with participant name, activity type, date, and the names of both registrants
- Given the coordinator taps a pair in the queue, When they expand it, Then a full duplicate-comparison-panel is shown with all fields of both records visible
- Given the coordinator reviews a pair, When they choose 'Mark as Distinct', Then both records remain, the duplicate flag is cleared, and the pair is removed from the queue
- +3 more
As a As a Peer Mentor (Likeperson)
I want the duplicate check to run automatically when I register activities on behalf of one or more peer mentors using proxy or bulk registration
So that I do not accidentally create duplicate records while performing batch registrations for recurring group activities
- Given a coordinator submits a proxy registration on behalf of a peer mentor, When the submitted activity matches an existing record for that peer mentor, Then a duplicate-warning-dialog appears with the same comparison interface as self-registration
- Given a coordinator submits a bulk registration for 10 peer mentors, When 3 of the 10 have conflicting existing records, Then a consolidated duplicate summary shows all 3 conflicts grouped in one review screen before the batch is saved
- Given the consolidated duplicate summary is shown, When the coordinator resolves each conflict (mark distinct or skip), Then only the non-conflicting records plus the explicitly approved duplicates are saved
- +2 more
As a As a Peer Mentor (Likeperson)
I want the duplicate detection system to check for matching activities registered by coordinators in other chapters that a shared peer mentor belongs to
So that I can prevent the same peer mentor's single activity from being credited to multiple chapters simultaneously, which would violate Bufdir reporting rules
- Given a peer mentor belongs to two chapters, When a coordinator in Chapter B registers an activity that matches an existing activity logged under Chapter A for the same peer mentor, Then a duplicate warning is triggered referencing the Chapter A record
- Given a cross-chapter duplicate warning is displayed, When the coordinator views it, Then the warning clearly states which chapter the conflicting record belongs to and who registered it
- Given a peer mentor is added to a second chapter, When the system processes the new chapter affiliation, Then a retroactive duplicate check runs against the peer mentor's existing activity history and flags any cross-chapter conflicts into the deduplication queue
- +2 more
As a As a Coordinator
I want to be warned immediately when I attempt to register an activity that appears to duplicate one already registered by another coordinator or peer mentor
So that I can avoid submitting redundant records that would inflate Bufdir reporting figures and create administrative cleanup work
- Given a coordinator submits an activity registration, When the system detects a record with the same participant and overlapping date/time window and same activity type, Then a duplicate-warning-bottom-sheet appears before the record is saved
- Given the warning dialog is shown, When the coordinator views it, Then both the new activity and the conflicting existing activity are displayed side by side in a duplicate-comparison-panel with date, time, type, and registrant
- Given the warning dialog is shown, When the coordinator selects 'Cancel', Then no record is saved and the wizard returns to the previous step
- +2 more
As a As a Coordinator
I want to access a dedicated deduplication queue screen that lists all suspected duplicate activity pairs requiring my review
So that I can systematically work through unresolved conflicts rather than discovering them only at export time or when Bufdir questions the data
- Given the coordinator opens the deduplication queue screen, When there are unresolved duplicate pairs, Then each pair is listed with participant name, activity type, date, and the names of both registrants
- Given the coordinator taps a pair in the queue, When they expand it, Then a full duplicate-comparison-panel is shown with all fields of both records visible
- Given the coordinator reviews a pair, When they choose 'Mark as Distinct', Then both records remain, the duplicate flag is cleared, and the pair is removed from the queue
- +3 more
As a As a Coordinator
I want the duplicate check to run automatically when I register activities on behalf of one or more peer mentors using proxy or bulk registration
So that I do not accidentally create duplicate records while performing batch registrations for recurring group activities
- Given a coordinator submits a proxy registration on behalf of a peer mentor, When the submitted activity matches an existing record for that peer mentor, Then a duplicate-warning-dialog appears with the same comparison interface as self-registration
- Given a coordinator submits a bulk registration for 10 peer mentors, When 3 of the 10 have conflicting existing records, Then a consolidated duplicate summary shows all 3 conflicts grouped in one review screen before the batch is saved
- Given the consolidated duplicate summary is shown, When the coordinator resolves each conflict (mark distinct or skip), Then only the non-conflicting records plus the explicitly approved duplicates are saved
- +2 more
As a As a Coordinator
I want the duplicate detection system to check for matching activities registered by coordinators in other chapters that a shared peer mentor belongs to
So that I can prevent the same peer mentor's single activity from being credited to multiple chapters simultaneously, which would violate Bufdir reporting rules
- Given a peer mentor belongs to two chapters, When a coordinator in Chapter B registers an activity that matches an existing activity logged under Chapter A for the same peer mentor, Then a duplicate warning is triggered referencing the Chapter A record
- Given a cross-chapter duplicate warning is displayed, When the coordinator views it, Then the warning clearly states which chapter the conflicting record belongs to and who registered it
- Given a peer mentor is added to a second chapter, When the system processes the new chapter affiliation, Then a retroactive duplicate check runs against the peer mentor's existing activity history and flags any cross-chapter conflicts into the deduplication queue
- +2 more
As a As a Organization Administrator
I want to be warned immediately when I attempt to register an activity that appears to duplicate one already registered by another coordinator or peer mentor
So that I can avoid submitting redundant records that would inflate Bufdir reporting figures and create administrative cleanup work
- Given a coordinator submits an activity registration, When the system detects a record with the same participant and overlapping date/time window and same activity type, Then a duplicate-warning-bottom-sheet appears before the record is saved
- Given the warning dialog is shown, When the coordinator views it, Then both the new activity and the conflicting existing activity are displayed side by side in a duplicate-comparison-panel with date, time, type, and registrant
- Given the warning dialog is shown, When the coordinator selects 'Cancel', Then no record is saved and the wizard returns to the previous step
- +2 more
As a As a Organization Administrator
I want to access a dedicated deduplication queue screen that lists all suspected duplicate activity pairs requiring my review
So that I can systematically work through unresolved conflicts rather than discovering them only at export time or when Bufdir questions the data
- Given the coordinator opens the deduplication queue screen, When there are unresolved duplicate pairs, Then each pair is listed with participant name, activity type, date, and the names of both registrants
- Given the coordinator taps a pair in the queue, When they expand it, Then a full duplicate-comparison-panel is shown with all fields of both records visible
- Given the coordinator reviews a pair, When they choose 'Mark as Distinct', Then both records remain, the duplicate flag is cleared, and the pair is removed from the queue
- +3 more
As a As a Organization Administrator
I want the duplicate check to run automatically when I register activities on behalf of one or more peer mentors using proxy or bulk registration
So that I do not accidentally create duplicate records while performing batch registrations for recurring group activities
- Given a coordinator submits a proxy registration on behalf of a peer mentor, When the submitted activity matches an existing record for that peer mentor, Then a duplicate-warning-dialog appears with the same comparison interface as self-registration
- Given a coordinator submits a bulk registration for 10 peer mentors, When 3 of the 10 have conflicting existing records, Then a consolidated duplicate summary shows all 3 conflicts grouped in one review screen before the batch is saved
- Given the consolidated duplicate summary is shown, When the coordinator resolves each conflict (mark distinct or skip), Then only the non-conflicting records plus the explicitly approved duplicates are saved
- +2 more
As a As a Organization Administrator
I want the duplicate detection system to check for matching activities registered by coordinators in other chapters that a shared peer mentor belongs to
So that I can prevent the same peer mentor's single activity from being credited to multiple chapters simultaneously, which would violate Bufdir reporting rules
- Given a peer mentor belongs to two chapters, When a coordinator in Chapter B registers an activity that matches an existing activity logged under Chapter A for the same peer mentor, Then a duplicate warning is triggered referencing the Chapter A record
- Given a cross-chapter duplicate warning is displayed, When the coordinator views it, Then the warning clearly states which chapter the conflicting record belongs to and who registered it
- Given a peer mentor is added to a second chapter, When the system processes the new chapter affiliation, Then a retroactive duplicate check runs against the peer mentor's existing activity history and flags any cross-chapter conflicts into the deduplication queue
- +2 more