Inspiration
Automotive employers need more confident technicians, and RMS Technical Training already invests heavily in Skool-based video. Passive video alone does not stick—especially for diagnostics where learners need to ask, test, and probe. We were inspired by the hackathon brief’s call to reinvent automotive training: meet learners where they already are (Skool), multiply every lesson with AI-generated reinforcement, and make abstract concepts like voltage drop and PWM faults felt, not just watched.
What it does
RMS+ is a Chrome Manifest V3 side panel that attaches to RMS Technical Training Skool classroom lessons. Trainers upload lesson video plus transcript (SRT); learners get a unified stack in one place:
- Talk to AI — ElevenLabs Conversational AI tutor grounded in the lesson transcript (dynamic variables), with mic UX tailored to side panels.
- Generate / take quiz — Gemini produces transcript-grounded MCQs with strict JSON schemas; trainers edit; learners get live scoring.
- Generate / watch short content — Vertical recap clips (scene plan from Gemini, Turbo TTS, optional Gemini Flash Image illustrations) with in-browser playback and MP4 export.
- Generate / run interactive circuit — Plain-English prompt → strict CircuitModel JSON → deterministic simulator with virtual multimeter, fault injection, probe log, and sticky annotations.
Everything is lesson-scoped with IndexedDB persistence and classroom route detection—no separate app or LMS migration.
How we built it
- Extension shell: React 19 + Vite 6 + CRXJS, Tailwind 4, TanStack Query; MV3
sidePanel,tabs,scripting,storage. - AI: Google Gemini 2.5 Flash for quiz, scene-plan DSL, circuit JSON, and Gemini 2.5 Flash Image for whiteboard-style illustrations; ElevenLabs for Conversational AI and Turbo v2.5 TTS (shared voice ID).
- Skool / Mux: Content script walks Shadow DOM for player metadata; MAIN-world script works around transcript / signed-URL constraints where naive content-script fetch fails.
- Simulation: Custom TypeScript flood-fill engine over circuit graphs—Gemini generates the model; the app simulates deterministically (no SPICE dependency).
- Export: Canvas + Web Audio + MediaRecorder for downloadable recap videos; self-hosted fonts and ElevenLabs audio worklets to satisfy MV3 CSP.
Challenges we ran into
- Chrome side panel + microphone:
getUserMediaprompts are unreliable or silently dismissed in side panels—we added a small permission popup (permission.html) so learners grant mic access once. - MV3 CSP vs ElevenLabs: Default worklet loading paths were blocked—we self-hosted worklets as
web_accessible_resourcesand pass explicitworkletPathsinto the SDK. - Transcript access on Skool / Mux: Cross-origin and signed URL behavior made naive transcript capture brittle—we invested in an in-page fetch strategy and documented limits (e.g. relying on SRT upload for the demo path).
- Structured AI outputs: Avoiding markdown soup—every Gemini path uses typed
responseSchema/ JSON contracts plus validation and safe fallbacks (e.g. demo circuit). - Shipping five hackathon categories in one surface: Keeping Creator vs User flows clear, per-lesson storage migrations, and consistent UX without fragmenting into multiple apps.
Accomplishments that we're proud of
- One product, five brief categories (interactive platform, AI tutor, wiring/diagnostics visuals, gamified fault finding, content creation)—demonstrable end-to-end on a real Skool classroom URL.
- Generative circuit pipeline: English → validated JSON → probe-able schematic with realistic meter copy and fault narratives—aligned with real workshop diagnostics pedagogy.
- Short-form studio in the panel: Scene DSL + illustration + voice + export—not a slide deck, a workflow trainers could actually reuse.
- Production-minded extension engineering: agent provisioning cache, pre-warm for user-gesture chains, IndexedDB migrations, and honest documentation of remaining gaps (e.g. Scribe wiring).
What we learned
- Separate “generation” from “execution”: LLMs are excellent at producing constrained artifacts (quiz JSON, circuit models, scene plans); the simulator and graders should stay deterministic for trust and repeatability.
- Platform quirks dominate polish time: Side panels, CSP, and third-party video hosts ate more calendar than feature UI—budgeting for “Chrome physics” matters as much as model prompts.
- Grounding beats generic chat: Passing the transcript as structured context (and enforcing “say you don’t know”) turns generic tutors into lesson tutors.
- Trainer-in-the-loop wins: Editable quizzes and regeneratable assets respect curriculum ownership and reduce AI risk.
What's next for RMS+
- Wire ElevenLabs Scribe end-to-end so uploaded lesson video produces timed transcripts automatically (today’s demo relies on manual
.srt). - Deeper Skool integration where policy allows—richer transcript sync, cleaner lesson metadata, optional cohort analytics.
- More circuit primitives & CAN-oriented templates—expand component enums and fault libraries toward OEM-style diagrams while keeping the strict JSON contract.
- Learner analytics & spaced repetition—surface quiz history, clip replays, and probe logs as lightweight progress signals for trainers.
- Optional AR/WebXR path—reuse CircuitModel as the single source of truth for immersive diagnostics drills (called out in the brief as the natural evolution beyond the side panel).
Log in or sign up for Devpost to join the conversation.