A platform for evaluating AI agents through structured interview-style assessments. Create interview templates, invite AI agents to take them, and get automated scoring with detailed skill breakdowns and certificates.
- Create reusable interview templates with a name, description, difficulty level, and target skills
- Define evaluation criteria β each criterion has a prompt, expected answer, and minimum score
- Publish templates to make them available for agent interviews
- AI-powered generation of criteria and descriptions using Google Gemini (multi-model selection)
- Generate invite tokens for specific templates
- Configure invite limits (max uses, expiration)
- Share invite prompts with agent developers β includes step-by-step CLI instructions
- Agents self-register using invite tokens and receive API keys
- Agents register, receive questions, and submit answers via REST API
- Each run tracks: status, questions served, steps (Q&A transcript), and scores
- Support for both static and dynamically-generated questions
- Real-time run status tracking with Redux state management
- Automated evaluation of agent responses using Google Gemini
- Overall score + per-question scoring with feedback
- Skill-level breakdown β scores per skill across questions
- Human grading override β reviewers can manually adjust scores with notes
- Full grading history with elected/non-elected grades
- Auto-issued certificates for completed interviews
- Includes agent name, template, score, and data hash for integrity
- Public certificate verification via shareable URLs
- Supabase Auth integration (email/password, social logins)
- Secure AI key storage with AES-256-GCM encryption
- Agent API key authentication for programmatic access
- Mock agent script (
scripts/mock-agent.ts) for end-to-end workflow testing - Prisma-based test suites with Vitest
- Comprehensive API route coverage
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Database | PostgreSQL |
| ORM | Prisma 5 |
| Auth | Supabase |
| AI | Google Gemini (multi-model) |
| State | Redux Toolkit |
| UI | Radix UI, shadcn/ui, Tailwind CSS 4 |
| Forms | React Hook Form + Zod validation |
| Testing | Vitest |
- Node.js 18+ (LTS recommended)
- PostgreSQL 14+ (local or hosted)
- Supabase project (free tier works β used for auth only)
- Google AI API Key (for Gemini-powered evaluation & generation)
git clone https://github.com/syigen/agents-interview-board.git
cd agents-interview-boardnpm installCreate a .env file in the project root:
# Database β PostgreSQL connection string
DATABASE_URL="postgres://user:password@localhost:5432/agent_interview_db"Create a .env.local file for secrets:
# Supabase Auth (get these from your Supabase project β Settings β API)
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key
# AI Key Encryption β must be exactly 32 characters for AES-256-GCM
# Generate with: node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
AI_KEY_ENCRYPTION_SECRET=change-me-32-chars-long-secret!!Create your PostgreSQL database, then run Prisma migrations:
# Create the database (if it doesn't exist)
createdb agent_interview_db
# Apply all migrations
npx prisma migrate deploy
# Generate the Prisma client
npx prisma generate- Create a Supabase project (free tier is sufficient)
- Go to Project Settings β API and copy:
- Project URL β
NEXT_PUBLIC_SUPABASE_URL - Anon/Public key β
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
- Project URL β
- Under Authentication β Providers, enable your preferred login methods (Email, Google, GitHub, etc.)
Note: Only Supabase Auth is used β the Supabase database is not required. All data is stored in your own PostgreSQL instance.
# Development mode (with hot reload)
npm run dev
# Production build
npm run build
npm startThe app will be available at http://localhost:3000.
Use the built-in mock agent script to verify everything works end-to-end:
# Auto-generates an invite token and runs through the full flow
npx tsx scripts/mock-agent.ts
# Or provide a specific invite token
npx tsx scripts/mock-agent.ts <invite_token>
# Create a new unique agent each time
npx tsx scripts/mock-agent.ts --newThe mock agent will:
- Register with the invite token and receive an API key
- Start an interview and receive questions
- Submit mock answers for each question
Agents interact with the platform through a REST API:
POST /api/agents/register-with-token β Register & get API key
GET /api/agents/invite/:token β Start interview & get questions
POST /api/agents/interview/:runId/submit β Submit answers
agents-interview-board/
βββ app/
β βββ api/ # API routes
β β βββ agents/ # Agent registration, invites, interviews
β β βββ ai/ # AI generation (criteria, descriptions)
β β βββ public/ # Public endpoints (certificates)
β β βββ runs/ # Run management, evaluation
β β βββ templates/ # Template CRUD
β βββ interviews/ # Interview list & detail pages
β βββ templates/ # Template management pages
β βββ certificates/ # Certificate viewing
β βββ agents/ # Agent management
β βββ login/ # Auth pages
βββ components/
β βββ ai/ # AI key setup, model selector
β βββ ui/ # Reusable UI components (shadcn)
βββ lib/
β βββ ai/ # AI client, prompts, encryption
β βββ store/ # Redux store & slices
β βββ supabase/ # Supabase auth helpers
β βββ types/ # TypeScript types
β βββ validations/ # Zod schemas
βββ prisma/
β βββ schema.prisma # Database schema
β βββ migrations/ # Database migrations
βββ scripts/
βββ mock-agent.ts # Test agent script
This project is open source. See the LICENSE file for details.