A comprehensive AI-powered platform for interview analysis with skill assessment, Q&A grading, and detailed insights. Also supports general video transcription and formatting.
- Skill Assessment: Evaluate specific skills with confidence scores and evidence
- Q&A Extraction: Automatic extraction and grading of interview questions and answers
- Performance Insights: Detailed analysis including communication clarity, technical depth, and hiring recommendations
- Structured AI Responses: Uses OpenAI's structured output for consistent, reliable analysis
- Multi-format Support: MP3, WAV, M4A, MP4, AVI, MOV, WebM, MKV
- YouTube Integration: Direct URL processing for YouTube videos
- AI-Powered Formatting: Clean, readable transcript formatting
- Chunked Processing: Handles large files by splitting into manageable chunks
- OpenAI: Whisper for transcription, GPT-4 for analysis (recommended for structured responses)
- Google Gemini: Alternative AI provider for basic formatting
- Install Dependencies
pip install fastapi uvicorn python-multipart openai google-generativeai yt-dlp ffmpeg-python python-dotenv- Environment Configuration
Create a
.envfile:
OPENAI_API_KEY=your_openai_api_key_here
GEMINI_API_KEY=your_gemini_api_key_here # Optional- Run the FastAPI Server
python main.py
# Server will start on http://localhost:8000- Navigate to Frontend Directory
cd frontend- Install Dependencies
npm install- Environment Configuration
Create a
.env.localfile:
NEXT_PUBLIC_API_URL=http://localhost:8000- Run the Development Server
npm run dev
# Frontend will start on http://localhost:3000Comprehensive interview analysis with skill assessment and insights.
Parameters:
file: Audio/video file (multipart/form-data)skills_to_assess: Comma-separated skills list (form field)job_role: Job role for context (form field, default: "Software Developer")company_name: Company name for context (form field, default: "Company")ai_provider: AI provider (form field, default: "openai")
Example Request:
curl -X POST "http://localhost:8000/analyze-interview" \
-F "file=@interview.mp3" \
-F "skills_to_assess=Python,React,Problem Solving,Communication" \
-F "job_role=Senior Developer" \
-F "company_name=Tech Corp"Response Structure:
{
"filename": "interview.mp3",
"raw_transcript": "...",
"formatted_transcript": "...",
"ai_provider": "openai",
"file_chunks": 2,
"skill_assessments": [
{
"skill": "Python",
"level": "Advanced",
"confidence_score": 85,
"evidence": "Demonstrated strong knowledge...",
"recommendations": "Consider exploring..."
}
],
"questions_and_answers": [
{
"question": "Tell me about your Python experience",
"answer": "I have been working with Python...",
"grade": "Good",
"score": 78,
"feedback": "Good technical explanation...",
"key_points_covered": ["Experience", "Projects"],
"areas_for_improvement": ["More specific examples"]
}
],
"interview_insights": {
"overall_performance_score": 75,
"communication_clarity": 80,
"technical_depth": 70,
"problem_solving_ability": 85,
"confidence_level": 75,
"strengths": ["Clear communication", "Strong technical knowledge"],
"weaknesses": ["Could provide more examples"],
"hiring_recommendation": "Recommend for hire with considerations...",
"next_steps": ["Technical deep-dive interview", "Reference checks"]
},
"analysis_summary": "Executive summary of the analysis..."
}Same as above but accepts a video URL instead of file upload.
Parameters:
video_url: Video URL (YouTube, etc.)skills_to_assess: Comma-separated skills listjob_role: Job role for contextcompany_name: Company name for contextai_provider: AI provider
Extract and format transcript from video URL.
Upload audio file for transcription and formatting.
- Expert: Demonstrates mastery and deep understanding
- Advanced: Strong knowledge with practical application
- Intermediate: Good understanding with some gaps
- Beginner: Basic knowledge, needs development
- Not Demonstrated: Skill not shown in the interview
- Excellent (90-100): Outstanding answer with depth and clarity
- Good (70-89): Solid answer covering key points
- Average (50-69): Adequate answer with room for improvement
- Below Average (30-49): Weak answer missing key elements
- Poor (0-29): Inadequate or incorrect answer
The system evaluates candidates across multiple dimensions:
- Overall Performance: Comprehensive score (0-100)
- Communication Clarity: How well the candidate communicates
- Technical Depth: Level of technical knowledge demonstrated
- Problem Solving: Ability to think through problems
- Confidence Level: Candidate's confidence and self-assurance
- Clear Audio Quality: Ensure good audio quality for better transcription
- Specific Skills: List specific, relevant skills for assessment
- Proper Context: Provide accurate job role and company information
- Interview Structure: Well-structured interviews yield better analysis
- Technical: "Python, JavaScript, React, SQL, AWS, Docker"
- Soft Skills: "Communication, Leadership, Problem Solving, Teamwork"
- Domain-Specific: "Machine Learning, Data Analysis, System Design"
- Currently optimized for English-language interviews
- Works best with structured interview formats
- Requires OpenAI API for comprehensive analysis features
- Analysis quality depends on audio quality and interview content
The API includes comprehensive error handling:
- File format validation
- Transcript quality validation
- Skill count limits (max 20 skills)
- AI provider compatibility checks
- Structured response validation
- Files are processed temporarily and cleaned up automatically
- No permanent storage of audio/video files
- API keys should be secured and rotated regularly
- Consider rate limiting for production deployments
- Define new Pydantic models in
main.py - Create analysis functions using OpenAI structured responses
- Update the response models to include new data
- Add frontend components to display new insights
The system uses carefully crafted prompts for each analysis type. You can customize these prompts in the respective functions to better suit your interview style or requirements.
Contributions are welcome! Please ensure:
- Add appropriate error handling
- Include type hints and documentation
- Test with various file formats and interview styles
- Follow the existing code structure and patterns
MIT License - see LICENSE file for details.