Decompose: Break down #7 into implementable work units #22
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#22
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?
Assessment
Issue #7 requests semantic notebook features — the current implementation uses basic SQL LIKE for search with no summarization, topic extraction, or notes.
Proposed Phases
P1: Full-text search (FTS5) — Connect existing infrastructure
Replace SQL LIKE search with SQLite FTS5 for proper full-text search across notebook entries. Add ranking, snippets, and query syntax.
Changes needed:
SegmentDao.ktline 33-38: replaceLIKE '%' || :query || '%'with FTS5text MATCH :queryquery ontranscript_segments_ftsrankandsnippet()functionsAND/ORoperators)SearchScreen(MainScreen.kt ~line 1431): wire results display with highlighted snippetsNote: FTS5 virtual table
transcript_segments_fts+ sync triggers already exist inMIGRATION_1_2(AppDatabase.kt lines 34-73). Only the DAO query and UI need switching.P2: Automatic summarization
Add an LLM-based summarization step that generates a short summary for each notebook entry on creation/update. Store summary alongside entry content.
Changes needed:
summarizeTranscript()onLLMTopicExtractor(or separateTranscriptSummarizer) with different prompt, reusing existingLLMConfiginfrastructuresummary TEXTcolumn toRecordingSessionentity via new migrationP3: Topic extraction & clustering — ✅ DONE
Extract topics/keywords from entries using TF-IDF or LLM. Provide a topic view/dashboard for navigating entries by theme.
LLMTopicExtractor.kt(#19): post-recording LLM topic segmentation → createsSubjectentities +SessionTag(TYPE_SUBJECT) — closedKeywordTopicDetector.kt(#20): live keyword-pattern detection with sliding window — closedP4: Rich notes support
Add support for notes metadata: tags, cross-references, pinned notes, markdown rendering.
Changes needed:
notes_tagstable (session_id, tag TEXT) to Room schemanotes_crossreftable (source_session_id, target_session_id, note TEXT) to Room schemais_pinned INTEGER DEFAULT 0toRecordingSessionentityP5: Semantic search endpoint
Create an API endpoint that accepts natural language queries and returns semantically relevant entries (combining FTS5 with optional LLM reranking).
Changes needed:
LLMConfigfrom topic extraction for the rerankerP6: Session title/naming
RecordingSession.titlecurrently auto-set to "Recording " with no edit surfaceLLMConfig) after recordingGSD VERIFY phase found no changes after implementation.
Worker output: ]11;?\[0m[?7h[0m ┊ review diff
[0m[0m[?7h[0;38;5;178ma//home/b/Projects/transcriber/.gsd/gate-state.json → b//home/b/Projects/transcriber/.gsd/gate-state.json[0m
[0m[0m[?7h[0;38;5;102m@@ -14,15 +14,15 @@[0m
[0m[0m[?7h[0;38;5;136m "gates": {[0m
[0m[0m[?7h[0;38;5;136m
This issue has been decomposed into the following sub-issues:
RecordingSession.titlecurrently auto-set to "Recording " with noEach sub-issue has been labeled with
needs-triageand will be evaluated by the triage pipeline before queue routing.