Kevin

Meeting Intelligence — shared lens engine

One transport-agnostic engine behind Saul, Noted and the everyday lens. Two entry points (a pasted transcript, and a live ASR stream already on the bus) converge on the same skins; Tier 1 keyword prefilter is free and always on, Tier 2 routes only FLAGGED lines to a Sterling ensemble pack. Utterances, flags and verdicts publish to kv/meeting/{id}/...; a session is filed to the vault under an explicit subject, or explicitly not. Three temporal layers over one engine: realtime flags a line as it is said, the overnight job runs the panel over stored sessions, and the ongoing groom carries what is still standing with a human's dismissals applied on every rebuild. The lens is a LAYER over content, not a meeting feature: `lens_router.py` reads an email, an invite or a note through the same skins and files them into the same store, so one commitment seen on two surfaces converges to one groomed item. RULE FOR STORE NODES: label a store with the TRACKED MODULE that owns it — `storage.py`, `review_state.py`, `groom.py` — and describe the data it writes in the subs as prose, never as a bare filename. Nothing this system persists is in the repo: session records, `.review.md` artifacts, review state and groom decisions all live in the operator's vault, so a node label naming any of those files fails the CI audit, whatever it is called. Where a path really must appear, write it home-relative (`~/Documents/Kevin-Vault/meetings/...`), which is accurate and outside this oracle's standing. Build output (graphify-out/, KAN-1137) is gitignored for the same reason.

Meeting Intelligence — shared lens engine (v2026-08-28T093439Z-747172b178) 2026-08-28 | One transport-agnostic engine behind Saul, Noted and the everyday lens. Two entry points (a pasted transcript, and a live ASR stream already on the bus) converge on the same skins; Tier 1 keyword prefilter is free and always on, Tier 2 routes only FLAGGED lines to a Sterling ensemble pack. Utterances, flags and verdicts publish to kv/meeting/{id}/...; a session is filed to the vault under an explicit subject, or explicitly not. Three temporal layers over one engine: realtime flags a line as it is said, the overnight job runs the panel over stored sessions, and the ongoing groom carries what is still standing with a human's dismissals applied on every rebuild. The lens is a LAYER over content, not a meeting feature: `lens_router.py` reads an email, an invite or a note through the same skins and files them into the same store, so one commitment seen on two surfaces converges to one groomed item. RULE FOR STORE NODES: label a store with the TRACKED MODULE that owns it — `storage.py`, `review_state.py`, `groom.py` — and describe the data it writes in the subs as prose, never as a bare filename. Nothing this system persists is in the repo: session records, `.review.md` artifacts, review state and groom decisions all live in the operator's vault, so a node label naming any of those files fails the CI audit, whatever it is called. Where a path really must appear, write it home-relative (`~/Documents/Kevin-Vault/meetings/...`), which is accurate and outside this oracle's standing. Build output (graphify-out/, KAN-1137) is gitignored for the same reason. 1 - API ENTRY - handles incoming requests meeting_intelligence_router.py GET /api/meeting POST /api/meeting run_session() 2 - ANALYSIS - processes meeting content skins.py Skin.analyze() Tier 1 keyword prefilter Tier 2 Sterling ensemble pack 3 - PERSISTENCE - stores analysis results storage.py SessionStore persistence of session records review state and groom decisions 1. Receive meeting request 2. Analyze content 3. Store results 4. Publish flags 5. Advertise session 6. Handle translation 7. File session Sample API request payload { "skin_name": "everyman", "text": "Hello, how are you?" } Sample analysis result { "utterance": "Hello, how are you?", "flags": ["greeting"], "verdict": "positive" } The system uses a shared engine for meeting intelligence, handling both pasted transcripts and live ASR streams. The analysis process includes a free keyword prefilter and an optional Sterling ensemble pack for more detailed analysis. Results are persisted in the operator's vault, ensuring data is stored outside the tracked repository. Legend actor = initiates work · process = code path · store = state on disk · bus = durable queue · dashed = separate process cyan = request flow · pink = state read/write · dashed green = pull / return path · red = refusal As of 2026-08-28 11:16 UTC, from commit 68470f5

Provenance

This drawing is generated, not drawn. It is rebuilt from the source files below, so when they change the picture changes — a diagram here cannot quietly describe a system that no longer works this way.

Owner
Kevin
Slug
meeting-intelligence
Rendered
2026-08-28T093439Z
From commit
747172b178
Updated
28 Aug 2026, 11:16 UTC
Sources at
68470f5
Watches
7 paths
  • tools/meeting_intelligence
  • daemon/src/meeting_intelligence_router.py
  • daemon/src/meeting_intelligence_live.py
  • daemon/src/meeting_intelligence_vault.py
  • daemon/src/meeting_translate.py
  • daemon/src/lens_router.py
  • daemon/mona/src/services/liveAsrCapture.ts