
Turn Teams Meetings into Verified Action Workflows
The Teams Meetings feature can turn Microsoft Graph meeting events into durable summary jobs. It prefers transcript artifacts, can fall back to a recording plus speech-to-text, stores job and sink state, and can deliver results to supported work systems. Each stage handles sensitive organizational content, so the pipeline needs explicit authorization and verification.
Official documentation: https://hermes-agent.nousresearch.com/docs/user-guide/messaging/teams-meetings
Design the pipeline as stages
The Graph webhook announces an event. The pipeline resolves the meeting, looks for a usable transcript, and only then considers downloading a recording for transcription. A generated summary becomes a draft artifact; delivery to Notion, Linear, Teams, or another sink is a separate side effect with its own status.
Prefer transcripts because they are smaller, easier to inspect, and less invasive than media downloads. Enable recording fallback only when the organization has a clear retention, consent, storage, and speech-to-text policy.
Readiness checklist
- Register the required Microsoft Graph application credentials.
- Configure and harden the Graph webhook listener.
- Grant only the meeting, transcript, or recording scopes actually required.
- Define which organizers, tenants, or meetings may enter the pipeline.
- Prefer transcript artifacts before recording download.
- Document consent and retention rules for meeting content.
- Configure each delivery sink with least privilege.
- Set idempotency keys and durable job-state storage.
- Define human review for externally visible action items.
Produce useful, honest artifacts
A meeting summary should distinguish discussion, decisions, proposed actions, owners, due dates, and unresolved questions. Do not invent an owner or deadline because the transcript was ambiguous. Link the summary back to the meeting and source artifact according to access policy, and label transcription uncertainty when audio quality is poor.
Delivery should be retryable without creating duplicate pages, tasks, or channel posts. Store sink-specific outcomes so an operator can tell whether generation succeeded but publication failed.
Common pitfalls
- Downloading recordings when a transcript already exists.
- Treating every attendee statement as an approved decision.
- Inventing action owners or due dates from ambiguous language.
- Retaining raw media indefinitely because storage is cheap.
- Marking the whole pipeline failed when only one optional sink failed.
- Retrying a delivery without an idempotency guard.
- Giving the meeting bot access to every tenant or workspace.
Verification steps
- Process a test meeting with a transcript and confirm no recording fallback occurs.
- Use an authorized test without a transcript and verify fallback follows policy.
- Compare the summary against the source for decisions, owners, dates, and uncertainty.
- Deliver to one sandbox sink and confirm the stored link and permissions.
- Replay the same event and verify no duplicate job or sink artifact appears.
- Force one sink failure, retry it, and confirm other successful sinks remain intact.
- Review retention state, Graph permissions, webhook logs, and generated artifacts for unnecessary sensitive data.
