An AI-powered study companion that turns passive learning into focused sessions, real conversations, and active recall.
This is my submission for the Hacktoberfest Open-Source AI Challenge โ Week 3: Slow and Steady.
What I Built
Have you ever spent hours studying a topic, only to realize you cannot explain it in your own words?
I have. And that is the problem I wanted to solve with curiousBuddy.
Re-reading notes and watching tutorials can make us feel productive without ensuring that we truly understand what we have learned. Traditional Pomodoro timers help us manage time, but they do not help us evaluate our understanding when a session ends.
So, I built curiousBuddy โ an AI-powered study companion that combines the Pomodoro Technique, the Feynman Technique, and conversational voice AI into one learning workflow.
Meet Cube, your curious study buddy. Instead of simply giving you answers, Cube challenges you to explain what you have learned, questions technical jargon, asks probing why and how questions, and encourages you to use simple analogies.
Key Features
- โฑ๏ธ Precision Pomodoro Timer: Focus for 25 minutes, take a 5-minute short break, or recharge with a 15-minute long break. Customize your study topic and enjoy a minimal circular timer with synthesized audio chimes.
- ๐๏ธ AI Voice Study Buddy โ Cube: Have live, full-duplex voice conversations with an AI companion powered by ElevenLabs Conversational AI. Real-time speaking and listening states and live transcript streaming make the interaction feel natural.
- ๐ฃ๏ธ Socratic Learning with the Feynman Technique: Explain concepts in your own words while Cube questions jargon, asks probing follow-ups, and challenges your understanding with real-world thought experiments and edge cases.
- ๐ Automated Study Journal: Transform your spoken debrief into structured Markdown study notes that capture core principles, simplified explanations, and important mechanical trade-offs.
- ๐ง Interactive Active-Recall Quizzes: Generate three quiz questions from each saved journal entry to test your understanding and reinforce retention.
- ๐ Focus Analytics and Daily Streaks: Track total study minutes, completed focus cycles, and daily consistency streaks.
- ๐พ Local Data Persistence: Store study notes and progress statistics in browser local storage, without external tracking for these features.
- ๐จ Minimal, Responsive Interface: A focused dark-themed interface with a centered voice interaction stage, a reactive speaking orb, a countdown dial, and straightforward controls.
- โ๏ธ Agent Provisioning and Configuration: Use a FastAPI backend, centralized Pydantic configuration, and an ElevenLabs SDK-based service to provision and update the conversational agent.
- ๐งช Automated Backend Tests: Include tests for configuration, credentials, API connectivity, and agent creation.
- ๐ Simple Local Development: Use the included Windows
start.batscript to launch the frontend and backend together, or start each service manually.
Here is how a typical learning session works:
- Focus: Choose a topic and start a 25-minute study session.
- Explain: When the timer ends, start a live voice conversation with Cube and explain the topic in your own words.
- Get challenged: Cube asks follow-up questions to help uncover gaps in your understanding.
- Consolidate: Save your debrief as structured Markdown study notes with three active-recall questions.
- Test yourself: Use the interactive quiz to check what you remember.
- Track progress: Review your study history, completed focus cycles, total study time, and daily streaks.
- Repeat: Take a short or long break and begin your next focus session.
The central idea is simple: don't just spend time studying. Spend time proving to yourself that you understand.
Demo
- Live application: https://curious-buddy.vercel.app/
- GitHub repository: https://github.com/rajanikant04/curiousBuddy
- Backend: FastAPI deployed on Render.
Open the live application, explore the study interface, and try the voice-based learning experience. Microphone permission and the configured ElevenLabs agent are required for voice conversations.
The repository also includes instructions for running the application locally.
Code
Explore the complete source code here:
The repository includes:
- React 19 and TypeScript frontend.
- Vite development and build tooling.
- Python and FastAPI backend.
- Centralized Pydantic configuration.
- ElevenLabs conversational agent provisioning and updating service.
- Live voice interaction using
@11labs/react. - Real-time conversation transcript handling.
- Responsive voice interface with a reactive speaking orb.
- Pomodoro focus timer with circular progress visualization.
- Custom topic selection and Web Audio API sound effects.
- Automated Markdown study journaling.
- Three-question active-recall quizzes.
- Focus analytics, daily streaks, and lifetime study-minute tracking.
- Browser local storage for journals and statistics.
- Automated backend tests.
- Windows startup script for frontend and backend.
- Environment-variable configuration and local setup instructions.
The project is released under the MIT License, and contributions are welcome.
How I Built It
I built curiousBuddy using modern web technologies, an API-driven backend, and a hosted conversational AI service.
Frontend
- React 19
- TypeScript
- Vite
@11labs/react- Web Audio API
- Browser local storage
Backend
- Python
- FastAPI
- Pydantic
- Uvicorn
- ElevenLabs Python SDK
AI Voice Experience
- ElevenLabs Conversational AI
- Custom-configured conversational agent named Cube
- Jessica voice for a playful, curious learning personality
- Real-time speech interaction and transcript streaming
Development and Deployment
- GitHub for source control and open-source collaboration.
- GitHub Copilot as an AI coding agent to assist with development.
- Vercel for frontend deployment.
- Render for backend deployment.
The architecture separates the user interface, backend configuration and agent provisioning, voice conversation, and study data.
The frontend connects to the conversational agent through ElevenLabs' React integration. The backend handles configuration and agent-provisioning functionality. Study journals and analytics are stored in browser local storage, keeping that application data on the user's device.
One of the most interesting parts was designing Cube's behavior. I wanted it to do more than act like a generic chatbot.
Its instructions are built around the Feynman Technique:
- Identify jargon and ask the student to explain it in plain language.
- Ask follow-up questions about why and how something works.
- Challenge explanations with simple real-world thought experiments and edge cases.
- Keep responses short, conversational, friendly, and focused on understanding.
I also built the timer, voice debrief interface, journal, quiz flow, and study analytics as parts of one continuous experience rather than separate utilities.
Why Does Open Innovation Matter?
I believe learning tools should be adaptable, transparent, and accessible to the people who use them.
Making curiousBuddy open source means other developers can inspect how the application works, adapt the learning workflow, customize Cube's behavior, and build new features without starting from scratch.
Using widely available frameworks such as React, TypeScript, and FastAPI keeps the application architecture approachable for contributors. GitHub also makes it easier for developers to share improvements, suggest features, report bugs, and collaborate on future enhancements.
There is an important distinction in the current implementation: the application code is open source, but its conversational AI relies on ElevenLabs' hosted service rather than an open-weight model running locally. The live voice experience therefore depends on an external provider and an internet connection.
I chose this approach to integrate a real-time conversational voice experience into the project. It also highlights an opportunity for future development: introducing open-weight models and alternative speech components could give users more control over inference, privacy, model selection, and operating costs.
For me, open innovation is not just about publishing code. It is about making it possible for others to understand, modify, replace, and improve the pieces that power an application.
The Lazy Payoff
The goal of curiousBuddy is to make studying more effective without making the learning process more complicated.
Instead of manually organizing every debrief, writing separate summaries, and preparing recall questions from scratch, learners can use the built-in journal and quiz workflow to consolidate their sessions.
Instead of wondering whether a study session was productive, they can explain the topic aloud and let Cube challenge their understanding.
The timer, journal, quizzes, and progress tracking also live in one application, reducing the need to switch between multiple tools.
I haven't measured time savings through a formal user study yet, so I won't claim a specific number of minutes saved. For now, the payoff is a simpler path from focused study to explanation, reflection, and review.
My favorite part? Cube doesn't let me hide behind complicated terminology. If I can't explain it simply, I still have work to do.
Prize Categories
- Best Use of ElevenLabs โ Integrated ElevenLabs Conversational AI to power Cube, a voice-based AI study companion that helps learners practice the Feynman Technique through real-time spoken conversations. Building this project also helped me learn more about ElevenLabs Agents, conversational agent configuration, voice integration, and real-time interactions.
- Render โ Deployed the FastAPI backend on Render, making the backend accessible beyond the local development environment.
- GitHub โ Used GitHub Copilot as an AI coding agent to assist with implementation, development, and improving the project.
Building curiousBuddy has been an opportunity to explore how voice AI can make learning more active, personal, and engaging.
I'd love to hear your thoughts: Would you prefer an AI study buddy that gives you the answer, or one that keeps asking questions until you truly understand it?
Try the live app at https://curious-buddy.vercel.app/, explore the GitHub repository, and feel free to contribute!
Top comments (0)