An intelligent multi-technology interview platform designed to facilitate structured technical interviews across Ruby on Rails, Node.js, React, and Python. Features AI-powered insights, comprehensive feedback, and automatic candidate assessment.
- Ruby on Rails: 20 questions (6 Junior, 9 Mid, 5 Senior)
- Node.js: 20 questions (3 Junior, 11 Mid, 6 Senior)
- React: 12 questions (2 Junior, 6 Mid, 4 Senior)
- Python: 20 questions (4 Junior, 10 Mid, 6 Senior)
- Questions automatically sorted by difficulty level
- Technology selection on home page
- Sub-Questions Support: Break down complex topics into multiple scorable parts
- Individual scoring for each sub-question
- Automatic average calculation for parent question
- Visual indicators (tree icon π³) for questions with sub-questions
- Code Examples: Each question includes relevant code snippets
- Level Badges: Visual indicators for Junior, Mid, and Senior questions
- Dynamic Question Addition: Add new questions during interviews
- Clean Sidebar Navigation: Question list with status indicators
- β Green checkmark for answered questions
β οΈ Orange checkmark for "without knowledge" (0%)- π³ Tree icon for questions with sub-questions
- Selected question highlighted with green background
- Dual Panel Layout:
- Left: Question, expected answer, and code examples
- Right: Scoring, comments, and evaluation tools
- Scoring Options:
- 0-100% slider for regular questions
- Individual scoring for sub-questions
- "Without Knowledge" button (automatically sets 0% with feedback)
- Code Editor Integration:
- Generate unique shareable links for candidates
- 20-character hash format:
XXXXX-XXXXX-XXXXX-XXXXX - Auto-save every 10 seconds
- Visual auto-save indicators
- Image support in code editor
- Comments & Feedback: Add detailed notes for each response
- Open-Text Feedback Form covering:
- Communication skills and soft skills
- Technical level and experience
- Autonomy and work style
- Project experience
- Learning and growth mindset
- Leadership skills
- Client management
- Strengths and areas for improvement
- Runtime Revolution fit
- Hiring decision and recommended level
- General interview summary
- Required Field Validation: Must provide feedback to finish interview
- AI-Powered Transformation: Converts notes into professional Q&A format
- Regeneration Options:
- Retry button on failure
- Regenerate button for new AI interpretations
- Remove individual Q&A items
- General Feedback Analysis: Transforms free-form notes into structured Q&A
- Technical Assessment:
- Areas for improvement identification
- Strengths analysis
- Specific learning resources
- Professional Assessment:
- Soft skills evaluation
- Runtime Revolution culture fit
- Career development path suggestions
- Overall hiring recommendation
- Configurable: API key stored in environment variables
- 8-Level Assessment System:
- Perfect Senior (100%)
- Solid Senior (β₯90%)
- Beginning Senior (β₯75%)
- Mid Going to Senior (β₯60%)
- Solid Mid-Level (β₯80% mid)
- Beginner Mid-Level (β₯60% mid)
- Junior Going to Mid-Level (β₯70% junior)
- Junior Developer (entry level)
- Flexible Assessment: Based only on answered questions (works with any number)
- Visual Statistics:
- Average score across all responses
- Questions answered count
- Level breakdown (Junior/Mid/Senior performance)
- General Feedback Display:
- AI-transformed Q&A format
- Removable items
- Regeneration capability
- Export Options: Download complete report as text file
- Sub-Questions Breakdown: Detailed view of all sub-question scores
- Clean OpenAI-Inspired Design:
- Lots of whitespace
- Subtle borders
- Minimal color palette
- Responsive Layout: Works on desktop and tablet
- Material-UI Components: Professional and polished
- Real-Time Updates: Instant feedback on all actions
- Visual Progress Tracking: Progress bar and status indicators
- Node.js (v20.18.0 or higher)
- Yarn (v1.22.0 or higher)
- Navigate to project directory:
cd interviews-agent- Install dependencies:
yarn install- Configure OpenAI API (Required for AI features):
# Create .env file
echo "VITE_OPENAI_API_KEY=your_openai_api_key_here" > .envImportant: AI features (general feedback transformation and AI insights) require an OpenAI API key. Get one at https://platform.openai.com/api-keys
- Start development server:
yarn dev- Open browser at
http://localhost:5173
- Choose from Ruby on Rails, Node.js, React, or Python
- Each technology has its own curated question set
- Technology-specific assessment criteria
- Navigate questions using the sidebar
- View question details, expected answers, and code examples
- Score responses with the slider (0-100%)
- For questions with sub-questions:
- Score each sub-question individually
- Parent score calculated automatically
- Use "Without Knowledge" for topics candidate doesn't know
- Add comments and feedback for each question
- Generate code editor links for practical exercises:
- Click "Generate Code Editor Link"
- Share 20-character hash link with candidate
- Code auto-saves every 10 seconds
- Submitted code appears in final report
- Click "General Feedback" button in sidebar
- Fill in qualitative observations about:
- Communication and soft skills
- Technical abilities and experience
- Autonomy and work style
- Leadership and client management
- Overall fit and hiring recommendation
- At least one field required to finish interview
- Free-form text for maximum flexibility
The comprehensive report includes:
- Candidate Level Assessment: Automatic 8-level evaluation
- Performance Statistics: Average score, questions answered, level breakdown
- General Interview Feedback:
- AI-transformed Q&A format
- Remove unwanted items
- Regenerate for different interpretations
- AI-Powered Insights: Technical + professional analysis
- Detailed Question Responses: All answers with scores and comments
- Sub-Questions Breakdown: Individual sub-question performance
- Code Submissions: Candidate's code for each exercise
- Export Option: Download complete report
- Click "Start New Interview" to return to home page
- Select same or different technology
- All previous data cleared
The system evaluates candidates based on:
- Questions Answered: Only answered questions count (flexible system)
- Level Performance:
- Junior questions (fundamentals)
- Mid questions (practical application)
- Senior questions (advanced concepts, architecture)
- Weighted Scoring: Higher weight on matching level questions
- Holistic View: Technical scores + general feedback
- Perfect Senior - 100% on all questions
- Solid Senior - β₯90% senior, β₯85% mid/junior
- Beginning Senior - β₯75% senior, β₯75% mid/junior
- Mid Going to Senior - β₯60% senior, β₯70% mid/junior
- Solid Mid-Level - β₯80% mid, β₯75% junior
- Beginner Mid-Level - β₯60% mid, β₯70% junior
- Junior Going to Mid - β₯70% junior, β₯50% mid
- Junior Developer - Entry level understanding
- Frontend: React 18+ with Vite 7
- UI Framework: Material-UI (MUI) v6
- Styling: Emotion CSS-in-JS
- Icons: Material-UI Icons
- AI: OpenAI GPT-4
- Package Manager: Yarn
- Build Tool: Vite
interviews-agent/
βββ src/
β βββ components/
β β βββ HomePage.jsx # Technology selection
β β βββ InterviewPage.jsx # Main interview UI
β β βββ ReportPage.jsx # Results and assessment
β β βββ AddQuestionDialog.jsx # Dynamic question addition
β β βββ GeneralFeedbackDialog.jsx # Feedback collection form
β β βββ CodeEditor.jsx # Shareable code editor
β β βββ AIInsights.jsx # OpenAI integration
β βββ data/
β β βββ questions_rails.js # Ruby on Rails questions
β β βββ questions_node.js # Node.js questions
β β βββ questions_react.js # React questions
β β βββ questions_python.js # Python questions
β βββ App.jsx # Main app component
β βββ main.jsx # Entry point
β βββ index.css # Global styles
βββ .env # Environment variables (gitignored)
βββ .env.example # Environment template
βββ package.json
βββ vite.config.js
βββ README.md
Edit the appropriate question file in src/data/:
{
id: 21,
category: "Advanced Topic",
level: "senior",
title: "Short Title",
question: "Your question here?",
correctAnswer: "Expected answer...",
codeExample: `// Code example here
const example = 'code';`,
image: "https://example.com/image.png", // Optional
hasSubQuestions: true, // Optional
subQuestions: [ // Optional
{
id: 2101,
question: "Sub-question 1?",
correctAnswer: "Answer...",
codeExample: `// Sub-question code`
}
]
}Edit getCandidateLevel() in src/components/ReportPage.jsx to adjust:
- Level thresholds
- Descriptions
- Required question counts
- Weighted scoring logic
Modify theme in src/App.jsx:
const theme = createTheme({
palette: {
primary: { main: '#10a37f' },
secondary: { main: '#8661c5' },
},
typography: {
fontFamily: '"Inter", "Segoe UI", sans-serif',
},
});yarn buildyarn previewDeploy the dist/ folder to your hosting service (Vercel, Netlify, etc.)
# Required for AI features
VITE_OPENAI_API_KEY=sk-proj-...
# Optional: Add custom configuration
VITE_APP_TITLE=Interview AgentMIT License - Feel free to use for your interview processes
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Prepare: Review questions before the interview
- Adapt: Use "Add Question" to ask follow-ups
- Document: Use comments field extensively
- General Feedback: Fill immediately after interview while fresh
- Code Exercises: Share editor links for practical assessment
- Review AI Insights: Use as additional perspective, not sole decision
- Export Reports: Save for future reference and comparison
- Check
.envfile exists with validVITE_OPENAI_API_KEY - Restart dev server after adding
.env - Verify API key at https://platform.openai.com/api-keys
- Ensure localStorage is enabled in browser
- Check that hash format is 20 characters (XXXXX-XXXXX-XXXXX-XXXXX)
- Clear browser cache if issues persist
- Check browser console for errors
- Verify localStorage has space available
- Ensure code field is not empty (only saves with content)
Built for Runtime Revolution Technical Interviews π
For support or questions, contact your development team.