← All speakers

Bio, Work & Ideas

Thor Schaeff

Conference affiliation: Google DeepMind · 2026

On this page

Thor Schaeff works on developer experience at Google DeepMind, helping developers build with the Gemini API and Google AI Studio. His work teaches through inspectable applications: semantic search that runs inside a browser, voice agents adapted to model and speech constraints, and conversational interfaces that call tools to generate images or music.

From customer support to developer platforms

Thor grew up in Heidelberg, Germany, and learned to build websites at an SAP summer camp before returning to teach other children. His early career included an internship with Google’s Maps for Work team in London. At Stripe in Dublin, he started in support, moved through customer-facing engineering roles, and later relocated to Singapore to develop developer relations across Asia-Pacific. He recounts this progression in his talk on developer experience in the age of coding agents.

In Singapore, Thor began contributing to Supabase before joining the company. His writing and examples cover authentication, client libraries, geospatial applications, edge functions, and AI integrations. These projects explain how application developers can use the underlying infrastructure, often by combining it with tools they already know.

At ElevenLabs, Thor focused on conversational interfaces, publishing implementations that connected language models to its voice platform, including Gemini and DeepSeek-derived reasoning models. He later joined Google DeepMind to help developers build with Gemini, returning to Google after his earlier Maps internship.

Making the implementation teach the idea

  • In-browser semantic search. Thor’s browser-vector-search combines Transformers.js for generating embeddings, PGlite for running Postgres locally, and pgvector for similarity search. His implementation guide grew out of a browser-based Postgres sandbox built with ElectricSQL. Text and embeddings stay in IndexedDB, and searches execute locally. This lets a browser find items by meaning rather than only matching words, without sending each search to a server.
  • Voice agents shaped by integration constraints. His DeepSeek voice-agent guide makes a consequential model choice explicit. The example uses DeepSeek-R1-Distill-Qwen-32B through Cloudflare Workers AI because the original R1 lacked the function-calling support required by the integration at the time. Thor also adapts the math tutor’s instructions so equations become pronounceable sentences. Both the model’s interface and the form of its output determine whether the reasoning can be used in conversation.
  • Reusable paths into real-time audio. His Expo and React Native example connects a mobile application to OpenAI’s Realtime API over WebRTC. Alongside his ElevenLabs integrations, it provides code developers can inspect and adapt across different audio platforms.

Thor extends this approach to developer platforms themselves. He argues that coding agents have become another audience for documentation and examples. His account of machine-facing developer experience connects Supabase’s adoption by AI builders to its open implementation and familiar Postgres foundation. He advocates accessible documentation, agent instructions, and usable examples, while treating the practice as something developers still need to test and learn together.

From spoken output to conversational applications

Thor’s Gemini work explores what changes when an application can interpret audio directly. His audio-stack demonstrations include EchoScript, which uses one structured request to extract speaker identities, timestamps, languages, emotional cues, translations, and summaries. He also demonstrates directing synthetic speech through instructions for accent, pacing, and character, giving developers another way to shape delivery beyond selecting a voice from a catalog.

His architectural comparisons retain the tradeoffs. A cascade of speech recognition, a language model, and speech synthesis offers separate stages for observation, moderation, and intervention. Native audio models support more fluid multilingual interaction, while leaving developers with practical questions about debugging, session management, and grounding.

In Can Your Agent Hear You Now?, Thor explains the Live API as a stateful WebSocket session: it accepts text, audio, and video and streams back audio and a transcript, with support for interruptions and tool calls. His AI radio DJ uses conversation to call Lyria for music generation. An illustrated-story application combines Gemini Live with image generation and uses the stateful Interactions API to maintain characters and style between images. These examples show how he connects conversational input to application behavior: speech can request an action, a tool can perform it, and retained context can carry the interaction forward.

Read the topics behind these talks

4 conference talks

Key ideas

Scroll to read ↓

