Skip to content
All work

Join the Conversation

A desktop app that listens along to whatever your computer is playing. Hold a key, ask about what was just said, and get an answer without leaving the video, podcast or call.

When
2026
Role
Design and engineering, on my own
Status
In development, not released yet
Built with
Electron, FoldKit, Effect, whisper.cpp, llama.cpp, Cloudflare
Join the Conversation’s home screen: ‘Hold fn to ask about what you just heard’ above stats, a getting-started checklist and a history of questions and answers

Asking the people on the podcast

When someone on a podcast or in a lecture says something you don’t follow, the usual fix is to pause, open a browser and try to describe something you only half heard. I wanted to be able to ask the conversation itself.

Join the Conversation keeps a rolling two-minute transcript of whatever your computer plays: a video, a course, an audiobook, a podcast or a meeting. Hold a key, ask out loud and let go, and the answer streams into a small bar at the bottom of the screen. It answers from what was just said, so it feels a bit like putting your hand up mid-conversation. Then you carry on listening.

One key to ask

You hold a key, ask and let go. It’s fn on a Mac and Ctrl with the Windows key on a PC, and you can change both. Double-tap it and it keeps listening, so you can talk for a while without holding anything. Esc cancels, with an Undo in case you hit it by accident.

A press longer than 400 ms is a question, and letting go sends it. A shorter one is treated as the start of a double-tap, and if no second tap comes it’s dropped without a message. Brushing the key should never ask the model anything.

A video player from the app’s setup, showing a cartoon octopus clip, with the bar at the bottom of the screen in front of it
The bar at rest: a small handle at the bottom of the screen

Hold the button down and let go after a moment, as if you were asking.

Try a quick double-tap too, or press Esc while it’s recording. With a keyboard, focus the button and hold Space.

Screenshots of the real bar, in front of the clip from setup. The button follows the same rules as the shortcut: 400 ms to count as a hold, 600 ms for a second tap and 650 ms before a lone tap is dropped.

Quiet until you need it

At rest the bar is a 32 by 6 pixel handle. It grows into a pill while you talk, says “Thinking…” once you let go, and opens into the answer panel when the first word arrives. There’s only ever one thing on screen. The bar never takes focus, and clicks pass straight through it unless there’s something to press, so whatever you were doing keeps working.

I studied a voice dictation app I like for this part, and measured its interface to get the sizes, motion and timings right. The icons, sounds and words are my own.

The start sound plays when the microphone is actually sending audio, not when you press the key, and the waveform is drawn from your real mic levels. If the bar says it’s listening, it is.

Answers are text, and you can have them read aloud. Each answer says how much it heard, like “Last 45 s · on this computer”. If that wasn’t enough, “Use more context” asks again with the last two minutes, and holding the key while an answer is open asks a follow-up.

Learning it with the real thing

There are no videos of the product pretending to work. Setup tests your real microphone on a live meter, asks you to hold your shortcut and checks it lights up, then gives you a short clip to ask about. The answer arrives in the real bar.

The ‘Try asking about a clip’ onboarding step: a framed video player with a cartoon octopus, and an instruction to hold fn and ask how an octopus arm can make decisions on its own
The try-it step. You play the clip, then hold the key and ask about it.

After that, tips are rationed. You get at most two a day, each one only once, and never while you’re recording. The Home checklist only ticks things off when you’ve actually done them, like asking a follow-up or trying hands-free.

Being clear about what it heard

An app that’s always listening has to be obvious about what it keeps. The second screen of setup asks where your data goes, and the default is that everything stays on your computer. Raw audio is never written to disk. Transcripts are kept for a day and questions for 30 days, and you can cut either down to the current session.

The privacy step of setup: ‘Keep everything on this computer’ is selected over ‘Allow cloud providers’, next to a card listing what it hears (kept 1 day), your questions (kept 30 days) and raw audio (never saved)
Choosing where data goes. Cloud providers are opt-in and use your own keys.

The Live transcript page shows exactly what it can answer about right now, labelled as automatic and possibly wrong. You can also type a question there instead of speaking.

The Live transcript page: timestamped lines about regional banks and the yield curve, a question shown as a chip, the answer indented below it, and a box to type a question
The Live transcript, with sample data. Your questions and the answers sit in line with what was said.

Dressed in wine

I wanted it to feel quiet and a little luxurious, so I took the palette from this autumn’s fashion: berry, burgundy and merlot, worn against cream and black. The interface is mostly neutral and the wines are the accessories. Each one has a single job.

  • BurgundyAction. One coloured button per screen.#7f1b3a / #ac3a5c
  • BerrySignal: live, hands-free, focus and the tour.#ae3368 / #d9588c
  • MerlotDepth: shadows, gradient ends and the mark.#4d1420 / #7a2b3d
  • Porcelain and Black CherryThe neutrals, pulled about 1% towards wine.#f6efee / #120d0e
Each colour shown in its light theme value, then its dark one. Danger is a vermilion about 35° away from the wines, so an error never looks like a brand colour.

Type follows the same idea. Instrument Serif is for things you look at once, like page titles, headlines and big numbers. Inter is for everything you read or press. The serif never goes below 20 pixels and never goes on a control.

The home screen in the dark theme, black cherry with a berry accent
The same home screen in the light theme, warm porcelain with a burgundy accent
Home in light and dark, with sample data. Drag across it to compare. In dark, the accent moves up to berry so buttons glow against black cherry instead of sinking into it.

All of it lives in StyleX tokens. A script generates the forced light and dark themes from them, so a colour is only ever defined once, and every window shares the same buttons, toggles, fields and key caps.

Where it’s at

The whole loop works on my PC. The real-model test passes, including with the network switched off, and I’ve run the Electron app through onboarding, scripted spoken questions, follow-ups and hands-free on a Linux dev build. The Windows audio host is built and tested on Windows 11 but hasn’t run inside the packaged app yet. The macOS host is written and unit tested, but I haven’t had a Mac to compile it on.

Nothing is signed or released yet. Next on the list are running it on a Mac and pausing whatever’s playing when you hold the key. For now you pause it yourself.