Inspiration

I started Ālāpana because I wanted to build something that could detect what raagam I was singing in.

That was the first version of the problem: sing a phrase, extract the swaras, and classify the ragam. But once I started building it, I realized raga detection was only one small part of a bigger problem in Carnatic practice.

For Carnatic singers, even experienced ones, solo practice is hard because feedback is not persistent. You might practice shruthi, tala, sangatis, or ragas for weeks, but unless a teacher is tracking you, there is no system remembering what you keep missing or what you should fix next.

So the project grew from a raga detection tool into a practice system with memory. Ālāpana does not just classify a clip. It stores evaluated practice, builds a learner model over time, and uses that model to recommend the next exercise.

What it does

Ālāpana is a solo-practice agent for Carnatic learners.

The app helps learners practice pitch, rhythm, ragas, transcription, and guided exercises, but the core loop is:

evaluated practice → MongoDB learner memory → Gemini recommendation → next corrective exercise

When a learner practices, Ālāpana stores structured session data in MongoDB: the tool used, raagam, outcome, practice evidence, and recurring mistakes. The learner memory then powers recommendations, the practice coach, and the learner dashboard.

For example, if the learner repeatedly struggles with the same two ragas during evaluated practice, Ālāpana can surface that as a recurring confusion pattern, open a side-by-side raga comparison, highlight the distinguishing swaras, and route the learner into Gurukul Raga Practice.

The app includes:

  • Gurukul for guided practice and AI Guru feedback
  • Raga Kosha for raga reference and side-by-side raga comparison
  • Viveka for raga classification from sung phrases
  • Shruthi for pitch stability practice
  • Talam for rhythm practice
  • Swara Keyboard for hearing swara relationships
  • Transcribe for capturing phrases and sangatis
  • Practice Coach for memory-aware AI guidance

How we built it

Ālāpana is built as a React/Vite web app with Tailwind CSS, Clerk authentication, and Vercel serverless API routes.

The AI layer uses Gemini 2.5 Flash on Google Cloud Vertex AI. Gemini powers raga analysis, AI Guru feedback, and structured next-step recommendations.

The agent layer uses Google ADK, deployed to Vertex AI Agent Engine. The practice coach is an agent that reads learner context, reasons over practice history, and chooses what the learner should do next.

The memory layer uses MongoDB Atlas. Evaluated practice sessions are stored as structured documents, and the agent connects to that memory through the MongoDB MCP server. This is what lets Ālāpana preserve learner progress across sessions instead of treating every practice session as isolated.

The frontend calls API routes for:

  • saving evaluated practice sessions
  • reading the learner model
  • generating Gemini recommendations
  • querying the practice coach
  • running raga identification through Gemini

The most important part of the architecture is that recommendation logic is not just hardcoded in the UI. The app fetches learner data from MongoDB, sends that context to Gemini with a structured output contract, and renders the agent’s returned recommendation directly in the practice workspace.

Challenges we ran into

The hardest design challenge was separating classification from learning analytics.

At first, it was tempting to treat an ambiguous raga classification result as a learner confusion pattern. But that is not technically honest. A classifier can be uncertain because of audio quality, phrase length, or model confidence. That does not automatically mean the learner is confused.

So I changed the model: Viveka remains a classifier, while learner confusion comes from evaluated practice surfaces like Gurukul, sing-back, and lesson feedback. Those are the places where the app knows what the learner was trying to sing and can compare expected practice against actual output.

Another challenge was making MongoDB feel central instead of just being a database. I wanted memory to visibly affect the product. That is why the learner dashboard, recommendation card, practice coach, and raga comparison all read from the same stored practice history.

Audio was also difficult. Browser microphone input is inconsistent, and Carnatic music has pitch movement, gamakams, and ornamentation that are harder to analyze than simple note matching. I had to build the experience around evaluated practice evidence rather than assuming every recording would be perfect.

Accomplishments

I am proud that Ālāpana has a real memory and recommendation loop.

The app does not just call an AI model and display a response. It stores evaluated practice in MongoDB, builds learner memory from it, sends that context to Gemini, and uses the result to route the learner into a concrete next step.

I am also proud that the system is specific to Carnatic music. The app is built around ragas, swaras, shruthi, tala, raga comparison, and guided Carnatic practice, not a generic music-learning interface.

What we learned

I learned that the strongest use of AI here is not just classification or chat. It is connecting multiple practice sessions into a useful memory.

A single AI response can be helpful, but it is still temporary. Once the system has persistent MongoDB memory, it can start making decisions based on the learner’s actual history.

I also learned that “agent” should mean more than a chat window. In Ālāpana, the agent reads memory, chooses a priority, recommends a tool, and routes the learner to the next exercise. That makes the AI feel connected to the practice workflow instead of separate from it.

What's next

Next, I want to improve the practice analytics across more Gurukul exercises and make the learner model more detailed.

I also want to expand the raga comparison flow with audio examples, phrase-level drills, and better handoff into Raga Practice.

Long term, I want Ālāpana to become a serious solo-practice companion for Carnatic singers: something that helps learners stay consistent, notice their patterns, and practice with more direction when they do not have a teacher beside them.

Built With

Share this project:

Updates