@redaksjon/protokoll 0.0.15 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -41,11 +41,12 @@ When you first start using Protokoll, it doesn't know anything about you. It doe
41
41
  name: Project Alpha
42
42
  classification:
43
43
  context_type: work
44
- explicit_phrases: ["project alpha", "update on alpha"]
45
- topics: ["client engagement", "Q1 planning"]
44
+ explicit_phrases: ["project alpha", "update on alpha"] # Routes when these appear in audio
45
+ topics: ["client engagement", "Q1 planning"] # Lower-confidence associations
46
46
  routing:
47
47
  destination: ~/notes/projects/alpha
48
48
  structure: month
49
+ sounds_like: ["project alfa"] # Phonetic variants for misheard project names
49
50
  ```
50
51
 
51
52
  **You can read these files. You can edit them. You can version control them.** This is YOUR context, not a proprietary model hidden in someone else's cloud.
@@ -68,6 +69,65 @@ This means:
68
69
 
69
70
  The goal is simple: **After a few weeks of use, Protokoll should understand your world well enough to route notes perfectly with minimal intervention.**
70
71
 
72
+ ## MCP Server: AI Assistant Integration
73
+
74
+ **NEW:** Protokoll now implements the Model Context Protocol (MCP), making all its capabilities available to AI coding assistants like Claude, Cursor, and other MCP-compatible tools.
75
+
76
+ ### What is MCP?
77
+
78
+ MCP is a protocol that allows AI assistants to access external data and functionality. Protokoll's MCP server exposes:
79
+
80
+ #### Resources (Read-Only Data Access)
81
+ - **Transcripts**: Read individual transcript files with `protokoll://transcript/{path}`
82
+ - **Entities**: Access context entities (people, projects, terms) as YAML with `protokoll://entity/{type}/{id}`
83
+ - **Configuration**: View Protokoll setup and entity counts with `protokoll://config`
84
+ - **Transcript Lists**: Browse transcripts by directory with filtering and pagination
85
+ - **Entity Lists**: List all entities of a given type with URIs for navigation
86
+
87
+ #### Prompts (Workflow Templates)
88
+ - **transcribe_with_context**: Guided transcription with automatic context discovery
89
+ - **setup_project**: Interactive project creation with metadata assistance
90
+ - **review_transcript**: Analyze and improve transcript accuracy
91
+ - **enrich_entity**: Add or update context entities
92
+ - **batch_transcription**: Process multiple audio files
93
+ - **find_and_analyze**: Search and analyze transcript content
94
+
95
+ #### Tools (Direct Operations)
96
+ All existing CLI tools remain available through MCP for direct operations.
97
+
98
+ ### Using the MCP Server
99
+
100
+ 1. **Build the server**:
101
+ ```bash
102
+ npm run mcp:build
103
+ ```
104
+
105
+ 2. **Test with MCP Inspector**:
106
+ ```bash
107
+ npm run mcp:inspect
108
+ ```
109
+
110
+ 3. **Configure in your AI assistant** (example for Claude Desktop):
111
+ ```json
112
+ {
113
+ "mcpServers": {
114
+ "protokoll": {
115
+ "command": "node",
116
+ "args": ["/path/to/protokoll/dist/mcp/server.js"]
117
+ }
118
+ }
119
+ }
120
+ ```
121
+
122
+ Now your AI assistant can:
123
+ - Transcribe audio with context awareness
124
+ - Browse and read transcripts
125
+ - Analyze context entities
126
+ - Guide project setup interactively
127
+ - And much more!
128
+
129
+ **See**: `guide/mcp-integration.md` for complete MCP documentation.
130
+
71
131
  ## Table of Contents
72
132
 
