MirrorNote writes generated summaries into the meeting artifact bundle's note.md.
Generation replaces the note body with rendered AI summary output.
Summary generation uses a selected section template. The built-in templates are:
General MeetingCustomer Discovery1:1Technical Review
The selected template controls which sections are requested from the provider and
how the final note.md markdown is rendered.
## Summary
...
## Decisions
...
## Action Items
...
## Open Questions
...
## Evidence
...Regeneration replaces the existing note.md contents. It should not append to,
prepend to, or preserve the previous note body.
Each generated summary uses the selected template's sections. The default
General Meeting template uses:
## Summary: concise recap that restores meeting context.## Decisions: decisions made or explicitly confirmed.## Action Items: follow-up tasks with owners or timing when available.## Open Questions: unresolved questions or topics that need follow-up.## Evidence: key facts, quotes, arguments, or transcript moments that support the note.
The provider returns structured JSON section content, not final markdown. MirrorNote
validates the JSON and renders markdown deterministically in template order. If a
required section is missing from the provider response, MirrorNote retries once with
a repair prompt. If the transcript does not contain enough evidence for a rendered
section, the app fills the section with - None captured.
Built-in templates are immutable. To change a template, duplicate it and edit the custom copy.
Manage templates from the sidebar footer menu: open Templates, choose a
template from the sidebar list, then customize built-ins or edit custom templates
in the main workspace. The note summary template picker also includes
Manage templates... for jumping directly to the selected template.
Custom templates are stored locally in app settings and can define their own section order. Each custom section has a title and instruction. During generation, MirrorNote asks the configured provider for structured JSON matching the selected template, validates the result, and renders markdown in section order.
Custom templates support:
- editing template name and description
- adding sections
- deleting sections
- reordering sections
- editing section titles and instructions
- selecting a custom template as the default
Deleting the default custom template falls back to General Meeting.
Settings > AI Summary only manages the provider connection: provider, model, base URL, connection test, and API key.
Use an OpenAI-compatible chat completions endpoint.
| Provider | Base URL | API key | Model |
|---|---|---|---|
| OpenAI | https://api.openai.com/v1 |
Required OpenAI API key | gpt-4o-mini by default |
| OpenRouter | https://openrouter.ai/api/v1 |
Required OpenRouter API key | openai/gpt-4o-mini by default |
| Ollama | http://localhost:11434/v1 |
Placeholder value | Pulled local model, for example llama3.1:8b |
| LM Studio | http://localhost:1234/v1 |
Placeholder value | Loaded model identifier |
For local providers, start the provider server and make sure the selected model is available before generating a summary.
Summary generation v1 replaces note.md with the generated summary markdown and
supports built-in section templates, custom template editing, and a
default-template setting.
It does not add linked meetings, workflows, a separate summary panel, auto-generation, or local model management. Tune prompt quality and provider behavior before expanding into linked meeting memory.
note.md summaries are for human meeting review. They are intentionally rendered
as markdown in template order.
Source-backed context packets are a separate planned output. They should not
mutate note.md, and they should not treat markdown as source of truth. The
context source of truth is:
source-records.jsonlmemory-objects.jsonlrelations.jsonlevidence-map.json
The packet path should reuse the summary generation infrastructure where it fits:
- OpenAI-compatible provider settings
- structured JSON response format
- one repair retry for invalid JSON
- transcript and note loading
- atomic file writes
- prompt-injection framing that treats source text as untrusted material
The packet path needs stricter evidence behavior than note.md: each memory
object must carry source references, confidence, and evidence coverage. The
source reference model must support transcript segments first, then Linear
issues/comments, Slack messages/threads, GitHub PRs/comments/file lines, docs,
and AI sessions. See agent-packets.md for the planned
contract.