Education Track

Inspiration

Studying from lecture notes or dense textbooks can be tedious and ineffective. We wanted to make learning more engaging by turning static study material into something interactive and social. Jeopardy’s fast pace and category-based structure make it memorable and fun, so we asked: what if any PDF could instantly become a Jeopardy-style study game?

What It Does

JeoParody transforms any uploaded PDF into a fully playable Jeopardy-style game in under 30 seconds.

Players upload a document, enter a name, and immediately join a multiplayer game—no accounts required. AI-generated categories and clues are tailored to the document’s content, with real-time synchronization across players. The experience includes score tracking, professional voice announcements powered by ElevenLabs, Final Jeopardy with wagering, and the classic Jeopardy board layout.

How We Built It

  • Frontend: Next.js 16 (App Router), Tailwind CSS 4
  • Backend & Realtime: Supabase (PostgreSQL + Realtime subscriptions)
  • AI: Google Gemini for PDF understanding, clue generation, and answer grading
  • PDF Processing: pdfjs-dist for client-side text extraction
  • Validation: Zod schemas to enforce strict game board structure
  • Audio: ElevenLabs Text-to-Speech API for high-quality voice announcements

The system uses HTTP-only cookies for lightweight session management, Supabase Realtime channels for live state synchronization, and a self-healing AI pipeline that retries with corrective prompts when Gemini output fails validation.

Challenges We Faced

  • Vercel upload limits: Large PDFs exceeded serverless request size limits. We solved this by moving PDF parsing entirely to the client and sending only extracted text to the server.
  • Real-time synchronization: Keeping all players perfectly in sync required careful coordination of optimistic UI updates, subscriptions, and fallback polling.
  • LLM reliability: Gemini occasionally returned malformed or incomplete boards. We enforced strict schema validation and implemented automatic “fix prompt” retries.
  • Turn-based game logic: Managing player turns, skips, incorrect answers, and the transition to Final Jeopardy required a robust state machine design.

Accomplishments

  • Successfully generates a complete, playable Jeopardy game from any PDF in under 30 seconds
  • High-quality, thematically accurate AI-generated categories and clues
  • Smooth real-time multiplayer experience, even with players joining or leaving mid-game
  • Full Jeopardy feature set with zero authentication friction
  • Natural, engaging voice announcements using ElevenLabs

What We Learned

  • Client-side processing can effectively bypass serverless constraints
  • LLMs need strong guardrails—validation and retries are essential for production use
  • Real-time multiplayer apps require careful handling of race conditions and shared state
  • Supabase Realtime enables powerful live experiences with minimal infrastructure overhead

What’s Next

  • Daily Double clues with wagering
  • Adjustable difficulty levels
  • Buzzer-based gameplay mode
  • Game history and leaderboards
  • Support for additional formats (Word, PowerPoint, YouTube transcripts)
  • Native iOS and Android apps
  • Classroom mode with teacher dashboards

Built With

  • elevenlabs
  • gemini
  • next.js
  • supabase
  • tailwindcss
  • zod
Share this project:

Updates