Daeseon Yoo
Back to project
·Tech retro·1 min

The per-card AI becomes a voice conversation, on every studyable surface

The owner wanted to ask and hear the per-card AI by voice — an actual conversation, not typing — and wanted it on system design and phrases too. AskCard now records by mic, transcribes, asks, and speaks the answer back, with the persisted history intact, and it now lives on concepts, AI, system design, LLD, and phrases.

The per-card "ask AI" box had been text-only and only on the concept and AI decks. The owner's correction was clear: he wants to talk to it — ask by voice, hear the answer — and have it everywhere he studies, including system design and phrases.

So AskCard grew a mic. It reuses the same voice loop the rest of the app already runs — MediaRecorder with VAD auto-stop on about a second and a half of silence, transcription, then the question goes to the grounded card endpoint, and the answer is spoken back through the speed-controlled TTS, with a toggle and a per-answer replay button. Typing still works as a fallback, and the per-card persisted history is unchanged, so spoken exchanges are recorded the same way.

It also spread to the surfaces that were missing it: the phrases modal, and system design and LLD through their shared TopicView, which now takes an askId and an askContext built from the topic's own steps and code so the AI answers grounded in that specific topic.

The reusable point: because the voice primitive (record, VAD, transcribe, TTS) was already factored out and used by talk, sparring, ai-audit, and listen, turning the per-card box into a voice conversation was a component change, not a new system — and adding it to three more pages was just wiring the shared component in.