high complexity extracted Bufdir Report Generation Confidence: 100%
8
Components
198
Shared
20
User Stories
Yes
Analyzed

Description

Automatically aggregates all registered peer mentor activities, events, and contact interactions across the reporting period into the structured metrics that Bufdir requires. This includes counting unique participants, activity types, hours delivered, and geographic distribution across organizational units (regions, local chapters). The aggregation must handle multi-organization contexts where the same app instance serves NHF, Blindeforbundet, HLF, and Barnekreftforeningen, ensuring each organization's data is isolated and correctly attributed. Activity records already captured during normal peer mentor workflows feed directly into this aggregation without requiring any re-entry.

Analysis

Business Value

Eliminates the manual Excel aggregation that currently consumes significant coordinator time across all four organizations. Since Bufdir funding is contingent on accurate reporting, automation directly protects revenue streams. Reduces human error risk in grant reporting, which has compliance implications.

Implementation Notes

Requires a well-defined data model mapping internal activity types to Bufdir's official reporting categories. Supabase views or RPC functions are appropriate for the aggregation queries. Must account for coordinators who register on behalf of peer mentors (proxy/bulk registration) so these are not double-counted.

Components (206)

User Interface (2)

Service Layer (2)

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

View Geographic Distribution of Activities in Aggregation Summary
medium 5 pts

As a As a Coordinator

I want to see how aggregated activities are distributed across geographic regions before submitting to Bufdir

So that I can verify that all regions are represented and identify any regions with unusually low activity that may indicate missing registrations

Acceptance Criteria
  • Given aggregation completes, when the summary screen is shown, then a geographic distribution section lists activity counts grouped by region or municipality
  • Given a region has zero activity, when the distribution is displayed, then that region appears with a count of zero and is visually distinguished from active regions
  • Given the coordinator taps a region row, when the detail expands, then the underlying activity records contributing to that region's count are listed
  • +2 more
View Full Story →
Access Report History for Audit and Resubmission
medium 5 pts

As a As a Coordinator

I want to view a history of all previously generated and submitted Bufdir reports with their key metrics

So that I can audit past submissions, compare trends across reporting periods, and resubmit a previous report if Bufdir requests a correction

Acceptance Criteria
  • Given the coordinator opens the report history screen, when history loads, then all past Bufdir exports for their organisation are listed in reverse chronological order
  • Given a history entry is displayed, when the coordinator views it, then the period, export date, file format, total activities, and unique participant count are all shown
  • Given the coordinator taps a history entry, when the detail opens, then a summary metrics widget shows the full breakdown of that report's aggregated data
  • +3 more
View Full Story →
View Geographic Distribution of Activities in Aggregation Summary
medium 5 pts

As a As a Organization Administrator

I want to see how aggregated activities are distributed across geographic regions before submitting to Bufdir

So that I can verify that all regions are represented and identify any regions with unusually low activity that may indicate missing registrations

Acceptance Criteria
  • Given aggregation completes, when the summary screen is shown, then a geographic distribution section lists activity counts grouped by region or municipality
  • Given a region has zero activity, when the distribution is displayed, then that region appears with a count of zero and is visually distinguished from active regions
  • Given the coordinator taps a region row, when the detail expands, then the underlying activity records contributing to that region's count are listed
  • +2 more
View Full Story →
Access Report History for Audit and Resubmission
medium 5 pts

As a As a Organization Administrator

I want to view a history of all previously generated and submitted Bufdir reports with their key metrics

So that I can audit past submissions, compare trends across reporting periods, and resubmit a previous report if Bufdir requests a correction

Acceptance Criteria
  • Given the coordinator opens the report history screen, when history loads, then all past Bufdir exports for their organisation are listed in reverse chronological order
  • Given a history entry is displayed, when the coordinator views it, then the period, export date, file format, total activities, and unique participant count are all shown
  • Given the coordinator taps a history entry, when the detail opens, then a summary metrics widget shows the full breakdown of that report's aggregated data
  • +3 more
