Skip to content
Agent Memory
Skill

/meeting-ingestion

Ingest meeting transcripts from ANY meeting recorder into brain pages with attendee enrichment, entity propagation, and timeline merge. One unified pipeline: normalize the source into a standard transcript record, split multi-meeting recordings, resolve speakers by evidence,

From plugin
gbrain
32k79 skills

Claude Code

$ npx -y skills add garrytan/gbrain --skill meeting-ingestion --agent claude-code

SKILL.md

meeting-ingestion.SKILL.md
name: meeting-ingestion
version: 2.2.0
description: |
  Ingest meeting transcripts from ANY meeting recorder into brain pages with
  attendee enrichment, entity propagation, and timeline merge. One unified
  pipeline: normalize the source into a standard transcript record, split
  multi-meeting recordings, resolve speakers by evidence, create the page,
  pass every surprising claim through the consistency check (transcript +
  brain + plausibility), enrich every entity, then run the verification
  checklist — substance AND sequence. A meeting is NOT fully ingested until
  the enrich skill has processed every entity AND the verification checklist
  passes, including the sequence verify (PASS or explicit user waive).
triggers:
  - "meeting transcript"
  - "process this meeting"
  - "meeting notes"
  - "meeting recorder"
  - "ingest this recording"
  - "capture meetings"
  - "audit this meeting"
  - "check the sequence"
  - "did I get the order right"
  - meeting transcript received
tools:
  - search
  - query
  - get_page
  - put_page
  - add_link
  - add_timeline_entry
  - get_timeline
  - chronicle_day
mutating: true
writes_pages: true
writes_to:
  - meetings/
  - people/
  - companies/
upstream:
  - meeting-ingestion@fc834ee
  - meeting-gold-standard@fc834ee
  - chronology-guard@fc834ee

Meeting Ingestion Skill — Unified Pipeline

> **Filing rule:** Read `skills/_brain-filing-rules.md` before creating any new page.

> **Convention:** See `skills/conventions/quality.md` for Iron Law back-linking, and > `skills/conventions/brain-first.md` for the lookup chain — resolve every name > against the brain BEFORE reaching for external lookups.

Contract

This skill guarantees:

  • Works with ANY meeting recorder — AI notetaker export, webhook payload, share

link, raw audio transcription, or manual paste. The normalized transcript record (below) is the contract; per-source fetch/parse is the host agent's job

  • One brain page per REAL meeting — multi-meeting recordings are split first
  • Meeting page created with attendees, summary, key decisions, action items,

notable quotes

  • Speakers resolved by evidence, never by guess
  • Recorder auto-summaries treated as CLAIMS, not facts — every surprising claim

passes the consistency check before it touches an entity page

  • EVERY attendee gets a people page (created or updated)
  • EVERY company discussed gets entity propagation
  • Timeline entries on ALL mentioned entities (timeline merge)
  • Back-links created bidirectionally
  • Meeting is NOT fully ingested until enrich runs for every entity
  • The meeting is never REPORTED as ingested until the verification checklist

(below) passes — every quote grounded, every slug backed by a page and a timeline backlink, every speaker resolved or flagged

  • The narrated SEQUENCE is verified independently of substance: a sequence

contradiction BLOCKS ingestion until fixed or explicitly waived by the user

Every attendee and company mentioned MUST get a back-link from their page to the meeting page. An unlinked mention is a broken brain.

Any recorder, one pipeline

Meeting content arrives from many sources: an AI notetaker (Granola and Circleback are common examples), a phone voice memo, a video-call transcript export, or a transcript the user pastes directly. Do NOT build per-vendor pipelines or paraphrase this skill in ad-hoc instructions — normalize whatever the source provides into the transcript record below, then run the shared phases. Source-specific logic ends at normalization.

The normalized transcript record

Before running the pipeline, reduce the input to this shape (mentally or as a scratch file — it does not get written to the brain as-is):

source: "<recorder name, or 'manual'>"
source_id: "<unique recording id from the source, if any>"
title: "Meeting Title"
date: YYYY-MM-DD
time: "HH:MM TZ"               # null if unknown
duration: "45m"                # null if unknown
attendees:                     # the SOURCE'S notion of who was there —
  - name: "..."                # may need correction during speaker resolution
    email: "..."               # only if the source provides it
    role: "..."                # only if known
transcript_segments:           # structured form when the source diarizes
  - speaker: "..."             # resolved name OR "UNKNOWN_N" if unresolved
    speaker_raw: "..."         # the source's raw speaker label, for traceability
    text: "..."
raw_transcript_text: "..."     # the complete transcript. NEVER truncate.
source_summary: "..."          # the recorder's AI summary if present — a CLAIM, not a FACT
source_url: "..."              # link back to the source platform, if any

**Invariants:**

  • `raw_transcript_text` is complete and untruncated. Always.
  • `attendees` is a claim by the source. People invited ≠ people present.
  • `source_summary` is TWO lossy layers deep (speech-to-text, then AI

summarization). Both layers confabulate. Verify before writing anything from it into the brain.

Retain the raw transcript when the source provides one: file it as a sidecar page with `type: source` at `sources/meetings/YYYY-MM-DD-{slug}-transcript` (the default pack files raw evidence as `source` under `sources/`; never invent `meeting-transcript`, and don't write the `transcript` alias) or keep the source file reachable, and link it from the meeting page. The transcript is the canonical evidence for every quote and claim check downstream. Put `facts_backstop: false` in the sidecar's frontmatter: automatic fact extraction would otherwise mine the raw transcript, garbles and banter included, beside the verified meeting page (Phase 5).

**Redact before you retain.** A raw transcript routinely captures pasted secrets and PII (a read-aloud API key, a screen-shared token, a private phone number). Before writing the sidecar, scan for secret-shaped strings (`sk-…`, `ghp_…`, `AKIA…`, bearer tokens, long hex/base64 blobs) and PII, and redact matches to

Read more
@garrytan
Ships withgbrain

Garry's Opinionated OpenClaw/Hermes Agent Brain

Stars on GitHub

Momentum

stars in total
32.3k
Star history of garrytan/gbrain on GitHub, a chart by star-history.com

Other skills on gbrain.

brain-ingest-gate

brain-ingest-gate

Pre-write quality gate for content entering the brain. No raw copies: a bare cp/mv into the brain repo is a bug. Before any new…

@garrytan@garrytanInstall Skill
brain-link-discipline

brain-link-discipline

When you report a brain page to the user — created, edited, committed, or relayed from a subagent — a working link is part of the…

@garrytan@garrytanInstall Skill
brain-ops

brain-ops

Brain knowledge base operations. The core read/write cycle: brain-first lookup, read-enrich-write loop, source attribution,…

@garrytan@garrytanInstall Skill
concept-synthesis

concept-synthesis

Deduplicate and synthesize raw concept stubs into a tiered intellectual map (T1 Canon to T4 Riff), tracing idea evolution across…

@garrytan@garrytanInstall Skill
context-audit

context-audit

Token-hygiene audit of the always-loaded context stack — CLAUDE.md, AGENTS.md, auto-memory MEMORY.md, and the bootstrap-rendered…

@garrytan@garrytanInstall Skill
correction-pipeline

correction-pipeline

When the user corrects a factual error, root-cause it immediately. Don't just note the correction — trace the error to its…

@garrytan@garrytanInstall Skill

More skills from other plugins.

agent-cost-report

agent-cost-report

Believable agent cost report for any period, default the last 7 full days PT, not counting today. Measured tokens from Claude…

@thedotmack@thedotmackInstall Skill
bot-handoff

bot-handoff

Keep a durable record of work passed between Bots in the shared Hindsight memory bank. Use when handing work to another Bot, when…

@vectorize-io@vectorize-ioInstall Skill
mempalace

mempalace

Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…

mempalace11d60k
@mempalace@mempalaceInstall Skill
mempalace

mempalace

Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…

mempalace11d60k
@milla-jovovich@milla-jovovichInstall Skill

Questions about meeting-ingestion.

Which coding agents can use meeting-ingestion?
meeting-ingestion installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.