| name | meeting-transcript |
| description | Fetch a meeting transcript — full, paginated, or filtered to a single speaker or phrase — without leaking raw PII into long-term storage. |
| category | meeting-notes |
| version | 1 |
| compatibility | devboy-tools >= 0.18 |
| activation | ["transcript of meeting","what did Alice say about","show the meeting transcript","quote from the meeting","what was said about"] |
| tools | ["get_meeting_transcript","get_meeting_notes"] |
meeting-transcript
Retrieve the speaker-attributed, timestamped transcript for a single meeting. Transcripts are routinely large (thousands of sentences for a one-hour call), so the skill is built around pulling only what the question actually needs rather than the whole thing.
When to use
- The user asks for a transcript by meeting title, id, or relative reference ("the call yesterday", "the one with Alice on Tuesday").
- The user wants a specific quote ("what did Bob say about the migration?").
- A follow-up skill (
meeting-to-tasks) needs the raw text to extract action items that are not already in action_items.
If the user does not yet know which meeting — route through meeting-search first.
Procedure
1. Resolve the meeting id
You need a meeting_id. If the user already pasted one, skip this step. Otherwise confirm the id via get_meeting_notes (or via meeting-search for a keyword lookup) and pin the id before fetching:
devboy tools call get_meeting_notes '{
"from_date": "2026-04-16T00:00:00Z",
"to_date": "2026-04-17T00:00:00Z",
"limit": 10
}'
Confirm the title and date with the user before proceeding — pulling the wrong transcript is an irreversible PII leak into the chat.
2. Fetch the transcript
devboy tools call get_meeting_transcript '{"meeting_id": "<id>"}'
devboy tools call takes a tool name + a JSON argument object — it does not accept --budget (or any other CLI flag) for the tool itself. The format-pipeline budget is applied inside the tool runtime. The transcript output is rendered as plain text, not JSON; a long transcript may be shortened by the pipeline and picked up again via a subsequent call.
3. If the rendered transcript is incomplete, fetch the next chunk
If the response ends mid-thought, pull the next segment:
devboy tools call get_meeting_transcript '{"meeting_id": "<id>", "chunk": 2}'
chunk is a per-call argument understood by the transcript tool (the default is 1). The response is still text — do not expect a JSON body with fields like total_chunks or chunk_number. The tell for "more to fetch" is that the text ends mid-sentence, not a structured field.
4. Prefer a targeted fetch over a full dump
When the question is specific ("what did Alice say about X?"), do not scroll the whole transcript in the chat. Two patterns:
-
Search first, transcript second. Run meeting-search with the topic word, confirm this is the right meeting, then open the relevant chunk.
-
Grep the chunk. The transcript is rendered as text lines shaped like [mm:ss] <speaker>: <sentence>, so filter with grep / ripgrep:
devboy tools call get_meeting_transcript '{"meeting_id": "<id>"}' \
| grep -F '] Alice: '
5. Quote, do not paste
When you respond to the user, reply with the minimum quote that answers the question — typically one to three sentences plus the speaker and timestamp. Never paste the full transcript into the chat unless the user explicitly asked for it.
Success criteria
- The user gets an answer grounded in the transcript, with speaker + timestamp, in fewer than 10 lines for a targeted question.
- For a "give me the whole transcript" request, the skill streams chunk 1, explains how to request chunk 2+ if the user wants more, and waits for the user to ask rather than pre-fetching all chunks. (The pipeline does not surface a total-chunk count, so the skill must not promise one.)
- No untrimmed transcript content is copy-pasted into files the user did not name.
Guardrails
- PII. Transcripts contain names, emails, internal project names, and sometimes customer data. Do not write them to long-term storage (new docs, new issues, commit messages) unless the user explicitly asks for a specific excerpt. Summarise; do not mirror.
- Do not translate or edit quotes. If the user asks "what did Alice say?", answer with her words, not a paraphrase — downstream uses (legal, HR, customer conversations) rely on the exact phrasing.
- Confirm the meeting before fetching. A wrong
meeting_id leaks a different meeting's contents into the chat and is not retractable.
Non-goals
- Editing or redacting transcripts. The skill is read-only.
- Summarising a full meeting. Use the
summary and action_items fields returned by get_meeting_notes — those are provider-generated and cheaper to fetch than the full transcript.
- Cross-meeting aggregation. One transcript at a time.