View Full Story →
Validate Aggregated Data Against Bufdir Alignment Rules
high 5 pts

As a As a Coordinator

I want the aggregation to check my data against Bufdir's alignment rules and flag any non-compliant values before I export

So that I am confident the submission meets Bufdir's acceptance criteria and will not be rejected after I send it

Acceptance Criteria
  • Given aggregation completes, when the alignment validator runs, then all Bufdir-specified rules are checked against the aggregated dataset
  • Given a critical violation is found, when validation results are shown, then the violation is marked as blocking and the export button is disabled until it is resolved
  • Given a non-critical warning is found, when validation results are shown, then the warning is displayed with an explanation but the export button remains enabled
  • +3 more
View Full Story →
Deduplicate Participants Across Chapters Before Submission
high 8 pts

As a As a Coordinator

I want the aggregation to automatically identify and merge duplicate participant records that span multiple chapters

So that Bufdir receives a count of unique individuals rather than inflated counts caused by the same person appearing in several chapters

Acceptance Criteria
  • Given activity records contain participants registered under multiple chapters, when aggregation runs, then the deduplication service identifies records belonging to the same individual
  • Given duplicates are identified, when they are merged, then only one unique participant record is counted in the final Bufdir totals
  • Given deduplication completes, when the aggregation summary is shown, then the number of detected duplicates and the resulting unique participant count are both visible
  • +2 more
View Full Story →
Preview Bufdir Report Structure Before Export
high 8 pts

As a As a Coordinator

I want to preview the structured Bufdir report with all fields and values before I confirm the export

So that I can catch errors or omissions in the aggregated data while I can still correct them, rather than discovering problems after submission

Acceptance Criteria
  • Given aggregation completes, when the coordinator navigates to the preview screen, then all Bufdir report sections are rendered with their computed field values
  • Given a field value fails Bufdir's validation rules, when the preview renders, then that field row is highlighted and the validation summary banner shows the total number of errors
  • Given the coordinator taps a validation error, when the detail expands, then the error description explains what is wrong and what value is expected
  • +3 more
View Full Story →
Validate Aggregated Data Against Bufdir Alignment Rules
high 5 pts

As a As a Organization Administrator

I want the aggregation to check my data against Bufdir's alignment rules and flag any non-compliant values before I export

So that I am confident the submission meets Bufdir's acceptance criteria and will not be rejected after I send it

Acceptance Criteria
  • Given aggregation completes, when the alignment validator runs, then all Bufdir-specified rules are checked against the aggregated dataset
  • Given a critical violation is found, when validation results are shown, then the violation is marked as blocking and the export button is disabled until it is resolved
  • Given a non-critical warning is found, when validation results are shown, then the warning is displayed with an explanation but the export button remains enabled
  • +3 more
View Full Story →
Deduplicate Participants Across Chapters Before Submission
high 8 pts

As a As a Organization Administrator

I want the aggregation to automatically identify and merge duplicate participant records that span multiple chapters

So that Bufdir receives a count of unique individuals rather than inflated counts caused by the same person appearing in several chapters

Acceptance Criteria
  • Given activity records contain participants registered under multiple chapters, when aggregation runs, then the deduplication service identifies records belonging to the same individual
  • Given duplicates are identified, when they are merged, then only one unique participant record is counted in the final Bufdir totals
  • Given deduplication completes, when the aggregation summary is shown, then the number of detected duplicates and the resulting unique participant count are both visible
  • +2 more
View Full Story →
Preview Bufdir Report Structure Before Export
high 8 pts

As a As a Organization Administrator

I want to preview the structured Bufdir report with all fields and values before I confirm the export

So that I can catch errors or omissions in the aggregated data while I can still correct them, rather than discovering problems after submission

Acceptance Criteria
  • Given aggregation completes, when the coordinator navigates to the preview screen, then all Bufdir report sections are rendered with their computed field values
  • Given a field value fails Bufdir's validation rules, when the preview renders, then that field row is highlighted and the validation summary banner shows the total number of errors
  • Given the coordinator taps a validation error, when the detail expands, then the error description explains what is wrong and what value is expected
  • +3 more
View Full Story →
Select Reporting Period for Bufdir Aggregation
critical 5 pts

As a As a Coordinator

I want to select a reporting period using presets or a custom date range before running Bufdir data aggregation

So that the aggregated data precisely covers the grant period Bufdir requires, avoiding under- or over-reporting

Acceptance Criteria
  • Given the coordinator opens the period selection screen, when the screen loads, then a list of preset periods (full year, H1, H2, Q1–Q4) is displayed alongside a custom range option
  • Given the coordinator taps a preset, when the preset is selected, then the start and end dates populate automatically and the record-count banner refreshes to show the matching activity count
  • Given the coordinator chooses a custom date range, when they confirm the range, then the system validates that start date is before end date and that the range does not exceed allowed limits
  • +2 more
View Full Story →
Map Activities to Bufdir Categories Automatically
critical 5 pts

As a As a Coordinator

I want the aggregation to automatically map each registered activity type to the corresponding Bufdir reporting category

So that the exported report uses Bufdir's taxonomy without requiring me to manually reclassify hundreds of activities

Acceptance Criteria
  • Given activities are fetched for the selected period, when the aggregation service processes them, then each activity is assigned a Bufdir category according to the active mapping configuration
  • Given all activities are successfully mapped, when the aggregation summary is displayed, then activity counts are grouped by Bufdir category
  • Given one or more activity types have no mapping defined, when aggregation runs, then a warning lists the unmapped types and the coordinator is blocked from proceeding to export until the gap is resolved
  • +2 more
View Full Story →
Ensure Data Isolation Between Organisations During Aggregation
critical 5 pts

As a As a Coordinator

I want the aggregation to strictly include only my organisation's data and exclude records from other organisations sharing the platform

So that Bufdir receives accurate data for my organisation alone and no cross-contamination of another organisation's activities inflates or distorts my report

Acceptance Criteria
  • Given a coordinator from organisation A triggers aggregation, when the aggregation query runs, then only activity records with organisation A's tenant identifier are included
  • Given the platform has records from multiple organisations, when aggregation completes, then the summary totals are consistent with the count of records belonging exclusively to the coordinator's organisation
  • Given an attempt is made to access another organisation's records, when the query executes against Supabase, then row-level security policies block the access and no cross-org data is returned
  • +2 more
View Full Story →
Run Bufdir Activity Aggregation with Progress Feedback
critical 8 pts

As a As a Coordinator

I want to trigger the Bufdir data aggregation process and see real-time progress while it runs

So that I know the system is working and can intervene if the process stalls, rather than waiting with no feedback

Acceptance Criteria
  • Given the coordinator initiates aggregation, when the process starts, then an aggregation progress indicator appears showing the current stage (fetching, categorising, deduplicating, distributing)
  • Given aggregation is running, when a stage completes, then the progress indicator advances and labels the next stage
  • Given aggregation completes successfully, when all stages finish, then an aggregation summary widget shows total activities, unique participants, category breakdown, and geographic distribution
  • +2 more
View Full Story →
Export Bufdir Report in Required File Format
critical 8 pts

As a As a Coordinator

I want to export the validated Bufdir aggregation as a properly formatted file (Excel, CSV, or PDF) ready for submission

So that I can submit the data to Bufdir using the format they accept without any further manual formatting

Acceptance Criteria
  • Given the coordinator selects a file format (Excel, CSV, or PDF) and confirms export, when the export process runs, then a file is generated in the selected format with Bufdir's required column structure
  • Given the file is generated, when the coordinator downloads it, then the file opens correctly in the corresponding application (Excel for .xlsx, spreadsheet viewer for .csv, PDF reader for .pdf)
  • Given the export completes, when the coordinator checks report history, then a new entry appears with the correct period, timestamp, format, and metrics
  • +3 more
