In development

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.