73
133
  - [The Problem](#the-problem)
@@ -84,6 +144,7 @@ The goal is simple: **After a few weeks of use, Protokoll should understand your
84
144
  - [Quick Configuration Commands](#quick-configuration-commands)
85
145
  - [Command Line Options](#command-line-options)
86
146
  - [Context Management Commands](#context-management-commands)
147
+ - [Smart Project Creation](#smart-project-creation)
87
148
  - [Transcript Actions](#transcript-actions)
88
149
  - [Feedback Command](#feedback-command)
89
150
  - [Key Features](#key-features)
@@ -405,6 +466,15 @@ selfReflection: true # Generate reports by default
405
466
  silent: false # Sound notifications
406
467
  debug: false # Debug mode
407
468
 
469
+ # Smart assistance for project creation
470
+ smartAssistance:
471
+ enabled: true # Enable AI-assisted project creation
472
+ phoneticModel: "gpt-5-nano" # Fast model for phonetic variant generation
473
+ analysisModel: "gpt-5-mini" # Model for content analysis and suggestions
474
+ soundsLikeOnAdd: true # Auto-generate phonetic variants
475
+ triggerPhrasesOnAdd: true # Auto-generate content-matching phrases
476
+ promptForSource: true # Ask for URL/file when creating projects
477
+
408
478
  # Advanced
409
479
  maxAudioSize: 26214400 # Max audio file size in bytes (25MB)
410
480
  tempDirectory: "/tmp" # Temporary file storage
@@ -506,6 +576,19 @@ protokoll project add
506
576
  protokoll person add
507
577
  protokoll term add
508
578
 
579
+ # Add term with command-line arguments
580
+ protokoll term add --term "Kubernetes" --domain "devops" \
581
+ --description "Container orchestration platform" \
582
+ --topics "containers,orchestration,cloud-native" \
583
+ --projects "infrastructure"
584
+
585
+ # Update existing entity with new content (regenerates metadata)
586
+ protokoll project update redaksjon https://github.com/user/redaksjon/README.md
587
+ protokoll term update kubernetes https://kubernetes.io/docs/concepts/overview/
588
+
589
+ # Merge duplicate terms
590
+ protokoll term merge kubernetes-old kubernetes # Combines metadata, deletes source
591
+
509
592
  # Delete an entity
510
593
  protokoll project delete <id>
511
594
  protokoll person delete john-smith --force
@@ -540,25 +623,176 @@ Context notes (Enter to skip): Colleague from product team
540
623
  Person "Priya Sharma" saved successfully.
541
624
  ```
542
625
 
626
+ ### Smart Project Creation
627
+
628
+ Protokoll can use AI assistance to help create projects faster by automatically generating:
629
+
630
+ - **Sounds like**: Phonetic variants of your project NAME for when Whisper mishears it (e.g., "Protokoll" → "protocol", "pro to call")
631
+ - **Trigger phrases**: Content-matching phrases that indicate audio content belongs to this project (e.g., "working on protokoll", "protokoll meeting")
632
+ - **Topic keywords**: Relevant keywords extracted from project documentation
633
+ - **Description**: A contextual description of your project
634
+
635
+ #### Understanding Sounds Like vs Trigger Phrases
636
+
637
+ | Field | Purpose | Example for "Protokoll" |
638
+ |-------|---------|------------------------|
639
+ | **Sounds like** | Correct misheard project NAME | "protocol", "pro to call" |
640
+ | **Trigger phrases** | Match content to project | "working on protokoll", "protokoll meeting" |
641
+
642
+ - `sounds_like` is used during transcription to correct the project name when Whisper mishears it
643
+ - `trigger phrases` are used during classification to route content to the right project
644
+
645
+ #### Basic Usage
646
+
647
+ ```bash
648
+ # Interactive mode with smart assistance (default when configured)
649
+ protokoll project add
650
+
651
+ # With a source URL for full context analysis
652
+ protokoll project add https://github.com/myorg/myproject
653
+
654
+ # With a local file or directory
655
+ protokoll project add ./README.md
656
+ protokoll project add /path/to/project
657
+ ```
658
+
659
+ #### Command-Line Options
660
+
661
+ ```bash
662
+ protokoll project add [source] [options]
663
+
664
+ Arguments:
665
+ source URL or file path to analyze for project context
666
+
667
+ Options:
668
+ --name <name> Project name (skips name prompt)
669
+ --id <id> Project ID (auto-generated from name if not provided)
670
+ --context <type> Context type: work, personal, or mixed (default: work)
671
+ --destination <path> Output destination path for transcripts
672
+ --structure <type> Directory structure: none, year, month, day (default: month)
673
+ --smart Force enable smart assistance
674
+ --no-smart Force disable smart assistance
675
+ -y, --yes Accept all AI-generated suggestions without prompting (non-interactive)
676
+ ```
677
+
678
+ #### Examples
679
+
680
+ ```bash
681
+ # Quick project from GitHub repo
682
+ protokoll project add https://github.com/myorg/myproject --name "My Project"
683
+
684
+ # Create project with pre-set options
685
+ protokoll project add --name "Quarterly Planning" --context work
686
+
687
+ # Analyze local documentation
688
+ protokoll project add ./docs/README.md --name "Documentation"
689
+
690
+ # Non-interactive mode: accept all AI suggestions automatically
691
+ protokoll project add https://github.com/myorg/myproject --name "My Project" --yes
692
+
693
+ # Disable smart assistance for manual entry
694
+ protokoll project add --no-smart
695
+ ```
696
+
697
+ #### How It Works
698
+
699
+ 1. **Name Entry**: When you provide a project name, smart assistance generates:
700
+ - **Sounds like**: Phonetic variants for when Whisper mishears the name
701
+ - **Trigger phrases**: Content-matching phrases for classification
702
+
703
+ 2. **Content Analysis**: When you provide a URL or file path, smart assistance:
704
+ - Fetches the content (supports GitHub repos, web pages, local files)
705
+ - Analyzes it to suggest topic keywords and description
706
+
707
+ 3. **Editable Suggestions**: All suggestions are presented as defaults that you can accept (press Enter) or edit
708
+
709
+ 4. **Non-Interactive Mode**: Use the `--yes` flag to automatically accept all AI-generated suggestions without prompting. This is useful for automation or when you want to trust the AI completely
710
+
711
+ #### Configuration
712
+
713
+ Enable or disable smart assistance globally in your `.protokoll/config.yaml`:
714
+
715
+ ```yaml
716
+ smartAssistance:
717
+ enabled: true # Enable smart assistance globally
718
+ phoneticModel: "gpt-5-nano" # Fast model for phonetic variant generation (default)
719
+ analysisModel: "gpt-5-mini" # Model for content analysis and suggestions (default)
720
+ soundsLikeOnAdd: true # Auto-generate phonetic variants
721
+ triggerPhrasesOnAdd: true # Auto-generate content-matching phrases
722
+ promptForSource: true # Ask about URL/file when not provided
723
+ ```
724
+
725
+ Override per-command with `--smart` or `--no-smart` flags.
726
+
727
+ #### Requirements
728
+
729
+ - OpenAI API key set in environment (`OPENAI_API_KEY`)
730
+ - Network access for URL fetching and API calls
731
+
543
732
  ### Example: Adding a Project
544
733
 
734
+ The interactive prompt guides you through each field with explanations:
735
+
545
736
  ```bash
546
737
  $ protokoll project add
547
738
 
548
739
  [Add New Project]
549
740
 
741
+ Projects define where transcripts are filed and how they're classified.
742
+ Each field helps Protokoll route your audio notes to the right place.
743
+
550
744
  Project name: Client Alpha
745
+
746
+ ID is used for the filename to store project info (e.g., "client-alpha.yaml")
747
+ and as a reference when linking other entities to this project.
551
748
  ID (Enter for "client-alpha"):
552
- Output destination path: ~/clients/alpha/notes
749
+
750
+ Output destination is where transcripts for this project will be saved.
751
+ Leave blank to use the configured default: ~/notes
752
+ Output destination path (Enter for default): ~/clients/alpha/notes
753
+
754
+ Directory structure determines how transcripts are organized by date:
755
+ none: output/transcript.md
756
+ year: output/2025/transcript.md
757
+ month: output/2025/01/transcript.md
758
+ day: output/2025/01/15/transcript.md
553
759
  Directory structure (none/year/month/day, Enter for month): month
760
+
761
+ Context type helps classify the nature of this project:
762
+ work: Professional/business content
763
+ personal: Personal notes and ideas
764
+ mixed: Contains both work and personal content
554
765
  Context type (work/personal/mixed, Enter for work): work
766
+
767
+ Trigger phrases are words/phrases that identify content belongs to this project.
768
+ When these phrases appear in your audio, Protokoll routes it here.
769
+ Examples: "client alpha", "alpha project", "working on alpha"
555
770
  Trigger phrases (comma-separated): client alpha, alpha project
771
+
772
+ Sounds-like variants help when Whisper mishears the project name.
773
+ Useful for non-English names (Norwegian, etc.) that may be transcribed differently.
774
+ Examples for "Protokoll": "protocol", "pro to call", "proto call"
775
+ Sounds like (comma-separated, Enter to skip):
776
+
777
+ Topic keywords are themes/subjects associated with this project.
778
+ These provide additional context for classification but are lower-confidence
779
+ than trigger phrases. Examples: "budget", "roadmap", "client engagement"
556
780
  Topic keywords (comma-separated, Enter to skip): client engagement
781
+
782
+ Description is a brief note about this project for your reference.
557
783
  Description (Enter to skip): Primary client project
558
784
 
559
785
  Project "Client Alpha" saved successfully.
560
786
  ```
561
787
 
788
+ #### Project Field Reference
789
+
790
+ | Field | Purpose |
791
+ |-------|---------|
792
+ | **Trigger phrases** | High-confidence matching - routes transcripts when these phrases appear in audio |
793
+ | **Sounds like** | Phonetic variants for when Whisper mishears the project name (useful for non-English names) |
794
+ | **Topic keywords** | Lower-confidence theme associations for classification |
795
+
562
796
  ### Options
563
797
 
564
798
  | Option | Description |
@@ -570,7 +804,74 @@ For complete documentation, see the [Context Commands Guide](./guide/context-com
570
804
 
571
805
  ## Transcript Actions
572
806
 
573
- Protokoll includes the `action` command for editing and combining existing transcripts. This is useful for post-processing, organizing, and managing your transcript library.
807
+ Protokoll includes commands for working with transcripts: listing, editing, combining, and analyzing your transcript library.
808
+
809
+ ### List Transcripts
810
+
811
+ Search, filter, and browse your transcript library with pagination:
812
+
813
+ ```bash
814
+ # List recent transcripts (default: 50 most recent)
815
+ protokoll transcript list ~/notes
816
+
817
+ # Search for transcripts containing specific text
818
+ protokoll transcript list ~/notes --search "kubernetes"
819
+
820
+ # Filter by date range
821
+ protokoll transcript list ~/notes --start-date 2026-01-01 --end-date 2026-01-31
822
+
823
+ # Sort by filename or title instead of date
824
+ protokoll transcript list ~/notes --sort-by title
825
+
826
+ # Pagination - show next 50 results
827
+ protokoll transcript list ~/notes --limit 50 --offset 50
828
+
829
+ # Combine filters
830
+ protokoll transcript list ~/notes \
831
+ --search "meeting" \
832
+ --start-date 2026-01-01 \
833
+ --sort-by date \
834
+ --limit 25
835
+ ```
836
+
837
+ **Example Output:**
838
+
839
+ ```
840
+ 📂 Transcripts in: ~/notes
841
+ 📊 Showing 1-3 of 45 total
842
+
843
+ ✅ 2026-01-18 14:30 - Meeting with Priya about Q1 Planning
844
+ 2026-01-18-1430_Meeting_with_Priya.md
845
+
846
+ ✅ 2026-01-17 - Quick Ideas for New Feature
847
+ 2026-01-17_Quick_Ideas.md
848
+
849
+ 2026-01-16 09:15 - Sprint Planning Session
850
+ 2026-01-16-0915_Sprint_Planning.md
851
+
852
+ 💡 More results available. Use --offset 50 to see the next page.
853
+ ```
854
+
855
+ **List Options:**
856
+
857
+ | Option | Description | Default |
858
+ |--------|-------------|---------|
859
+ | `--limit <number>` | Max results to return | 50 |
860
+ | `--offset <number>` | Results to skip (pagination) | 0 |
861
+ | `--sort-by <field>` | Sort by: date, filename, title | date |
862
+ | `--start-date <YYYY-MM-DD>` | Filter from this date | none |
863
+ | `--end-date <YYYY-MM-DD>` | Filter to this date | none |
864
+ | `--search <text>` | Search filename and content | none |
865
+
866
+ **What Gets Displayed:**
867
+
868
+ - ✅ or space (indicates if raw transcript exists)
869
+ - Date from filename (YYYY-MM-DD format)
870
+ - Time if available (HH:MM format)
871
+ - Extracted title from document heading
872
+ - Filename
873
+
874
+ **MCP Tool:** Also available as `protokoll_list_transcripts` for AI assistants.
574
875
 
575
876
  ### Edit a Single Transcript
576
877
 
@@ -861,10 +1162,13 @@ type: project
861
1162
 
862
1163
  classification:
863
1164
  context_type: work
1165
+ # Trigger phrases: high-confidence content matching
1166
+ # When these phrases appear in audio, route to this project
864
1167
  explicit_phrases:
865
1168
  - "quarterly planning"
866
1169
  - "Q1 planning"
867
1170
  - "roadmap review"
1171
+ # Topic keywords: lower-confidence theme associations
868
1172
  topics:
869
1173
  - "roadmap"
870
1174
  - "budget"
@@ -877,6 +1181,12 @@ routing:
877
1181
  - time
878
1182
  - subject
879
1183
 
1184
+ # Phonetic variants: how Whisper might mishear the project name
1185
+ # Useful for non-English names (Norwegian, etc.)
1186
+ sounds_like:
1187
+ - "quarterly plan"
1188
+ - "quarter planning"
1189
+
880
1190
  active: true
881
1191
  ```
882
1192
 
@@ -898,13 +1208,24 @@ context: "Primary client"
898
1208
  ```yaml
899
1209
  # ~/.protokoll/terms/kubernetes.yaml
900
1210
  id: kubernetes
901
- term: Kubernetes
1211
+ name: Kubernetes
1212
+ type: term
1213
+ expansion: "" # For acronyms (e.g., "K8s" → "Kubernetes")
1214
+ domain: devops # E.g., devops, engineering, security, finance
1215
+ description: "Container orchestration platform that automates deployment, scaling, and management"
902
1216
  sounds_like:
903
1217
  - "kube"
904
1218
  - "k8s"
905
1219
  - "kubernetes"
906
1220
  - "cube er net ease"
907
- context: "Container orchestration platform"
1221
+ topics: # Related keywords for classification
1222
+ - containers
1223
+ - orchestration
1224
+ - cloud-native
1225
+ - devops
1226
+ projects: # Associated project IDs where this term is relevant
1227
+ - infrastructure
1228
+ - myapp
908
1229
  ```
909
1230
 
910
1231
  ## Routing System
@@ -1043,6 +1364,195 @@ Welcome to Protokoll!
1043
1364
  Configuration saved to ~/.protokoll/config.yaml
1044
1365
  ```
1045
1366
 
1367
+ ### Interactive Session Tracking & Control
1368
+
1369
+ Protokoll now provides comprehensive tracking and control during interactive sessions:
1370
+
1371
+ #### Per-File Progress Monitoring
1372
+
1373
+ Every prompt shows your progress for the current file:
1374
+
1375
+ ```
1376
+ [File: recording1.m4a] [Prompts: 3]
1377
+ (Type 'S' to skip remaining prompts for this file)
1378
+
1379
+ ────────────────────────────────────────────────────────────
1380
+ [Unknown: "Kubernetes"]
1381
+ ...
1382
+ ```
1383
+
1384
+ #### Skip Rest of File
1385
+
1386
+ When processing long recordings with many prompts, you can skip ahead:
1387
+
1388
+ ```
1389
+ > S
1390
+
1391
+ [Skipping remaining prompts for this file...]
1392
+ ```
1393
+
1394
+ This is useful when:
1395
+ - You've answered enough questions for one file
1396
+ - A recording has too many unknown terms to process now
1397
+ - You want to move to the next file quickly
1398
+
1399
+ The file will still be transcribed, but no more interactive prompts will appear for it.
1400
+
1401
+ #### Session Summary Report
1402
+
1403
+ At the end of every interactive session, you get a comprehensive summary:
1404
+
1405
+ ```
1406
+ ═══════════════════════════════════════════════════════════
1407
+ INTERACTIVE SESSION SUMMARY
1408
+ ═══════════════════════════════════════════════════════════
1409
+
1410
+ Duration: 8m 23s
1411
+ Total prompts answered: 12
1412
+
1413
+ ────────────────────────────────────────────────────────────
1414
+ FILES PROCESSED
1415
+ ────────────────────────────────────────────────────────────
1416
+
1417
+ 1. /recordings/meeting1.m4a
1418
+ Prompts answered: 5
1419
+ Status: Completed
1420
+ Transcript: ~/notes/2026/01/2026-01-18_Meeting_Notes.md
1421
+ Audio moved to: ~/archive/2026/01/meeting1.m4a
1422
+
1423
+ 2. /recordings/ideas.m4a
1424
+ Prompts answered: 3
1425
+ Status: SKIPPED (user requested)
1426
+ Transcript: ~/notes/2026/01/2026-01-18_Quick_Ideas.md
1427
+
1428
+ ────────────────────────────────────────────────────────────
1429
+ CHANGES MADE
1430
+ ────────────────────────────────────────────────────────────
1431
+
1432
+ ✓ Terms added (3):
1433
+ - Kubernetes
1434
+ - Docker
1435
+ - GraphQL
1436
+
1437
+ ✓ Projects added (1):
1438
+ - Project Alpha
1439
+
1440
+ ✓ Aliases created (2):
1441
+ - "K8s" → "Kubernetes"
1442
+ - "Chronology" → "Kronologi"
1443
+
1444
+ ═══════════════════════════════════════════════════════════
1445
+ ```
1446
+
1447
+ This summary shows:
1448
+ - **Session duration** and total prompts answered
1449
+ - **Each file** processed with prompt counts, status, and output locations
1450
+ - **All changes** made to your context (new terms, projects, aliases)
1451
+
1452
+ #### Mid-Session Stop
1453
+
1454
+ Press `Ctrl+C` at any time during an interactive session to stop and see the summary:
1455
+
1456
+ ```
1457
+ ^C
1458
+ [Session interrupted by user]
1459
+
1460
+ ═══════════════════════════════════════════════════════════
1461
+ INTERACTIVE SESSION SUMMARY
1462
+ ═══════════════════════════════════════════════════════════
1463
+ ...
1464
+ ```
1465
+
1466
+ All progress up to that point is saved. You can resume processing the remaining files later.
1467
+
1468
+ ### Streamlined Learning Flow
1469
+
1470
+ The interactive wizard has been redesigned for speed and efficiency:
1471
+
1472
+ #### Smart Similarity Matching
1473
+
1474
+ Protokoll automatically detects similar existing terms:
1475
+
1476
+ ```
1477
+ ────────────────────────────────────────────────────────────
1478
+ [Unknown: "Chronology"]
1479
+ ────────────────────────────────────────────────────────────
1480
+
1481
+ Found similar term(s): Kronologi
1482
+ Is "Chronology" the same as "Kronologi"? (Y/N): Y
1483
+
1484
+ info: Added alias "Chronology" to existing term "Kronologi"
1485
+ ```
1486
+
1487
+ No more duplicate entries for similar spellings!
1488
+
1489
+ #### Automated Content Analysis
1490
+
1491
+ Instead of answering multiple questions, just provide a URL or file:
1492
+
1493
+ ```
1494
+ ────────────────────────────────────────────────────────────
1495
+ [Unknown: "Cursor"]
1496
+ ────────────────────────────────────────────────────────────
1497
+
1498
+ Ignore this? (X to ignore, or Enter to continue):
1499
+
1500
+ [How should I learn about this?]
1501
+ Options:
1502
+ 1. Provide a file path (e.g., ~/docs/project.md)
1503
+ 2. Provide a URL (e.g., https://example.com)
1504
+ 3. Paste text directly
1505
+ 4. Enter details manually
1506
+
1507
+ Enter 1-4, or paste path/URL directly: https://cursor.com
1508
+
1509
+ Fetching content from: https://cursor.com...
1510
+ Analyzing content from cursor.com...
1511
+
1512
+ ────────────────────────────────────────────────────────────
1513
+ [Analysis Results]
1514
+ Type: TERM
1515
+ Name: Cursor
1516
+ Description: Cursor is an AI-powered code editor...
1517
+ Topics: ai, code-editor, vscode, development
1518
+ Confidence: high
1519
+ ────────────────────────────────────────────────────────────
1520
+
1521
+ Use this? (Y/N, or Enter to accept):
1522
+
1523
+ Which project(s) is this related to?
1524
+ 1. FjellGrunn
1525
+ 2. Redaksjon
1526
+ 3. Grunnverk
1527
+ N. Create new project
1528
+
1529
+ Enter numbers (comma-separated) or N, or Enter to skip: 2
1530
+ Associated with: Redaksjon
1531
+
1532
+ info: Added term "Cursor" to Redaksjon
1533
+ ```
1534
+
1535
+ **95% automated**: Just provide documentation and let AI extract:
1536
+ - Entity type (Project vs Term)
1537
+ - Correct name
1538
+ - Description
1539
+ - Related topics
1540
+ - Acronym expansions
1541
+
1542
+ #### Clean Project Selection
1543
+
1544
+ Project lists now show only names, not full descriptions:
1545
+
1546
+ ```
1547
+ Which project(s) is this related to?
1548
+ 1. FjellGrunn
1549
+ 2. Grunnverk
1550
+ 3. Redaksjon
1551
+ 4. Utilarium
1552
+ ```
1553
+
1554
+ Much easier to scan and select!
1555
+
1046
1556
  ## Self-Reflection Reports
1047
1557
 
1048
1558
  Enable with `--self-reflection` to generate detailed reports:
@@ -1137,6 +1647,32 @@ Each transcript includes:
1137
1647
  ---
1138
1648
 
1139
1649
  # Your Transcript Content Here
1650
+
1651
+ ...transcript content...
1652
+
1653
+ ---
1654
+
1655
+ ## Entity References
1656
+
1657
+ <!-- Machine-readable entity metadata for indexing and querying -->
1658
+
1659
+ ### People
1660
+
1661
+ - `priya-sharma`: Priya Sharma
1662
+ - `john-smith`: John Smith
1663
+
1664
+ ### Projects
1665
+
1666
+ - `project-alpha`: Project Alpha
1667
+
1668
+ ### Terms
1669
+
1670
+ - `kubernetes`: Kubernetes
1671
+ - `graphql`: GraphQL
1672
+
1673
+ ### Companies
1674
+
1675
+ - `acme-corp`: Acme Corp
1140
1676
  ```
1141
1677
 
1142
1678
  ### Metadata Fields
@@ -1155,6 +1691,17 @@ Each transcript includes:
1155
1691
  | **Tags** | Auto-extracted from signals (people, companies, topics) |
1156
1692
  | **Duration** | Audio duration in human-readable format |
1157
1693
 
1694
+ ### Entity References (Footer)
1695
+
1696
+ At the bottom of each transcript, Protokoll automatically includes structured entity metadata showing all entities (people, projects, terms, companies) that were referenced or used during processing. This metadata:
1697
+
1698
+ - **Enables querying**: Find all transcripts that mention a specific person or project
1699
+ - **Machine-readable**: Structured format for programmatic access
1700
+ - **Auto-generated**: Tracks everything used during transcription enhancement
1701
+ - **Indexable**: Perfect for building search indexes or knowledge graphs
1702
+
1703
+ The entity metadata is tracked automatically as Protokoll processes the transcript - whenever a lookup tool finds a person, project, term, or company in your context, it's recorded in the footer.
1704
+
1158
1705
  ### Using Metadata
1159
1706
 
1160
1707
  The metadata section helps you:
@@ -1251,6 +1798,31 @@ sounds_like:
1251
1798
  - "another variant"
1252
1799
  ```
1253
1800
 
1801
+ #### Smart Project Creation Issues
1802
+
1803
+ **"Smart assistance not available"**
1804
+ - Ensure `OPENAI_API_KEY` is set in your environment
1805
+ - Check that smart assistance is enabled in config or use `--smart` flag
1806
+
1807
+ **Slow sounds_like/trigger phrase generation**
1808
+ - The first call may take a few seconds as the model generates variations
1809
+ - Subsequent calls are typically faster
1810
+ - Both sounds_like and trigger phrases are generated in parallel for efficiency
1811
+
1812
+ **URL fetch failing**
1813
+ - Ensure network connectivity
1814
+ - For private repositories, use local file paths instead
1815
+ - Check that the URL is accessible (not behind authentication)
1816
+
1817
+ **Sounds like variants not matching your project**
1818
+ - For Norwegian or non-English project names, you may need to manually add English phonetic variants
1819
+ - Example: "Protokoll" might need "protocol", "pro to call" added manually
1820
+
1821
+ **Suggestions don't match my project**
1822
+ - You can edit all suggestions before saving
1823
+ - Try providing more context with a README or documentation file
1824
+ - Adjust the topics and description manually as needed
1825
+
1254
1826
  ### Debug Mode
1255
1827
 
1256
1828
  Run with `--debug` to see all intermediate files:
@@ -1277,7 +1849,7 @@ Traditional workflow:
1277
1849
  4. Copy-paste file paths
1278
1850
  5. Run commands
1279
1851
 
1280
- With MCP, you just talk naturally:
1852
+ With MCP, you can use natural language:
1281
1853
  - *"Can you transcribe this meeting recording?"*
1282
1854
  - *"Add Sanjay Gupta as a person - Whisper mishears him as 'San Jay Grouper'"*
1283
1855
  - *"This should be in the Quantum Readiness project"*
@@ -1300,28 +1872,28 @@ When you ask to transcribe a file, the AI:
1300
1872
  #### Example: Ambiguous Location
1301
1873
 
1302
1874
  ```
1303
- You: "Can you transcribe ~/Downloads/meeting.m4a?"
1875
+ User: Can you transcribe ~/Downloads/meeting.m4a?
1304
1876
 
1305
- AI: "I found your Protokoll configuration with 3 projects configured.
1306
- Based on the file location in Downloads, I can't automatically
1307
- determine which project this belongs to. Is this for:
1308
- 1. Client Alpha
1309
- 2. Internal Notes
1310
- 3. Personal
1311
- Which project should I use?"
1877
+ AI: I found your Protokoll configuration with 3 projects configured.
1878
+ Based on the file location in Downloads, I can't automatically
1879
+ determine which project this belongs to. Is this for:
1880
+ 1. Client Alpha
1881
+ 2. Internal Notes
1882
+ 3. Personal
1883
+ Which project should I use?
1312
1884
 
1313
- You: "It's for Client Alpha"
1885
+ User: It's for Client Alpha
1314
1886
 
1315
- AI: "Got it! Processing with Client Alpha configuration..."
1887
+ AI: Got it! Processing with Client Alpha configuration...
1316
1888
  [transcribes and routes to ~/notes/client-alpha/]
1317
1889
  ```
1318
1890
 
1319
1891
  #### Example: Clear Location
1320
1892
 
1321
1893
  ```
1322
- You: "Transcribe ~/work/client-alpha/recordings/standup.m4a"
1894
+ User: Transcribe ~/work/client-alpha/recordings/standup.m4a
1323
1895
 
1324
- AI: "Found Client Alpha configuration nearby. Processing..."
1896
+ AI: Found Client Alpha configuration nearby. Processing...
1325
1897
  [automatically uses the right config and routing]
1326
1898
  ```
1327
1899
 
@@ -1391,45 +1963,45 @@ Or if installed globally (`npm install -g @redaksjon/protokoll`):
1391
1963
 
1392
1964
  **Basic Transcription:**
1393
1965
  ```
1394
- Human: Transcribe ~/recordings/standup.m4a
1966
+ User: Transcribe ~/recordings/standup.m4a
1395
1967
 
1396
1968
  AI: [discovers config, suggests project]
1397
1969
 
1398
- AI: Done! Transcript saved to ~/notes/2026/01/16-0900-standup.md
1970
+ Done! Transcript saved to ~/notes/2026/01/16-0900-standup.md
1399
1971
  Project: Daily Standups (95% confidence)
1400
1972
  People recognized: Sarah Chen, Mike Johnson
1401
1973
  ```
1402
1974
 
1403
1975
  **Add Context:**
1404
1976
  ```
1405
- Human: "San Jay" should be "Sanjay Gupta" - he's a product manager at Acme
1977
+ User: "San Jay" should be "Sanjay Gupta" - he's a product manager at Acme
1406
1978
 
1407
1979
  AI: [calls protokoll_add_person]
1408
1980
 
1409
- AI: Added Sanjay Gupta to your context. Future transcripts will
1981
+ Added Sanjay Gupta to your context. Future transcripts will
1410
1982
  recognize "San Jay", "Sanjay", and similar variations.
1411
1983
  ```
1412
1984
 
1413
1985
  **Provide Feedback:**
1414
1986
  ```
1415
- Human: In that last transcript, WCMP should be WCNP
1987
+ User: In that last transcript, WCMP should be WCNP
1416
1988
 
1417
1989
  AI: [calls protokoll_provide_feedback]
1418
1990
 
1419
- AI: Fixed! I replaced "WCMP" with "WCNP" (3 occurrences) and added
1991
+ Fixed! I replaced "WCMP" with "WCNP" (3 occurrences) and added
1420
1992
  WCNP to your vocabulary for future transcripts.
1421
1993
  ```
1422
1994
 
1423
1995
  **Combine Transcripts:**
1424
1996
  ```
1425
- Human: Combine these three meeting parts into one:
1426
- ~/notes/meeting-part1.md
1427
- ~/notes/meeting-part2.md
1428
- ~/notes/meeting-part3.md
1997
+ User: Combine these three meeting parts into one:
1998
+ ~/notes/meeting-part1.md
1999
+ ~/notes/meeting-part2.md
2000
+ ~/notes/meeting-part3.md
1429
2001
 
1430
2002
  AI: [calls protokoll_combine_transcripts]
1431
2003
 
1432
- AI: Combined into ~/notes/16-1400-full-meeting.md
2004
+ Combined into ~/notes/16-1400-full-meeting.md
1433
2005
  The source files have been deleted.
1434
2006
  ```
1435
2007
 
@@ -1458,7 +2030,7 @@ When processing a file, the nearest `.protokoll` takes precedence, but inherits
1458
2030
  1. **Create project-specific configs** when you have different routing needs
1459
2031
  2. **Use global config** for shared context (common terms, general contacts)
1460
2032
  3. **Let the AI discover** - it will ask when clarification is needed
1461
- 4. **Accept context suggestions** - when the AI offers to add terms/people, say yes
2033
+ 4. **Accept context suggestions** - when the AI offers to add terms/people, accept the suggestions
1462
2034
 
1463
2035
  For complete documentation, see the [MCP Integration Guide](./guide/mcp-integration.md).
1464
2036