Skip to content

Repository files navigation

Interview Evaluator

A flexible, open-source React/Next.js application for conducting and tracking candidate interviews during hiring events. Features a modern dark interface, persistent storage, and support for any interview format. Built with efficiency in mind for high-pressure hiring events where every minute counts. See the history at the bottom for a fun twist.

Key Features

  • Universal Compatibility: Works with any CSV format and question structure
  • Persistent Storage: Auto-saves all evaluations to browser localStorage
  • Smart Search: Search candidates across all fields
  • Structured Evaluation: Support for categorized questions with rating systems
  • Comprehensive Notes: Track responses, key points, strengths, and concerns
  • Data Export: Export all evaluations as JSON for further analysis
  • Professional UI: Dark mode interface optimized for long interview sessions
  • Configurable: Customize display fields and app behavior

Quick Start

  1. Install dependencies:

    npm install
  2. Add your data files to the public folder:

    • candidates.csv - Your candidate list (any CSV format)
    • questions.md - Your interview questions
    • answers.md (optional) - Expected answer guidelines
    • config.json (optional) - Display configuration
  3. Start the application:

    npm run dev
  4. Open in browser: Navigate to http://localhost:3000

Data File Formats

Candidates CSV

The application auto-detects CSV columns. Any standard CSV format works:

Name,Email,Role,Experience,Location
John Doe,john@email.com,Engineer,5 years,New York

Questions File

Supports multiple formats:

# Interview Questions

## Category Name

1. First question text?
2. Second question text?

## Another Category

3. Third question text?

Or simple numbered list:

1. Question one
2. Question two
3. Question three

Answer Guidelines (Optional)

Structure your answer evaluations:

## Question 1: [Question Title]

### Best Answer
- Key point 1
- Key point 2

### Good Answer
- Acceptable point 1
- Acceptable point 2

### Acceptable Answer
- Minimum requirement 1
- Minimum requirement 2

Configuration (Optional)

Customize the display in config.json:

{
  "appTitle": "Your Event Name",
  "primaryDisplayFields": ["Name", "Role", "Company"],
  "secondaryDisplayFields": ["Experience", "Location"]
}

Usage Guide

During Interviews

  1. Search & Select: Type any keyword to find candidates
  2. Evaluate Responses:
    • Rate each answer (Best/Good/Acceptable/Poor/Not Asked)
    • Add specific notes and key points
    • View expected answer guidelines
  3. Overall Assessment:
    • Rate candidate 1-10
    • Choose recommendation level
    • List strengths and concerns
    • Add general observations
  4. Auto-Save: All changes save automatically after 1 second

Data Management

  • Session Recovery: Close and reopen anytime - all progress is preserved
  • Clear Current: Reset evaluation for current candidate
  • Export JSON: Download all evaluations with timestamp
  • Bulk Operations: Export includes all evaluated candidates

Customization

Automatic Field Detection

The app intelligently identifies common field patterns:

  • Name fields (First Name, Last Name, Full Name)
  • Title/Position fields
  • Company/Organization fields
  • Location/City fields
  • Experience/Seniority fields

Manual Configuration

Override auto-detection with config.json:

  • Specify which fields appear prominently
  • Combine fields (e.g., "FirstName+LastName")
  • Set custom app title

Technical Details

  • Framework: Next.js 15.5 with TypeScript
  • Styling: Tailwind CSS with dark theme
  • Storage: Browser localStorage
  • Export: Timestamped JSON files
  • Browser Support: All modern browsers

File Structure

public/
├── candidates.csv          # Your candidate data
├── questions.md            # Interview questions
├── answers.md             # Answer guidelines (optional)
├── config.json            # Display settings (optional)
└── sample-*.csv/md        # Example files

Tips for Best Results

  1. CSV Format: Include headers in first row
  2. Questions: Number questions for easy reference
  3. Categories: Use markdown headers (##) to group questions
  4. Answer Guide: Match question numbers in answer guide
  5. Export Regularly: Create backups during long events

Building for Production

npm run build
npm start

Contributing

Contributions are welcome! This tool is designed to be:

  • Framework agnostic for data formats
  • Easily extendable
  • Accessible for all hiring scenarios

License

MIT - Free to use and modify for your hiring needs

Support

  • Report issues on GitHub
  • Works offline after initial load
  • No external dependencies for core functionality
  • Respects user privacy - all data stays in browser

History

On August 28th, 2025, I attended a speed hiring event in Seattle while looking for an ML engineer. I had around 100 candidates to interview for 5 minutes each, so I needed a way to quickly capture input and see who I wanted to have a more meaningful conversation with. I hate using spreadsheets for this, so I used Claude Code Opus 4 with very concrete specifications of the looks, features, inputs and outputs I needed. This code was generated in exactly 8 minutes, with only one error. I used it successfully at the event with my own set of questions and I have a good list for in-depth discussions. I figured I'd open source this because I think it can be useful to others, and it can be used as a baseline to expand even into an ATS of sorts if someone is that motivated.

About

Application for conducting and tracking fast candidate interviews during hiring events

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages