Meeting Capture — Transcript to Brain Note

Hand BlackOps a transcript you already have — Zoom, Granola, Otter, Fathom, or a block of pasted text — and get back a structured note with decisions, action items split into yours and other people's, open questions, and a follow-up email draft.

You already get a transcript. Zoom emails you one, Granola and Otter and Fathom generate one, and if all else fails you can paste the text out of a doc. What you don't get is anything useful — a wall of "um, yeah, so" that nobody reads twice.

Meeting Capture takes the transcript you already have and fuses it into a structured Brain note. No recorder to install, no bot joining your calls.

What comes back

Every capture produces one note containing:

  • Summary — a 2–4 paragraph executive read, not a word-count reduction
  • Decisions — what was actually settled
  • Action items — split into for_me and for_others (with names attached), because those two lists have very different fates
  • Open questions — what got flagged and never resolved
  • Fused timeline — the moments you reacted to, paired with what was being said at the time
  • Follow-up email draft — ready to send

The note lands in your Brain, so everything downstream — posts, newsletters, replies — can draw on it.

The reactions track

This is the part other meeting tools don't have.

Alongside the meeting transcript you can pass reactions: your own side commentary. What you were thinking, muttering, or typing while somebody else held the floor. BlackOps aligns it against the meeting timeline, so the note reflects your read of the room — not just the official record of what was said.

The difference in practice:

Meeting transcript: "So we're aligned on pushing the launch to Q3."

Your reaction at the same timestamp: "We are absolutely not aligned. Dana hasn't seen the dependency list."

What lands in the note: an open question naming the dependency list, and an action item assigned to you to get it in front of Dana — neither of which appears anywhere in the transcript.

A transcript records the meeting. The reactions track records the meeting you were actually in.

Using it

Ask your assistant, in plain language:

"Here's the transcript from this morning's roadmap call — turn it into a note. My reaction: the Q3 date is fiction, Dana hasn't seen the dependency list."

Under the hood that's the ingest_capture tool:

{
  "domain": "yoursite.com",
  "title": "Roadmap call — Q3 planning",
  "attendees": ["Dana Reed", "Ben Newton"],
  "transcript": "<paste anything here>",
  "reactions": "The Q3 date is fiction. Dana hasn't seen the dependency list."
}

It returns immediately with a session_id; fusion runs in the background. Poll get_capture_session for the finished note.

Transcript formats

transcript accepts effectively anything, and detects the shape on its own:

FormatExample
WebVTT00:00:02.000 --> 00:00:05.000 + <v Dana Reed>…</v>
SRTnumbered cues with 00:00:01,000 --> …
Zoom / GranolaDana Reed 00:00:12 on its own line, text beneath
Bracketed[00:03:20] Ben: Ship it behind a flag.
Speaker-onlyDana: We are late.
Plain textone line per thought, no timestamps at all

If the source has no timestamps, lines are spaced evenly — the note still comes out right, you just lose the precision of the fused timeline. If you already have structured segments, pass transcript_segments instead and they're used verbatim.

From a recording instead of a transcript

If you have the video or audio file rather than a transcript, run it through transcribe_video first and hand the result to ingest_capture. Two steps, still no recorder.

Changing the output shape

Fusion output is a default, not a fixed contract. Pass custom_prompt to get something else out of the same transcript:

"Same call, but give me only the action items assigned to other people, as a chase list."

You can also re-run fusion on a session you already captured with refuse_capture_session — same transcript, different prompt, no re-upload. One meeting can become an exec summary, a status report, and a chase list without you touching the source again.

Sanitising before storage

A meeting transcript is not like a note you wrote yourself. A Teams or Zoom export arrives carrying other people's identifying data — full legal names on every speaker label — and people say things out loud in meetings that nobody would type into a document: a staging password, a customer's phone number, an account figure. The person pasting the transcript is rarely the person who consented to any of it being stored.

Pass sanitize: true and it's stripped before the insert — the unredacted transcript never reaches the database at all.

"Take this Teams transcript, sanitise it, and turn it into a note."

KindDefaultWhat happens
namesonSurname reduced to an initial — Dana ReedDana R., in speaker labels, attendees, and mid-sentence mentions
emailson[redacted]
phoneson[redacted]
secretsonAPI keys, tokens, JWTs, private key blocks, connection-string passwords, and spoken ones ("the password is hunter2")
financialonLuhn-valid card numbers, SSNs
urlsoffLeft alone by default — see below

Turn any single kind on or off:

{ "sanitize": { "urls": true, "names": false } }

Three decisions worth knowing about

First names are kept. A transcript where every speaker is [redacted] is useless — fusion can no longer attribute an action item to anyone. Dana R. keeps the note actionable while dropping the identifying half. If two attendees would collapse to the same short form, the second becomes Dana R. (2) rather than silently merging two people into one.

Links are not stripped by default. In most meetings the link is the artifact — the doc, the ticket, the dashboard. Stripping links by default would quietly gut the note. Opt in with { "urls": true } when the links themselves are sensitive.

Detection is deliberately narrow. A greedy PII heuristic shreds legitimate content, and an engineering meeting is wall-to-wall version numbers, order IDs, and error codes. 2.14.3 and order 4429173028 survive; a Luhn-valid card number does not. Where a pattern couldn't be made specific enough to be safe, it isn't included — under-redacting a thing you can see beats corrupting a transcript in ways you can't.

What you get back

The response tells you exactly what was removed, so it's never a silent rewrite:

Sanitised before storage: 2 names shortened, 1 email address, 1 credential.

The per-person mapping (Dana Reed → Dana R.) is returned to you in that response and is never stored — persisting it would put back precisely what sanitising just removed. Only the counts are kept on the session.

Sanitising is opt-in on every call. It is never applied unless you ask: silently rewriting someone's content is its own kind of failure.

Privacy

Transcripts are stored against your site and fused server-side. Audio is never uploaded by this path — you're handing over text you already have.

The native macOS recorder (which keeps audio on-device and uploads transcripts only) is a separate, future path; ingest_capture deliberately does not depend on it.

Want this page as machine-readable markdown? GET /docs/features/meeting-capture.md