View Full Story →
Select Reporting Period for Bufdir Aggregation
critical 5 pts

As a As a Organization Administrator

I want to select a reporting period using presets or a custom date range before running Bufdir data aggregation

So that the aggregated data precisely covers the grant period Bufdir requires, avoiding under- or over-reporting

Acceptance Criteria
  • Given the coordinator opens the period selection screen, when the screen loads, then a list of preset periods (full year, H1, H2, Q1–Q4) is displayed alongside a custom range option
  • Given the coordinator taps a preset, when the preset is selected, then the start and end dates populate automatically and the record-count banner refreshes to show the matching activity count
  • Given the coordinator chooses a custom date range, when they confirm the range, then the system validates that start date is before end date and that the range does not exceed allowed limits
  • +2 more
View Full Story →
Map Activities to Bufdir Categories Automatically
critical 5 pts

As a As a Organization Administrator

I want the aggregation to automatically map each registered activity type to the corresponding Bufdir reporting category

So that the exported report uses Bufdir's taxonomy without requiring me to manually reclassify hundreds of activities

Acceptance Criteria
  • Given activities are fetched for the selected period, when the aggregation service processes them, then each activity is assigned a Bufdir category according to the active mapping configuration
  • Given all activities are successfully mapped, when the aggregation summary is displayed, then activity counts are grouped by Bufdir category
  • Given one or more activity types have no mapping defined, when aggregation runs, then a warning lists the unmapped types and the coordinator is blocked from proceeding to export until the gap is resolved
  • +2 more
View Full Story →
Ensure Data Isolation Between Organisations During Aggregation
critical 5 pts

As a As a Organization Administrator

I want the aggregation to strictly include only my organisation's data and exclude records from other organisations sharing the platform

So that Bufdir receives accurate data for my organisation alone and no cross-contamination of another organisation's activities inflates or distorts my report

Acceptance Criteria
  • Given a coordinator from organisation A triggers aggregation, when the aggregation query runs, then only activity records with organisation A's tenant identifier are included
  • Given the platform has records from multiple organisations, when aggregation completes, then the summary totals are consistent with the count of records belonging exclusively to the coordinator's organisation
  • Given an attempt is made to access another organisation's records, when the query executes against Supabase, then row-level security policies block the access and no cross-org data is returned
  • +2 more
View Full Story →
Run Bufdir Activity Aggregation with Progress Feedback
critical 8 pts

As a As a Organization Administrator

I want to trigger the Bufdir data aggregation process and see real-time progress while it runs

So that I know the system is working and can intervene if the process stalls, rather than waiting with no feedback

Acceptance Criteria
  • Given the coordinator initiates aggregation, when the process starts, then an aggregation progress indicator appears showing the current stage (fetching, categorising, deduplicating, distributing)
  • Given aggregation is running, when a stage completes, then the progress indicator advances and labels the next stage
  • Given aggregation completes successfully, when all stages finish, then an aggregation summary widget shows total activities, unique participants, category breakdown, and geographic distribution
  • +2 more
View Full Story →
Export Bufdir Report in Required File Format
critical 8 pts

As a As a Organization Administrator

I want to export the validated Bufdir aggregation as a properly formatted file (Excel, CSV, or PDF) ready for submission

So that I can submit the data to Bufdir using the format they accept without any further manual formatting

Acceptance Criteria
  • Given the coordinator selects a file format (Excel, CSV, or PDF) and confirms export, when the export process runs, then a file is generated in the selected format with Bufdir's required column structure
  • Given the file is generated, when the coordinator downloads it, then the file opens correctly in the corresponding application (Excel for .xlsx, spreadsheet viewer for .csv, PDF reader for .pdf)
  • Given the export completes, when the coordinator checks report history, then a new entry appears with the correct period, timestamp, format, and metrics
  • +3 more
View Full Story →