| name | meeting-search |
| description | Find meetings by keyword, participant, host, or date range and surface a short, rankable hit list. |
| category | meeting-notes |
| version | 1 |
| compatibility | devboy-tools >= 0.18 |
| activation | ["find meeting about","when did we discuss","list meetings last week","search meetings","find calls with"] |
| tools | ["search_meeting_notes","get_meeting_notes"] |
meeting-search
Answer "which meeting did we talk about X?" without making the user scroll through a calendar. The skill narrows a corpus of meeting notes down to a short hit list the user can act on — drill-down into a single meeting's metadata is a follow-up step, and pulling the full transcript is the job of meeting-transcript.
When to use
- The user names a topic, keyword, or phrase ("the migration call", "anything about SSO") and wants to locate the meeting.
- The user wants a window of recent meetings ("what did we have this week?", "list calls with Alice last month").
- Before running
meeting-to-tasks or meeting-transcript, confirm the target meeting id.
If no search term is given — just a window or a participant — skip the keyword search and go straight to get_meeting_notes with the filter.
Procedure
1. Keyword search
Use search_meeting_notes when the user supplied a topic. All filters (date range, participants, host) combine with the keyword on the provider side — there is no client-side filter.
devboy tools call search_meeting_notes '{
"query": "migration",
"from_date": "2026-03-01T00:00:00Z",
"to_date": "2026-04-17T00:00:00Z",
"limit": 20
}'
Dates are ISO 8601. The tool caps limit at 50 per call; paginate with offset if you need a deeper sweep.
2. Filter-only listing (no keyword)
devboy tools call get_meeting_notes '{
"from_date": "2026-04-10T00:00:00Z",
"participants": ["alice@example.com"],
"limit": 20
}'
Use this for "last N days" or "calls with Alice" — no keyword means do not invent one.
3. Rank the hits
The provider returns meetings newest-first but is not topic-ranked. When several hits look plausible, resolve ties by:
- Recency — the user usually wants the most recent occurrence.
- Participant overlap — prefer meetings whose attendees match the user's context (the person they are collaborating with, the team they asked about).
- Keyword density — if the provider surfaces
summary, keywords, or topics_discussed, a meeting that hits multiple of them is a stronger match than one that mentions the term in passing.
Present at most 5–10 candidates. If more exist, say so and offer to narrow by date or participant rather than dumping them all.
4. Drill down to one meeting
Once the user picks a hit, fetch its metadata for a short card — title, date, duration, participants, action-items count, a one-line summary:
devboy tools call get_meeting_notes '{
"from_date": "<date of the hit>",
"to_date": "<+1 day>",
"limit": 5
}'
(There is no single-meeting "get by id" helper — narrow the date window and match on id.)
Success criteria
- The user can name the meeting they meant without reading a transcript.
- For every hit the agent shows, at minimum: title, date, 1-line summary or top keyword.
- If zero hits come back, the skill suggests a broader filter (wider date range, different keyword) rather than inventing a meeting.
Guardrails
- Do not dump transcripts here. A search result is metadata + a one-line summary. Full transcript retrieval lives in
meeting-transcript.
- Do not paraphrase the summary. Quote the provider's summary verbatim — it is short and PII-sensitive; rewording risks distortion.
- Participants are emails. When the user says "calls with Alice", ask for the email before filtering — display names from the provider are not guaranteed unique.
Non-goals
- Ranking by semantic similarity beyond what the provider returns. The tool is a keyword search, not a vector search.
- Cross-provider search. Only the meeting-notes provider that is configured (e.g. Fireflies) is queried.