Build a small coding agent, give a conversational model tools and vision, and follow the deployment and reliability tradeoffs exposed by the live demonstrations.

  • Start with a key—and a device that can use it
    1:43 ↗
  • One interaction surface for models and agents
    8:39 ↗
  • Keep history on the server without surrendering context control
    11:24 ↗
  • The loop connects reasoning to action
    14:31 ↗
  • Give the coding agent documentation it can use
    17:29 ↗
  • Build the smallest stateful agent
    25:09 ↗
  • Add file tools, then close the execution loop
    30:11 ↗
  • Use conversation to expose missing instructions
    35:01 ↗
  • Branch history, but account for expiry and context limits
    42:55 ↗
  • A live DJ with a music-generation tool
    49:02 ↗
  • What travels over the Live connection
    54:49 ↗
  • Prompt the voice, then test its access to facts
    59:24 ↗
  • Choose a generated app or a working example
    1:04:00 ↗
  • Route browser media through a Python server
    1:07:28 ↗
  • Connect directly using an ephemeral token
    1:14:09 ↗
  • Separate successful actions from unresolved failures
    1:19:49 ↗
  • Longer sessions require a policy for forgetting
    1:25:07 ↗
  • Choose conversational flow and control deliberately
    1:26:57 ↗
  • Recognizing speech is not authorizing its speaker
    1:33:22 ↗
  • Personalization, evaluation, and storage have separate boundaries
    1:39:23 ↗
  • Return to the failed weather answers
    1:45:16 ↗

Key ideas

Scroll to read ↓

Follow a voice agent from speech recognition to language switching, tool calls and spoken replies, then examine what breaks with slow systems, mixed languages and domain vocabulary.

  • Which languages—and which accents—should the agent speak?
    0:22 ↗
  • Text to Bark: generated sound is not translation
    5:08 ↗
  • Speech, text, intelligence, speech
    8:26 ↗
  • A transcript can carry timing, speakers and events
    10:51 ↗
  • Forward a voice message, get readable text
    12:39 ↗
  • Choose the intelligence layer and the speaking voice
    17:05 ↗
  • Configure a conference agent
    20:31 ↗
  • Switch languages without restarting the conversation
    23:38 ↗
  • Language recognition selects a configured voice
    28:49 ↗
  • Give the agent appointment-setting tools
    30:58 ↗
  • Balance response time, session cost and task complexity
    33:01 ↗
  • Keep the caller informed while tools run
    39:06 ↗
  • A mixed-language question exposes a recognition boundary
    43:56 ↗
  • Voice generation needs misuse controls
    49:00 ↗
  • Test the languages people actually mix
    52:00 ↗
  • Generated voice is only one part of an avatar
    55:06 ↗
  • Pronouncing SAP and recognizing Joule are different problems
    57:49 ↗

Key ideas

Scroll to read ↓

Thor Schaeff moves from a multilingual recording to directed speech, live camera conversation and generated music, showing how Gemini’s audio capabilities fit together.

  • Start with a multilingual recording
    0:40 ↗
  • The information a plain transcript leaves behind
    3:01 ↗
  • One recording, several kinds of output
    4:40 ↗
  • Choose a base voice, then direct its performance
    7:24 ↗
  • A conversation without a text-only middle
    11:55 ↗
  • The camera works—and the accent instruction travels
    13:32 ↗
  • Building the live connection
    15:09 ↗
  • Let the conversation request a song
    15:55 ↗

Key ideas

Scroll to read ↓

Thor Schaeff connects live conversation to image generation, translation and music, then explains the stateful WebSocket session behind Gemini’s voice and vision agents.

  • The story canvas connects Gemini Live to NanoBanana Lite through tool calls. Passing the previous interaction ID gives later image requests access to earlier generation context.
    3:58 ↗
  • Live Translate separates the automatically detected speaking language from each listener’s chosen output language, beginning translation as enough context becomes available.
    7:47 ↗
  • A live agent becomes more useful when conversation can invoke a concrete capability. The DJ gathers a music request, calls Lyria 3 and returns to the conversation after the song.
    10:43 ↗
  • Gemini 3.1 Flash Live uses the Live API’s stateful WebSocket session for text, audio and video inputs, returning audio chunks plus transcription. Native audio processing does not require the transcript to serve as an intermediate text stage.
    14:05 ↗
  • Multilingual capability still benefits from clear conversational control: when the attempted Mandarin switch faltered, an explicit request let the exchange continue.
    18:36 ↗

References