Add keyword-based live topic detection during recording #20
Labels
No labels
blocked:children
blocked:needs-decision
blocked:needs-human
blocked:verify-failed
bug
deferred
enhancement
feature-request
in-progress
needs-decompose
needs-triage
quickfix
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/transcriber#20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent Issue
#6 — No speaker/subject assignment during live recording
#11 — Implementation plan
Description
Per the topic segmentation research (#10), keyword detection is a lightweight live supplement that can show low-confidence topic hints during recording. Implement a
KeywordTopicDetectorthat processes incoming transcript words and surfaces topic suggestions as "uncertain" chips in the UI.Scope
KeywordTopicDetectorclass:TopicRule(pattern: Regex, subjectId: Long, confidence: Float)TopicMatch?when a keyword pattern matchesTranscriptionService.onResult()orRecordingViewModel:Acceptance Criteria
Dependencies
⏸ Needs Decision
Blocking factors:
Scope: medium Risk: low Spec: aligned Type: feature
Summary: Adds a keyword-based live topic detector that scans transcript text for transition-phrase patterns and surfaces suggest-able topic chips during recording.
Suggestion: Create standalone KeywordTopicDetector class with TopicRule data class (regex/subjectId/confidence), inject into RecordingViewModel, observe currentPartialText for sliding-window matches, surface matches as MutableStateFlow<List> for the recording UI to render as dismissible chips; Manage tab gets a new composable section listing existing Subjects with regex rule editors, stored via DataStore or as a Room entity. No new DB migration needed since SessionTag infrastructure already exists.
Rationale: Medium scope because it touches 6-9 files across data layer (new detector class + optional rule persistence), ViewModel wiring, and UI (suggestion chips + Manage tab section), but each change is small and isolated. Risk is low since the feature is entirely additive with no breaking changes — the suggestion chip is purely advisory, tapping it calls the existing setCurrentSubject() path. Spec is fully aligned as this is explicitly documented in the parent issues #6 and #11 as a Phase 2 milestone, and the SessionTag dependency from #13 is already implemented.
Action: Review each blocking factor above. Remove
blocked:needs-decisionlabel to route back to triage.Fixed in commit. Closing.