A hackathon-ready MVP that converts first-round interviews into programmable, scalable software infrastructure using AI interviewers.
- Configurable AI Interviewers: Create interviews by defining role, skills, difficulty, and evaluation criteria
- Scalable Interview Sessions: Multiple candidates can interview simultaneously
- Structured Evaluations: Extract machine-readable signals instead of raw transcripts
- Human Review Dashboard: Visualize scores, evidence, and AI recommendations
- Interview as Code: JSON-based interview schemas for consistency
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Recruiter โ โ AI Interview โ โ Reviewer โ
โ Creates โโโโโถโ Engine โโโโโถโ Dashboard โ
โ Interview โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Interview โ โ State Machine โ โ Structured โ
โ Schema โ โ + Prompts โ โ Evaluations โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
- Frontend: Next.js 14, React, TypeScript, TailwindCSS
- Backend: Next.js API Routes, Node.js
- Database: SQLite with Prisma ORM
- AI Layer: Mock LLM interface (easily replaceable with OpenAI/Anthropic)
- UI Components: Custom components with Radix UI primitives
- Clone and install dependencies:
cd interview-os
npm install- Set up the database:
npm run db:push
npm run db:seed- Start the development server:
npm run dev- Open your browser:
Navigate to
http://localhost:3000
- Go to
/create - Define job role (e.g., "Backend Engineer")
- Add skills to evaluate (e.g., "API Design", "Databases")
- Set difficulty level (Junior/Mid/Senior)
- Configure interview style (Friendly/Neutral/Strict)
- Add red flags to watch for
- Click "Create Interview"
- Copy the generated interview link from the dashboard
- Share with candidates:
http://localhost:3000/interview?id={interview-id}
- Candidate enters name and email
- AI interviewer asks role-specific questions
- Questions adapt based on previous answers
- Progress bar shows completion status
- Structured evaluation generated at the end
- Go to
/dashboard - View all candidate evaluations
- See skill-by-skill breakdown with evidence
- Review AI recommendation (Proceed/Borderline/Review)
- Access detailed conversation transcripts
{
"role": "Backend Engineer",
"skills": ["API Design", "Databases", "System Design"],
"difficulty": "Mid",
"rubric": {
"API Design": 30,
"Databases": 35,
"System Design": 35
},
"redFlags": [
"No real-world examples",
"Hand-wavy explanations",
"Cannot explain trade-offs"
],
"style": "neutral"
}The system uses a prompt-based approach with structured JSON outputs:
- Analyzes role requirements and candidate level
- Generates contextual follow-up questions
- Maintains interview flow and progression
- Scores responses on 0-100 scale
- Extracts evidence snippets
- Identifies strengths and weaknesses
- Detects red flags from rubric
- Aggregates individual question scores
- Provides overall recommendation
- Generates explainable evaluation summary
Update src/lib/ai-service.ts:
private async callLLM(prompt: string): Promise<any> {
const response = await openai.chat.completions.create({
model: "gpt-4",
messages: [{ role: "user", content: prompt }],
response_format: { type: "json_object" }
});
return JSON.parse(response.choices[0].message.content);
}- Create new interview schema in seed data
- Add role-specific prompt templates
- Configure skill-specific evaluation criteria
- Update
InterviewEvaluationtype - Modify evaluation prompts
- Add new dashboard visualizations
interview-os/
โโโ src/
โ โโโ app/ # Next.js app router pages
โ โ โโโ api/ # API routes
โ โ โโโ create/ # Interview creation page
โ โ โโโ interview/ # Candidate interview page
โ โ โโโ dashboard/ # Reviewer dashboard
โ โโโ components/ui/ # Reusable UI components
โ โโโ lib/ # Core business logic
โ โ โโโ ai-service.ts # AI interview engine
โ โ โโโ interview-state-machine.ts
โ โ โโโ prompts.ts # AI prompt templates
โ โ โโโ db.ts # Database client
โ โโโ types/ # TypeScript definitions
โโโ prisma/ # Database schema & seeds
โโโ public/ # Static assets
- Push to GitHub
- Connect to Vercel
- Add environment variables
- Deploy automatically
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]- Voice Interviews: Web Speech API integration
- Video Analysis: Facial expression and body language evaluation
- Multi-language Support: Internationalization
- Advanced Analytics: Interview performance metrics
- Integration APIs: ATS and HRIS system connectors
- Real-time Collaboration: Multiple reviewers
- Custom Scoring Models: ML-based evaluation
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details
# Reset database
rm prisma/dev.db
npm run db:push
npm run db:seed# Use different port
npm run dev -- -p 3001# Clear Next.js cache
rm -rf .next
npm run buildBuilt for hackathons, designed for production.
Transform your hiring process with AI-native interview infrastructure that scales.