What we may do next

The deck is already listening

on right now
The talk log
Press Q for an audience question, N for a note. Each one is stamped with the deck and slide on screen.
per‑slide dwell time, measured
markdown export for the write‑up
no API key, no mic
experimental
The co‑presenter
A second window listening through Gemini Live. Silent unless addressed by name, researching in the background.
getSlideContext — what’s on screen
audienceQuestion — logs what it hears
live transcript + tool‑call trace
not built
The speech annotator
Close the loop: the transcript writes the slide’s take‑home prose, from what you actually said.
transcript × slide context
→ generated .detail prose
→ a PR against the deck

The first two columns exist. The talk log is running for this webinar — every question you ask is being filed against whichever slide prompted it. The third column is the interesting one, and it is honestly not built.

The parts we already have

Four voice experiments, looking for a job

ambient_assistant
Always listening, proactive audio, completely silent until you say its name. No wake‑word detection — the model decides.
mic · tools
gemini_live · speak
Voice agent with contract‑verified tool calling. The arithmetic it does out loud is checked before it’s spoken.
verified
voice_docparse
Talk to a document. Voice in, DocParse tools invoked live, answers about DOCX, PPTX, XLSX and PDF.
in‑browser
co_presenter.ail
The Gemini Live session driven by AILANG compiled to WASM — which is exactly why the presenter bridges to it rather than shipping it.
~39MB wasm

All four live in the ailang-demos repo, built for other reasons. That’s usually how this goes: you don’t plan the feature, you notice you already have four fifths of it lying around. The bridge between the two repos is postMessage, not a copy — fix one, both improve.

Honest about the gap

What it would take

what you’d get
Speaker notes written from the talk you gave, not the one you planned
Every question filed against the slide that caused it, automatically
Timings measured from a real run, pasted straight back into the playlist
The deck improves each time you give it. The talk becomes its own data.
what’s in the way
Tracing stops at the tool call — we want --emit-trace inside WASM, which AILANG doesn’t expose yet
A live mic in a webinar is a second thing that can fail, and it’s the one you can’t hide
Transcripts of a whole talk are personal data. Whose? Kept where?
A model that writes your speaker notes will write them confidently wrong sometimes

I’m showing you the roadmap rather than a demo because the right‑hand column is real and I haven’t solved it. The last row is the one that worries me: this whole talk argues for a linter because prose alone can’t be trusted — and there is no linter for “that’s not what I said.”

1 / 1