Files
meeting-assistant/openspec/specs/meeting-session/spec.md
T
2026-05-20 02:06:16 +02:00

7.0 KiB

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
  • 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
  • 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