AI Voice Agent for Education
An AI voice agent for education built with Next.js and the Gemini API. Students speak instead of typing; speech is transcribed, structured into organised notes, and made queryable. Built around the observation that voice removes the friction of note-taking during a lecture.
- Role
- Sole developer — in active development.
- Year
- 2025
- Stack
- Next.js, React, Gemini API, Tailwind CSS
The problem
Typing notes during a lecture means dividing attention between listening and transcribing, and both suffer. Speaking is faster than typing but produces unstructured output — the value is not in the transcript, it is in turning that transcript into notes with headings, topics and retrievable structure.
How it was built
01Speech capture and transcription
Audio is captured in the browser and transcribed, with the transcript treated as an intermediate representation rather than the deliverable. Handling this in the browser keeps the round trip short enough that the interface stays responsive while someone is speaking.
02Structuring the transcript
Gemini converts spoken continuous text into organised notes: topic headings, grouped points, and terms worth defining. This is the step that makes voice notes useful — an unstructured wall of transcript is harder to revise from than nothing, because it looks complete while being unusable.
03Conversational retrieval over notes
Notes are queryable in natural language, so a student can ask what was said about a topic instead of scrolling. This turns the archive into something worth keeping rather than a folder nobody reopens.
Stack decisions
Why each piece was chosen, rather than just what was used.
Gemini API
Strong at long-form restructuring and native multimodal handling, which suits turning continuous speech into structured text in one step rather than chaining separate transcription and formatting models.
Next.js
Keeps model credentials server-side while allowing streamed output, so structured notes appear progressively instead of after a long silence.
React
Recording state, transcription state and structuring state are three concurrent async flows the UI has to represent honestly. Component state keeps each one visible rather than collapsing them into one spinner.
What it does
- Browser-based voice capture with live transcription
- Automatic structuring into headings and grouped points
- Natural-language querying across saved notes
- Streamed output rather than a blocking wait
Questions this raises
Why structure a transcript instead of just storing it?
Because a raw transcript is deceptively useless. It looks like a complete record, so nobody rewrites it, but continuous unpunctuated speech is harder to revise from than a short set of headed bullet points. The value of a voice note-taker is entirely in the structuring step, not the transcription.
Related work
Building something similar?
Naman Gundaniya takes on full stack and AI projects like this one. Available for hire, replies within 24 hours.