/minutes-search
Find information across all meeting transcripts and voice memos.
Usage
bash# Basic search minutes search "pricing strategy" # Filter to just voice memos minutes search "onboarding idea" -t memo # Filter to just meetings minutes search "sprint planning" -t meeting # Date filter + limit minutes search "API redesign" --since 2026-03-01 --limit 5
Flags
| Flag | Description |
|---|---|
-t, --content-type <meeting|memo> | Filter by type |
--since <date> | Only results after this date (ISO format, e.g., 2026-03-01) |
-l, --limit <n> | Maximum results (default: 10) |
Output
Returns JSON to stdout with an array of matches. Each result includes:
title— Meeting or memo titledate— When it was recordedcontent_type— "meeting" or "memo"snippet— The line containing the matchpath— Full path to the markdown file
Human-readable output goes to stderr. A result path is only a hint. To read the
full transcript, run minutes get "<exact path>" --json, require exit status 0,
and use only that response. Never pass the path to cat or the host Read tool.
How search works
Search is case-insensitive and matches against both the transcript body and the YAML frontmatter title. It walks all .md files in ~/meetings/ (including the memos/ subfolder).
For richer semantic search, users can configure QMD as the search engine in ~/.config/minutes/config.toml:
toml[search] engine = "qmd" qmd_collection = "meetings"
Search coaching
When the user's search query is vague or too broad, push back before running it:
- "who said X" or "what did Alex say" → If the meeting has
speaker_mapin frontmatter, use it to identify who said what.speaker_mapmaps SPEAKER_X labels to real names. High confidence = reliable, Medium = "likely" (suggestminutes confirmto lock it in). - "everything" or "all meetings" → "That'll return hundreds of results. What specifically are you looking for? A person, a topic, or a decision?"
- Single common word like "meeting" or "project" → "That's too broad. Can you narrow it — a person's name, a specific topic, or a date range?"
- "that meeting" or "the one where" → "Help me narrow it down. Do you remember who was in the meeting, roughly when it was, or a specific thing that was said?"
Suggest search strategies based on what the user is looking for:
- Finding a person's input → Search their name:
minutes search "Alex" - Finding a decision → Search decision keywords:
minutes search "decided"orminutes search "agreed" - Finding an idea → Search voice memos:
minutes search "idea" -t memo - Finding something from a time range → Use
--since:minutes search "pricing" --since 2026-03-01
Tips for good searches
- Search for what people said, not document titles:
"we should postpone the launch"not"launch delay meeting" - Search for names to find the policy-authorized normal history involving someone:
"Alex"or"Case" - Search for decisions:
"decided","agreed","committed to" - Reauthorize a selected result with
minutes get "<exact path>" --jsonbefore loading full context
Gotchas
- Search is substring, not fuzzy —
"price"matches"pricing"and"price", but"prcing"(typo) matches nothing. Try multiple terms if you're not sure of the exact wording. --sincerequires ISO date format — Use2026-03-01, not"last week"or"March 1st". For relative dates, compute the ISO date first:date -v-7d +%Y-%m-%d.- Large result sets flood stdout — Always use
--limitwhen searching broad terms. The default limit is 10, but common words can match hundreds of files. - QMD semantic search requires separate setup — If
config.tomlsetsengine = "qmd"but the QMD collection isn't indexed, search will fail silently. Runqmd update && qmd embedfirst. - Voice memos vs meetings — Both are searched by default. Use
-t memoor-t meetingto narrow results. Voice memos live in~/meetings/memos/, meetings in~/meetings/. - Empty results don't mean it wasn't discussed — If the meeting wasn't transcribed (e.g., recording was stopped before processing), it won't appear in search. Check
minutes listto see what's been processed.

