-
-
Report: your teaching moves benchmarked against 566 real classroom lessons (TalkMoves).
-
Under the hood: 5 parallel Nemotron Nano calls (thinking off), a moderator, Nemotron Ultra verdicts (thinking on).
-
A measured 3-minute rehearsal: 73 Nemotron calls, 0 fallbacks, about $0.0047 at Token Factory list prices.
-
Alex's real verdict from Nemotron 3 Ultra: partly answered, because of the jargon 'loss surface curves'.
-
Live session: Alex (Nemotron 3 Nano) raises a hand, and the question quotes what the presenter said.
Inspiration
It's 11 p.m. and your presentation is in the morning. You rehearse alone, to your bedroom wall, so you never find out where people get lost or what they'd ask. That's worse if you don't have a study group, if you get nervous in front of a crowd, or if English is your second language. Practicing in front of an audience works, but most people don't have one on demand.
What it does
YapLab is a practice classroom of AI students that talks back. Upload slides (or use a demo deck) and start talking. Five students listen at once: a confused first-year, a skeptical professor, an ESL student, a distracted student and a domain expert.
- They react live. Every tick, each student updates how well it's following, and why.
- They raise hands and ask out loud. Each student has its own voice. A moderator gives one student the floor at a time, and every question must quote something you actually said or showed; ungrounded questions are rejected.
- They judge your answers. After you answer, the student marks it answered, partly answered or dodged, and says why.
- You get a report: pace and filler words, every question with each student's verdict, and your teaching moves (checking in, asking why, asking for precision) next to real teachers.
In the session in our video, Alex marked one of our answers partly answered because it used the jargon "loss surface curves". Ana then asked about that exact phrase in Q&A. That's the feedback you never get from a wall.
How we built it: NVIDIA Nemotron on Nebius Token Factory
Every model call goes to NVIDIA Nemotron through Nebius Token Factory's OpenAI-compatible API, routed by role:
| Role | Model | Reasoning |
|---|---|---|
| 5 listener reactions in parallel, every tick | nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B |
off |
| Rolling talk summary | nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B |
off |
| Answer verdict + optional follow-up | nvidia/Nemotron-3-Ultra-550b-a55b |
on |
- Fast where the room needs speed. Nano passed 30/30 listener-schema checks under five-way concurrency, with p95 ≈ 1.0 s against a 10 s per-listener deadline.
- Reasoning only where judgment matters. Deciding "did they actually answer, or dodge?" runs off the tick path on Ultra with thinking on.
- Cheap. A measured 3-minute live session made 73 Nemotron calls with 0 fallbacks for about $0.0047 in inference at Token Factory list prices (voice and hosting excluded).
- Honest about failures. Every request is metered (tokens, latency, cost per tier), and any fallback to our offline stub is logged with provider, model, tier and reason, so we can prove the room really runs on Nemotron.
Stack: FastAPI + asyncio orchestrator (parallel fan-out with per-listener timeouts, a moderator with warm-up and one-hand-at-a-time rules), React + Vite frontend with a WebSocket live bridge, ElevenLabs Scribe for live speech-to-text and ElevenLabs TTS for a distinct voice per student. It's deployed on a VM behind Caddy, with per-visitor and daily limits, idle cutoffs and session cleanup, so the public demo survives the judging window.
Data science: a TF-IDF + logistic-regression classifier trained on TalkMoves (150,644 expert-labeled teacher sentences from 567 K-12 math lessons; 73.2% accuracy, 0.535 macro-F1 on the official test split), plus bootstrap confidence intervals for the real-teacher benchmarks. The data powers the report only. It doesn't train the agents.
Challenges we ran into
- Reasoning is on by default. With JSON mode and a 400-token cap, all five Nemotron models we probed returned
finish_reason: lengthand broken JSON. Explicitly sendingchat_template_kwargs: {enable_thinking: false}for the fast tier fixed it. The reasoning tier gets a bigger budget instead. - A room, not a chatbot. Students had to wait until you'd introduced the topic, avoid repeating each other, and only ask about things you actually said.
- The mic hearing the students. We mute recognition while a student's question plays, so the room doesn't transcribe itself.
- Five parallel calls inside a tick. Per-listener deadlines, no SDK retries on the hot path, and visible fallbacks keep the room responsive.
Accomplishments that we're proud of
A room that behaves like a class: one hand at a time, questions that quote you, and verdicts that tell you which words lost someone. And it's cheap enough (under half a cent per rehearsal) that anyone can practice as often as they need.
What we learned
Route models by role. A fast model in parallel for the live room, plus a reasoning model only where judgment matters, beats one big model for everything. Set reasoning explicitly per call. And grounding every question in the speaker's own words is what makes the feedback trustworthy.
What's next
Moving Pitch and Interview modes onto the live pipeline (today they're scripted demos), custom audiences ("my thesis committee"), and benchmarks from college lectures, since TalkMoves is K-12 math.
First built at BU DS+X (Oct 24–25, tag prototype-oct25). Everything Nemotron-related was built after that: https://github.com/yaplab-ai/YapLab/compare/prototype-oct25...main
Built With
- asyncio
- caddy
- elevenlabs
- fastapi
- google-cloud
- manim
- nebius-token-factory
- nvidia-nemotron
- python
- react
- remotion
- scikit-learn
- vite
- websockets
Log in or sign up for Devpost to join the conversation.