Skip to content

Rahbir1518/hackhive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nervy

Nervy is an AI-powered interview coach that helps you practice behavioral interviews with real-time feedback on verbal and non-verbal skills. Practice with structured questions, get live analysis on eye contact, posture, and expression, and receive AI recommendations to improve.


Features

  • Behavioral interview practice: Choose from 6 core topics and 20+ subtopics. Answer with STARR-style responses and configurable question count and timer.
  • Real-time video analysis: WebSocket-powered analysis tracks eye contact, posture, facial expression, and confidence using MediaPipe face and pose models. Scores and live feedback appear during recording.
  • Audio analysis: Filler-word detection and clarity scoring. Recordings are processed after each answer.
  • AI recommendations: Google Gemini generates personalized improvement tips from your performance and transcript.
  • Sign Captions: Real-time ASL-to-text captions from your webcam for interview accessibility. Supports ASL alphabet, Yes/No, numbers, and common interview signs.
  • Authentication: Sign in and sign up via Clerk.

Tech Stack

Layer Stack
Frontend Next.js 16, React 19, Tailwind CSS, Clerk, Supabase client
Backend FastAPI, WebSockets, Uvicorn
Analysis MediaPipe (face, pose), OpenCV, custom detection logic
Sign (ASL) PyTorch, Hugging Face (ResNet or LSTM on landmarks), hand/pose models
AI Google Gemini (question generation, recommendations)

Project Structure

hackhive/
  backend/           # FastAPI + WebSocket server
    server.py        # Main API, /ws/interview and /ws/sign-captions
    detection.py     # InterviewConfidenceDetector (eye, posture, expression)
    audio_detect.py  # Filler words, clarity
    sign_pipeline.py # ASL caption pipeline
    *.task           # MediaPipe face/pose/hand assets
    requirements.txt
  frontend/          # Next.js app
    app/
      (auth)/        # Clerk sign-in, sign-up
      (dashboard)/   # dashboard, question, interview, analyze, sign-captions
      page.tsx       # Landing
    components/ui/   # Navbar, etc.

Prerequisites

  • Python 3.10+ and pip
  • Node.js 18+ and npm
  • Google Gemini API key (for AI questions and recommendations)
  • ffmpeg / ffprobe (for audio; often via brew install ffmpeg)
  • Clerk (and optionally Supabase) configured via env for the frontend

Setup

1. Backend

cd backend
pip install -r requirements.txt

Create backend/.env or backend/.env.local (or .env / .env.local in the repo root or frontend/; the server checks several locations):

GEMINI_API_KEY=your_gemini_api_key
# Optional if the default model 404s:
# GEMINI_MODEL=gemini-2.0-flash

To list models available for your key:

python list_gemini_models.py

Start the server:

python server.py

Backend runs at http://localhost:8000.

2. Frontend

cd frontend
npm install

Add frontend/.env.local with Clerk (and Supabase if used), e.g.:

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=...
CLERK_SECRET_KEY=...
# NEXT_PUBLIC_SUPABASE_URL=...
# NEXT_PUBLIC_SUPABASE_ANON_KEY=...

Run the dev server:

npm run dev

Frontend runs at http://localhost:3000.


Usage

  1. Dashboard (/dashboard): Pick a topic, subtopic, number of questions, and answer length. Start a practice run.
  2. Question (/question): Read the question, use the prep countdown, then you are taken to the recording step.
  3. Interview / Analyze: Camera and microphone record your answer. The app streams frames to the backend over WebSocket. You see live scores for eye contact, posture, expression, and confidence. When the timer ends, you get an overall result plus audio analysis and AI recommendations.
  4. Sign Captions (/sign-captions): Turn on the camera and start the session. Signs are recognized and shown as text in near real time for accessibility.

Troubleshooting

  • Camera or mic not working: Grant browser permissions for camera and microphone.
  • Backend / WebSocket errors: Ensure the Python server is running on port 8000 and CORS allows http://localhost:3000 (and http://127.0.0.1:3000).
  • No AI suggestions or 404 for Gemini: Set GEMINI_API_KEY in .env or .env.local. If you get a model 404, run python list_gemini_models.py in backend/ and set GEMINI_MODEL to a model that works for your key.
  • ffmpeg / pydub errors: Install ffmpeg (e.g. brew install ffmpeg on macOS) and ensure ffprobe and ffmpeg are on PATH or in common Homebrew locations.

License

See LICENSE in this repository.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors