A Real-Time LLM-Powered Meeting Intelligence Engine with Knowledge Graph Visualization
Real-time meeting intelligence powered by Google Gemini AI
Features • Installation • Usage • Architecture • Challenges
|
Shehr Bano Lead Developer Backend Architecture & AI Integration Computer Science Department, Namal University, Mianwali |
Anila Younas Lead Developer Frontend Design & UX Engineering Computer Science Department, Namal University, Mianwali |
Cognivox is a cutting-edge passive meeting intelligence engine that captures system-wide audio, processes it through Google's Gemini AI, and provides real-time meeting intelligence with zero-latency optimizations. Constructed on a high-performance Rust backend with a Tauri frontend, it transforms the transient nature of verbal communication into structured knowledge.
Meeting intelligence traditionally focuses on post-hoc transcription—processing recordings after a meeting. Although useful for archiving, this lacks the immediacy necessary for agile decision-making. Verbal meetings create streams of continuous, unstructured audio, and without active note-taking, key decisions, tasks, and risks are often lost to the ether.
Cognivox overcomes these limitations by moving from simple transcription to semantic understanding. The system operates as an enhanced "second mind," automatically converting unstructured speech into actionable JSON entities—Tasks, Decisions, Risks, and Knowledge Graph nodes—in real time.
Designed to be an invisible, silent corporate meeting intelligence engine, it processes:
The foundation of the system is a high-fidelity, thread-safe audio pipeline implemented in Rust.
A robust, fault-tolerant bridge to the Google Gemini 2.5 Flash model.
The central nervous system that validates, structures, and dispatches intelligence.
A high-performance, reactive visualization interface built with Svelte 5.
Tools for persistence, review, and export.
AppData/Local/...).graph TD
subgraph Input Layer
Mic[Microphone Input] -->|PCM Data| AudioProc[Audio Processor Rust/CPAL]
Sys[System Loopback] -->|PCM Data| AudioProc
end
subgraph Processing Layer
AudioProc -->|Resampled 16kHz Mono| VAD[VAD Manager]
VAD -->|Speech Segments| GeminiClient[Gemini Client Tokio/WebSocket]
GeminiClient -->|Base64 Audio| CloudLLM[Google Gemini 2.5 Flash]
end
subgraph Intelligence Layer
CloudLLM -->|JSON Response| Processing[Processing Engine Rust]
Processing -->|Validates Schema| State[App State]
end
subgraph Presentation Layer
State -->|Updates| UI[Svelte UI Dashboard]
State -->|Updates| Graph[Knowledge Graph SVG]
end
Rust was chosen for its memory safety without garbage collection. In real-time audio processing, GC pauses cause buffer under-runs and audio glitches. Rust's ownership model ensures deterministic performance, while the cpal crate provides native access to Windows WASAPI for low-level audio control.
Svelte's compile-time reactivity model eliminates the Virtual DOM, making it significantly faster for high-frequency updates like the real-time Knowledge Graph visualization. This ensures a consistent 60 FPS even when rendering complex, moving graph nodes.
Tauri uses the system's native WebView (WebView2 on Windows) rather than bundling Chromium. This reduces the application binary size to <10MB and minimizes memory footprint, allowing Cognivox to run invisibly alongside heavy conferencing tools like Zoom or Teams.
Chosen for its extreme low latency and high throughput. Its multimodal capabilities allow direct processing of audio inputs, and its strong reasoning capabilities enable semantic diarization (identifying speakers by context) without needing heavy local acoustic models.
Challenge: Capturing system audio (what the user hears) alongside microphone input is non-trivial. Windows WASAPI Loopback operates on a different clock and often different sample rates than microphone input.
Resolution: Implemented a CaptureMode::SystemOnly route in the Rust backend using cpal's host-specific WASAPI features. Created a custom mixing pipeline to resample both streams to a common 16kHz clock domain before mixing.
Challenge: LLMs, being probabilistic, occasionally produce malformed JSON (trailing commas, missing fields), which typically crashes strict parsers.
Resolution: Implemented a "soft-fail" validation layer in processing_engine.rs. The system attempts to parse; if it fails, it increments an internal error_streak counter and seamlessly discards the bad chunk, ensuring the UI never crashes due to AI hallucination.
Challenge: The custom force-directed graph initially suffered from "node jitter"—nodes vibrating endlessly due to conflicting forces. Resolution: Tuned the physics simulation constants (repulsion, attraction, damping) specifically for the scale of meeting data. Implemented a "cooling" factor that gradually freezes nodes once they reach a stable equilibrium.
Clone the Repository
git clone https://github.com/namal-university/cognivox.git
cd cognivox
Install Node.js Dependencies
npm install
Verify Rust Dependencies
cd src-tauri
cargo check
cd ..
Run in Development Mode
npm run tauri dev
npm run tauri dev.{
"timestamp_ms": 1234567890,
"speaker_id": "Speaker_1",
"transcript_chunk": "Let's discuss the project timeline.",
"is_final": true,
"intelligence": {
"category": ["TASK", "DECISION"],
"summary": "Discussion about project timeline",
"tone": "NEUTRAL",
"confidence": 0.95,
"entities": [
{
"text": "project timeline",
"type": "TASK",
"start_ms": 1234567890,
"end_ms": 1234567900,
"confidence": 0.92
}
],
"graph_updates": [
{
"node_a": "Project",
"relation": "HAS_DEADLINE",
"node_b": "Timeline",
"weight": 0.9,
"directional": true,
"tone_modifier": 0.0
}
]
}
}
MIT License
Copyright (c) 2025 Shehr Bano & Anila Younas
22 commits
6 commits
Python
43.4%
TypeScript
31.8%
Go
9.1%
C++
8.7%
Svelte
3.1%
Rust
1.2%
A Real-Time LLM-Powered Meeting Intelligence Engine with Knowledge Graph Visualization
Real-time meeting intelligence powered by Google Gemini AI
Features • Installation • Usage • Architecture • Challenges
|
Shehr Bano Lead Developer Backend Architecture & AI Integration Computer Science Department, Namal University, Mianwali |
Anila Younas Lead Developer Frontend Design & UX Engineering Computer Science Department, Namal University, Mianwali |
Cognivox is a cutting-edge passive meeting intelligence engine that captures system-wide audio, processes it through Google's Gemini AI, and provides real-time meeting intelligence with zero-latency optimizations. Constructed on a high-performance Rust backend with a Tauri frontend, it transforms the transient nature of verbal communication into structured knowledge.
Meeting intelligence traditionally focuses on post-hoc transcription—processing recordings after a meeting. Although useful for archiving, this lacks the immediacy necessary for agile decision-making. Verbal meetings create streams of continuous, unstructured audio, and without active note-taking, key decisions, tasks, and risks are often lost to the ether.
Cognivox overcomes these limitations by moving from simple transcription to semantic understanding. The system operates as an enhanced "second mind," automatically converting unstructured speech into actionable JSON entities—Tasks, Decisions, Risks, and Knowledge Graph nodes—in real time.
Designed to be an invisible, silent corporate meeting intelligence engine, it processes:
The foundation of the system is a high-fidelity, thread-safe audio pipeline implemented in Rust.
A robust, fault-tolerant bridge to the Google Gemini 2.5 Flash model.
The central nervous system that validates, structures, and dispatches intelligence.
A high-performance, reactive visualization interface built with Svelte 5.
Tools for persistence, review, and export.
AppData/Local/...).graph TD
subgraph Input Layer
Mic[Microphone Input] -->|PCM Data| AudioProc[Audio Processor Rust/CPAL]
Sys[System Loopback] -->|PCM Data| AudioProc
end
subgraph Processing Layer
AudioProc -->|Resampled 16kHz Mono| VAD[VAD Manager]
VAD -->|Speech Segments| GeminiClient[Gemini Client Tokio/WebSocket]
GeminiClient -->|Base64 Audio| CloudLLM[Google Gemini 2.5 Flash]
end
subgraph Intelligence Layer
CloudLLM -->|JSON Response| Processing[Processing Engine Rust]
Processing -->|Validates Schema| State[App State]
end
subgraph Presentation Layer
State -->|Updates| UI[Svelte UI Dashboard]
State -->|Updates| Graph[Knowledge Graph SVG]
end
Rust was chosen for its memory safety without garbage collection. In real-time audio processing, GC pauses cause buffer under-runs and audio glitches. Rust's ownership model ensures deterministic performance, while the cpal crate provides native access to Windows WASAPI for low-level audio control.
Svelte's compile-time reactivity model eliminates the Virtual DOM, making it significantly faster for high-frequency updates like the real-time Knowledge Graph visualization. This ensures a consistent 60 FPS even when rendering complex, moving graph nodes.
Tauri uses the system's native WebView (WebView2 on Windows) rather than bundling Chromium. This reduces the application binary size to <10MB and minimizes memory footprint, allowing Cognivox to run invisibly alongside heavy conferencing tools like Zoom or Teams.
Chosen for its extreme low latency and high throughput. Its multimodal capabilities allow direct processing of audio inputs, and its strong reasoning capabilities enable semantic diarization (identifying speakers by context) without needing heavy local acoustic models.
Challenge: Capturing system audio (what the user hears) alongside microphone input is non-trivial. Windows WASAPI Loopback operates on a different clock and often different sample rates than microphone input.
Resolution: Implemented a CaptureMode::SystemOnly route in the Rust backend using cpal's host-specific WASAPI features. Created a custom mixing pipeline to resample both streams to a common 16kHz clock domain before mixing.
Challenge: LLMs, being probabilistic, occasionally produce malformed JSON (trailing commas, missing fields), which typically crashes strict parsers.
Resolution: Implemented a "soft-fail" validation layer in processing_engine.rs. The system attempts to parse; if it fails, it increments an internal error_streak counter and seamlessly discards the bad chunk, ensuring the UI never crashes due to AI hallucination.
Challenge: The custom force-directed graph initially suffered from "node jitter"—nodes vibrating endlessly due to conflicting forces. Resolution: Tuned the physics simulation constants (repulsion, attraction, damping) specifically for the scale of meeting data. Implemented a "cooling" factor that gradually freezes nodes once they reach a stable equilibrium.
Clone the Repository
git clone https://github.com/namal-university/cognivox.git
cd cognivox
Install Node.js Dependencies
npm install
Verify Rust Dependencies
cd src-tauri
cargo check
cd ..
Run in Development Mode
npm run tauri dev
npm run tauri dev.{
"timestamp_ms": 1234567890,
"speaker_id": "Speaker_1",
"transcript_chunk": "Let's discuss the project timeline.",
"is_final": true,
"intelligence": {
"category": ["TASK", "DECISION"],
"summary": "Discussion about project timeline",
"tone": "NEUTRAL",
"confidence": 0.95,
"entities": [
{
"text": "project timeline",
"type": "TASK",
"start_ms": 1234567890,
"end_ms": 1234567900,
"confidence": 0.92
}
],
"graph_updates": [
{
"node_a": "Project",
"relation": "HAS_DEADLINE",
"node_b": "Timeline",
"weight": 0.9,
"directional": true,
"tone_modifier": 0.0
}
]
}
}
MIT License
Copyright (c) 2025 Shehr Bano & Anila Younas
22 commits
6 commits
Python
43.4%
TypeScript
31.8%
Go
9.1%
C++
8.7%
Svelte
3.1%
Rust
1.2%