HackJudge is an AI-powered mock hackathon interview preparation application. It allows developers and hackathon participants to pitch their project slide decks, interact with specialized AI judge panels in real-time using voice activity detection, and receive diagnostic ATS-style performance rubrics to refine their hackathon pitches.
- Submit your project title, problem statement, solution description, key features, and technology stack.
- Submit your project deck/presentation (ppt).
- The AI analyzes these slides and project details to tailor its questions specifically to your project's architecture and domain.
-
Hackathon (Default): Simulates an experienced hackathon judge who evaluates projects from multiple perspectives, including innovation, technical implementation, product design, user experience, business potential, and overall impact.
-
Technical: Focuses on software engineering aspects such as system architecture, scalability, APIs, database design, security, performance, and implementation decisions.
-
Business: Evaluates the project's market potential, business model, revenue strategy, competitive landscape, target audience, and long-term scalability as a business.
-
Product: Assesses problem-solution fit, user experience, usability, feature prioritization, customer value, and overall product thinking.
-
AI/ML: Examines AI-specific aspects including model selection, data pipeline, prompt engineering, inference workflow, evaluation metrics, model limitations, and AI reliability.
- Speak naturally to the AI judge with real-time Deepgram Speech-to-Text (STT) integration.
- Automated, natural conversation turn-taking powered by Voice Activity Detection (VAD).
- Low-latency, authentic voice responses streamed in real-time chunks via ElevenLabs Speech Synthesis (TTS) over WebSockets.
- View comprehensive scores out of 10 for criteria like Innovation, Feasibility, and Q&A delivery.
- Save and navigate through multiple attempt histories horizontally on the dashboard.
- Update/delete projects or start new mock interviews to track your progress score trend.
- Framework: React 19, Vite
- Routing: React Router DOM
- Styling: Tailwind CSS
- Animations: Framer Motion
- Authentication: Firebase Client SDK
- Runtime: Node.js (ES Modules), Express
- Real-time communication: Raw Node.js WebSockets (
wslibrary) - LLM/AI Engine: Google GenAI (Gemini SDK -
gemini-3.1-flash-lite) - Voice Generation: ElevenLabs TTS API (Real-time audio chunk streaming)
- Speech Recognition: Deepgram STT (Real-time WebSocket transcription API)
- Database & Storage: Firebase Admin SDK (Firestore)
For a detailed explanation, see Architecture.md.
VITE_BACKEND_URL=http://localhost:8000
VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
VITE_CLOUDINARY_PRESET_NAME=your_preset_name
VITE_BACKEND_WS_URL=ws://localhost:8000PORT=8000
EXPRESS_FRONTEND_URL=http://localhost:5173
GEMINI_API_KEY=your_google_gemini_api_key
GEMINI_MODEL=gemini-3.1-flash-lite
ELEVENLABS_API_KEY=your_elevenlabs_api_key
ELEVENLABS_VOICE_ID=your_elevenlabs_voice_id
DEEPGRAM_API_KEY=your_deepgram_api_key
# Firebase Admin configuration requires serviceAccount.json at /server/serviceAccount.jsonHackJudge relies on three core Firestore collections:
projects: Stores the submitted hackathon project details (Title, Problem Statement, Description, Tech Stack, feature list).interviews: Keeps track of the live conversation logs (interviewer question / candidate answer) and status metadata.feedback: Stores final evaluations containing conversation summaries (convosummary), category breakdowns (categoryfeedbackfor problem understanding, solution clarity, innovation), detailed Q&A feedback lists (convofeedback), and relationship IDs (projectId,userId,interviewId).
Clone this repository and install dependencies for both the frontend and backend folders:
# Install frontend client dependencies
cd client
npm install
# Install backend server dependencies
cd ../server
npm installRun the development servers concurrently:
# Start backend server (starts on port 8000)
cd server
npm run dev
# Start frontend dev server (starts on http://localhost:5173)
cd ../client
npm run dev