Conclave Docs

Data flow

How a meeting flows — capture → diarize → identify → enrich → view.

There are four flows. All of them keep capture identity-free and all naming consent-gated.

Engine note. Our own stack runs the diarization below — diart (live) + TD, our own trained model, for the authoritative post-pass. While we scale our own models on TEE GPUs, a managed engine (Deepgram) currently serves as a temporary fallback; it uses the identical Redis wire format, so the flows are unchanged. Diarization separates speakers; it does not name them. Identity always comes from VFTEE, so capture stays identity-free. See Status.

Online (live)

Conclave
Dispatch
runtime-api
Capture
recato-bot joins
Meet · Teams · Zoom
Redis
transcription_segments
Conclave
Persist
in TEE
VFTEE
identify(ws)
provisional tags live

In-person (live)

Source
browser / OS mic
Capture
capture-diart WS
diart live + per-span ASR
Redis
transcription_segments
Conclave
Live view
SSE at /recording/[id]

Post-meeting (authoritative)

Conclave
Finalize
enqueue durable job
Redis
diarize_jobs stream
Worker
Post-pass worker
fetch audio by reference · GET /api/diarize/audio/{uid}
TD
Authoritative pass
our GPU model
Spans
authoritative { start, end, local_speaker }
VFTEE
/v1/identify-spans
ws · audio · spans
Conclave
Reconcile + merge
overwrite raw_diarization · merge_by_timestamp
Conclave
[speaker] text → enrich → KB
index + extract
Deepgram stands in as a temporary fallback while we scale TD on TEE GPUs — identical Redis wire format, flow unchanged.

Manual tag

Conclave
UI tag
Overlay
resolved_speakers
instant · raw stays immutable
In parallel — VFTEE consent-gated feedback: a self-tag auto-confirms, otherwise it stays PENDING until the subject confirms.

Regulated-data redaction

Owner
Review panel
In-CVM
Detect
PCI · PHI · PII — Luhn / checksums / regex · no LLM
Strip
Strip spans
transcript + regen insights + frame-mute sealed audio
Version
New immutable signed version
conclave-seal/v1
Receipt
Completeness receipt
conclave-redaction/v1
Verify
Verify offline
/redaction-verifier.html · WebCrypto Ed25519

See Verifiable redaction.

The segment contract

The split between diarization and identity is exact — segment_dict:

FieldOwner
start, end, local_speakerCapture
voiceprint_id, name, decision, confidenceVFTEE

A second meeting recognizes the same voices — the voiceprint count does not grow. The durable job queue (#16) makes finalize crash-safe: restarting Conclave, the worker, or the GPU box loses no jobs (Redis XAUTOCLAIM + dead-letter).

On this page