Inspiration

We went up to our professors and our TAs and asked for pain points in the process. The first few conversations we had, we were just talking about grading and doing unnecessary work and optimizing things from the teacher's standpoint.

But then we decided to talk to our CS 109 professor, Juliette Woodrow, who actually does research on AI and learning. Some of her papers feature AI feedback on problem sets and more one-on-one personalized learning.

So we wanted to make a platform that would make online learning more accessible for both the student and the teacher. One of our teammates, Luke, had this brilliant scenario: in lecture, you're confused — what do you do? You ask the guy next to you. But when you're listening to a Zoom lecture or watching a YouTube video to learn something, you don't have that person next to you.

So we made Juliette, in the spirit of Valentine's Day — you're Romeo, and you have your Juliette next to you to answer your questions.

What it does

Juliette can ingest YouTube videos or be a live Zoom companion to:

  • Explain topics with simple, digestible answers and comprehension-check questions
  • Generate animations in beautiful Manim to visualize concepts
  • Give you personalized practice problems to get you interested in the work — like if you were learning probability and you were interested in sports, it would give you a sports statistics question

The teacher has a dashboard where she or he can see what questions the students are asking, and therefore get feedback on what areas need the most improvement.

Through this, we hope we can make online learning more enjoyable for both the student and the teacher.

How we built it

We built Juliette on Next.js 15 with TypeScript and Tailwind CSS, backed by Supabase for our database, auth, and storage. The AI pipeline uses OpenAI Whisper for transcription, GPT for answering questions across all three modes, and embeddings for retrieving the right transcript chunks. Animations are rendered through a Docker-based Manim worker using predefined templates filled in by the LLM. For the live classroom experience, we integrated the Zoom Apps SDK** to embed Juliette as an in-meeting Q&A panel.

Challenges we ran into

  • Chunking transcripts into meaningful 45–90 second segments with accurate timestamps so the AI retrieves the right context for each question
  • Constraining Manim animation generation to predefined templates rather than arbitrary code — balancing creative flexibility with reliability
  • Building a real-time teacher dashboard that surfaces actionable question trends without overwhelming instructors
  • Making the Zoom panel feel native and responsive inside a meeting environment

Accomplishments that we're proud of

  • The personalized practice problem generation — seeing it tailor a probability question around sports or music based on a student's interests feels genuinely engaging
  • Getting the full pipeline working end-to-end: video upload → transcription → chunked retrieval → three distinct AI response modes
  • The teacher dashboard providing real, useful insight into where students are struggling
  • Shipping a working Zoom integration as an in-meeting panel

What we learned

Talking to Professor Woodrow taught us that the best AI learning tools don't replace teachers — they create feedback loops. Juliette helps students get unstuck in the moment, and simultaneously gives instructors visibility into where their class is struggling. We learned to design for both sides of the classroom, not just one.

What's next for Juliette

  • Adding vector embeddings for smarter, semantic transcript retrieval beyond keyword matching
  • Expanding the Manim template library so Juliette can visualize a wider range of concepts
  • Supporting live multi-student sessions where the teacher can see questions aggregated in real time during a Zoom lecture
  • Integrating with Canvas and other LMS platforms so Juliette fits naturally into existing course workflows

And so goes the story of our project, Juliette.

Built With

Share this project:

Updates