Public Access
Implement meeting assistant v1
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
# meeting-session Specification
|
||||
|
||||
## Purpose
|
||||
TBD - created by archiving change define-meeting-assistant-v1. Update Purpose after archive.
|
||||
## Requirements
|
||||
### Requirement: Meeting Assistant creates a note before transcription
|
||||
Meeting Assistant SHALL create an Obsidian markdown note for a meeting session before transcription starts.
|
||||
|
||||
The note SHALL be the durable anchor for meeting metadata, user notes, assistant-discovered context, transcript references, summaries, decisions, and next steps.
|
||||
|
||||
#### Scenario: Session starts
|
||||
- **WHEN** the user starts a new meeting session
|
||||
- **THEN** Meeting Assistant creates a markdown note in the configured meetings folder before starting transcription
|
||||
|
||||
#### Scenario: Recording starts from hotkey
|
||||
- **WHEN** the user presses the recording hotkey while recording is inactive
|
||||
- **THEN** Meeting Assistant creates the transcript file, creates the meeting note with links to the transcript, assistant context, and summary notes, and opens the meeting note through an `obsidian://` system command
|
||||
|
||||
#### Scenario: User adds context before transcription
|
||||
- **WHEN** the note exists before transcription starts
|
||||
- **THEN** the user can add attendees, project context, and other notes to that file
|
||||
|
||||
### Requirement: Vault locations are configurable
|
||||
Meeting Assistant SHALL expose separate configuration settings for transcript files, meeting notes, assistant context, generated summaries, project knowledge, and dictation words.
|
||||
|
||||
The dictation words location SHALL point to a word-list artifact that speech recognition pipelines MAY use as vocabulary hints when supported.
|
||||
|
||||
#### Scenario: Transcript and note locations are configured separately
|
||||
- **WHEN** Meeting Assistant starts with configured vault locations
|
||||
- **THEN** transcripts, meeting notes, assistant context, generated summaries, project knowledge, and dictation words each have an independently configured path
|
||||
|
||||
#### Scenario: Provider supports dictation words
|
||||
- **WHEN** the configured speech recognition pipeline supports vocabulary hints
|
||||
- **THEN** Meeting Assistant can provide words from the configured dictation words path without changing the other vault locations
|
||||
|
||||
### Requirement: Meeting note template is coded and round-trippable
|
||||
Meeting Assistant SHALL own a coded meeting note template and a store that can save and read meeting notes.
|
||||
|
||||
The meeting note frontmatter SHALL include:
|
||||
|
||||
- `start_time` as the meeting recording start timestamp
|
||||
- `end_time` as the timestamp when transcript processing stops, empty while the meeting is active
|
||||
- `attendees` as an array of display strings, where email is optional and may use a format such as `Mike <m.ike@ibm.com>`
|
||||
- `projects` as an array because one meeting can cover multiple projects
|
||||
- `transcript` as text containing a markdown link to the transcript note
|
||||
- `assistant_context` as text containing a markdown link to the assistant context note
|
||||
- `summary` as text containing a markdown link to the generated summary note once Meeting Assistant creates it
|
||||
|
||||
The user notes SHALL be the markdown body. Decisions and next steps SHALL NOT be required as frontmatter fields.
|
||||
|
||||
#### Scenario: Meeting note is saved
|
||||
- **WHEN** Meeting Assistant saves a meeting note
|
||||
- **THEN** it writes the coded frontmatter template and the user notes body to a markdown file in the configured meeting notes folder
|
||||
|
||||
#### Scenario: Meeting note links generated artifacts
|
||||
- **WHEN** Meeting Assistant creates a meeting note for a new recording
|
||||
- **THEN** the note frontmatter links to the configured transcript, assistant context, and summary note locations
|
||||
|
||||
#### Scenario: Generated artifacts link back to each other
|
||||
- **WHEN** Meeting Assistant creates transcript, assistant context, and summary artifacts
|
||||
- **THEN** those artifacts use frontmatter links for the meeting note, transcript note, assistant context note, and summary note where applicable
|
||||
|
||||
#### Scenario: Meeting note records session times
|
||||
- **WHEN** Meeting Assistant creates a meeting note for a new recording
|
||||
- **THEN** the note frontmatter contains `start_time`
|
||||
- **AND** when transcript processing stops, Meeting Assistant writes `end_time` to the same note frontmatter
|
||||
- **AND** transcript and summary frontmatter copy the meeting note title, `start_time`, and `end_time`
|
||||
|
||||
#### Scenario: Meeting note is read
|
||||
- **WHEN** Meeting Assistant reads a meeting note created from the coded template
|
||||
- **THEN** it returns the frontmatter fields and user notes body without losing attendees, projects, transcript link, assistant context link, or summary
|
||||
|
||||
#### Scenario: Meeting note frontmatter is updated
|
||||
- **WHEN** Meeting Assistant reads a meeting note, changes frontmatter, and writes the note back
|
||||
- **THEN** the existing user-authored markdown body remains unchanged
|
||||
|
||||
### Requirement: Meeting notes preserve user-authored content
|
||||
Meeting Assistant SHALL preserve user-authored meeting notes and include them as input when generating summaries, decisions, and next steps.
|
||||
|
||||
#### Scenario: User writes notes during the meeting
|
||||
- **WHEN** the user updates the meeting note while the meeting is active
|
||||
- **THEN** Meeting Assistant keeps that content and incorporates it into generated meeting outputs
|
||||
|
||||
### Requirement: Meeting sessions are platform independent
|
||||
Meeting Assistant SHALL support meeting sessions that do not originate from Teams, Zoom, or any other meeting software API.
|
||||
|
||||
Meeting software integrations MAY augment the meeting experience, but they SHALL NOT be required for the primary meeting capture, transcription, or summary flow.
|
||||
|
||||
#### Scenario: In-person meeting is captured
|
||||
- **WHEN** the user starts transcription for an in-person meeting
|
||||
- **THEN** Meeting Assistant captures and processes the meeting without requiring a meeting platform integration
|
||||
|
||||
### Requirement: Windows Outlook enrichment is optional
|
||||
Meeting Assistant SHALL gate Outlook Classic COM enrichment behind the Windows compilation target.
|
||||
|
||||
When the Windows build starts a meeting and Outlook Classic has exactly one current Teams appointment, Meeting Assistant SHALL copy the appointment title and attendees to the meeting note and copy the appointment agenda and scheduled end time to the assistant-context frontmatter.
|
||||
|
||||
The agenda SHALL be extracted from the appointment body content before the Teams join separator or Teams join text.
|
||||
|
||||
#### Scenario: Current Teams appointment enriches meeting artifacts
|
||||
- **WHEN** a Windows build starts a meeting while Outlook Classic exposes exactly one current Teams appointment
|
||||
- **THEN** Meeting Assistant uses the appointment subject as the meeting title
|
||||
- **AND** writes the appointment attendees into meeting note frontmatter
|
||||
- **AND** writes the appointment agenda into assistant-context frontmatter
|
||||
- **AND** writes the appointment end time as `scheduled_end` into assistant-context frontmatter
|
||||
|
||||
#### Scenario: Outlook is unavailable or ambiguous
|
||||
- **WHEN** Outlook Classic is unavailable or more than one current Teams appointment is found
|
||||
- **THEN** Meeting Assistant starts the recording with the default generated meeting title and empty agenda
|
||||
- **AND** omits `scheduled_end` from assistant-context frontmatter
|
||||
|
||||
Reference in New Issue
Block a user