medium complexity extracted Accessibility & Universal Design Confidence: 100%
8
Components
198
Shared
5
User Stories
Yes
Analyzed

Description

An integrated speech-to-text capability that allows peer mentors to dictate free-text report fields instead of typing. This is explicitly requested by both Blindeforbundet and HLF and is especially valuable in the post-visit report flow where users may be writing up notes in contexts where typing is inconvenient or inaccessible. The feature must be clearly scoped to post-activity transcription only — Blindeforbundet explicitly prohibits recording during the peer mentoring conversation itself. The UI must make this distinction clear and must never start audio capture automatically. Implementation should leverage the OS-native speech recognition engine (iOS SFSpeechRecognizer / Android SpeechRecognizer) to avoid requiring a third-party API and to respect the user's language and privacy settings.

Analysis

Business Value

Removes the biggest remaining barrier to app adoption for blind and low-vision peer mentors who find on-screen keyboards slow or unreliable. Also benefits HLF's high-volume reporters (one user had 380 annual registrations) by speeding up the report-writing step. Increases overall data completeness by reducing report abandonment.

Implementation Notes

Use the speech_to_text Flutter package wrapping native OS APIs — no third-party cloud dependency. Display a microphone button only on free-text fields designated for dictation. Show a clear 'Recording…' indicator and require explicit tap to start and stop. Persist partial transcriptions so a crash or interruption does not lose dictated content. The feature must be fully accessible via screen reader (announce record state changes as live regions).

Components (206)

User Interface (3)

Service Layer (3)

Data Layer (1)

Infrastructure (1)

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)

Use Dictation in Post-Session Report Way-Forward Section
medium 5 pts

As a As a Peer Mentor (Likeperson)

I want to dictate the 'way forward' section of my post-session report so that I can describe follow-up actions and referrals verbally

So that the formalized structured report required by Blindeforbundet and other organisations is completed efficiently with accurate follow-up instructions for coordinators

Acceptance Criteria
  • Given the peer mentor is on the way-forward section of a post-session report, When they tap the microphone on any way-forward sub-field, Then dictation activates for that specific sub-field only
  • Given the peer mentor dictates content for the 'next steps' sub-field, When they insert the transcription, Then the content is stored as a way-forward item linked to the correct field key
  • Given the peer mentor completes all way-forward fields via dictation, When they submit the report, Then the way-forward task service creates the appropriate follow-up tasks in the database
  • +2 more
View Full Story →
Receive Visual and Auditory Feedback During Recording
high 3 pts

As a As a Peer Mentor (Likeperson)

I want to see a clear recording state indicator and hear an audio cue when dictation starts and stops

So that I always know whether my speech is being captured, avoiding silent failures or accidental recordings

Acceptance Criteria
  • Given dictation is idle, When the peer mentor views a dictation-enabled field, Then the microphone button shows a static mic icon with no animation
  • Given dictation is active, When recording is in progress, Then the microphone button shows an animated pulse/waveform indicator and the button colour changes to a recording accent color
  • Given dictation stops (user action or timeout), When the state transitions to idle or processing, Then the animation stops and the button returns to its static state
  • +2 more
View Full Story →
View and Edit Live Transcription Before Inserting
high 5 pts

As a As a Peer Mentor (Likeperson)

I want to see a live preview of my speech transcription and edit it before inserting it into the report field

So that I can catch and correct any misheard words or proper nouns before they become part of the official report

Acceptance Criteria
  • Given dictation is active, When the peer mentor speaks, Then interim transcription results appear in the preview field within 500ms of each spoken word
  • Given transcription is complete, When the peer mentor reviews the preview, Then they can tap, long-press, and edit any word in the transcription using standard OS text editing
  • Given the peer mentor has reviewed and corrected the transcription, When they tap 'Insert', Then the edited text is placed into the originating report field and the overlay closes
  • +2 more
View Full Story →
Activate Voice Dictation for Report Fields
high 8 pts

As a As a Peer Mentor (Likeperson)

I want to activate a microphone button on any text field in the post-session report and dictate my observations using my voice

So that I can complete reports quickly without needing to type, especially when I have limited fine motor control or am fatigued after a session

Acceptance Criteria
  • Given a post-session report is open, When the peer mentor taps the microphone icon on a notes or free-text field, Then the dictation overlay activates and the device microphone begins recording
  • Given dictation is active, When the peer mentor speaks in Norwegian, Then transcribed text appears in real time in the transcription preview field with at least 85% accuracy on common Norwegian vocabulary
  • Given dictation is complete, When the peer mentor taps 'Done' or the field loses focus, Then the transcribed text is inserted into the originating field and the overlay closes
  • +2 more
View Full Story →
Use Dictation Only in Designated Report Fields
critical 3 pts

As a As a Peer Mentor (Likeperson)

I want the speech-to-text feature to be available only on fields designated for dictation and not on sensitive identity or credential fields

So that personal data such as names, national identity numbers, and encrypted content is never inadvertently routed through third-party speech recognition services

Acceptance Criteria
  • Given a field is of type 'password', 'encrypted', or is flagged as sensitive in org field config, When the report screen renders, Then no microphone button appears on that field
  • Given a notes or description field is not restricted, When the report screen renders, Then the microphone button is visible and accessible with a minimum touch target of 44x44dp
  • Given a coordinator attempts to dictate into a field dynamically added by org field config that is marked restricted, When the field renders, Then dictation is suppressed without any error being shown to the user
  • +2 more
View Full Story →