SlidePilot
Experimental Slidev controller that judges speech transcripts for slide completion, with deterministic checks and manual navigation.
# SlidePilot
[](https://github.com/harshil1712/slidepilot/actions/workflows/ci.yml)
[](LICENSE)
> **Experimental:** SlidePilot is an early proof of concept built on experimental voice APIs. Rehearse with it before using it in a live presentation, and always keep manual navigation available.
**Your voice is the clicker.** SlidePilot listens to a presenter, asks [Clef-omni](https://developers.cloudflare.com/workers-ai/models/clef-omni/) on Workers AI whether the current slide is semantically complete, and advances a [Slidev](https://sli.dev/) deck only when deterministic safety checks pass.
```text
Slidev addon → VoiceClient → Cloudflare Voice Input Agent → pause detector
↘ Workers AI Clef-omni (slide audio) → policy → Slidev navigation
```
## How it works
1. The Slidev addon streams microphone audio to a Cloudflare Agent over WebSockets.
2. The Worker keeps the current slide's audio and runs a pause detector on it.
3. Each time the presenter pauses for about 700 ms, Clef-omni hears the slide's audio, up to the most recent 60 seconds, and gets the slide's content and notes. It answers four typed questions: whether advancing feels natural, whether the core idea is complete, whether the presenter is continuing, and whether this is a natural slide boundary. Because it hears the audio rather than a transcript, intonation and trailing off count as evidence.
4. TypeScript—not the model—applies the navigation policy.
5. The addon checks cooldown and stale-decision guards before calling `useNav().next()`, which reveals the next click or, after the last click, moves to the next slide.
Explicit phrases such as “next slide” are not required. Semantic completion is the primary signal, while positive evidence that the pres