Vekt
Open source Β· Auditable Β· Self-hosted

Recruitment orchestration,
fully on your own terms

Vekt is an open-source, self-hosted recruiting platform: a recruitment orchestration engine for privacy-first hiring. It structures candidate evaluation, audit logs, and data retention around explicit workflows instead of treating hiring as a resume inbox.

TypeScriptNext.js 15Docker-readyRetention controls
Recruiter dashboard
Recruiter dashboard β€” candidates sorted by AI score
Public job listings
Public job listings
Applications view
Applications with AI reasoning

Everything you need to orchestrate candidate evaluation

Built for teams that need structured vetting, explainable automation, and privacy controls without handing candidate data to a third party.

πŸ€–
AI resume scoring
Pluggable AI providers β€” mock (offline), OpenAI GPT-4o, or a local Ollama model. Switch with a single env variable.
⚑
Durable evaluation pipeline
Powered by Inngest β€” each evaluation step is durable, retryable, and observable. Falls back to in-process execution in dev.
πŸ“‹
Per-job screening questions
Add single-choice or multi-select questions to any job. Answers appear alongside AI reasoning in the recruiter view.
βœ‰οΈ
Delayed, cancellable emails
Status emails are held for a configurable delay (default 48 h). If a recruiter changes the decision, the queued email is automatically cancelled.
🎨
Admin-editable email templates
All candidate emails are stored in the database and editable from the admin dashboard. Every sent email is logged with its delivery ID.
πŸ—‘οΈ
Automated data purge
Inngest cron job automatically purges candidate records and resume files past the configurable retention window. You set the window; the purge runs on its own.
πŸ”’
Secure file serving
Resume PDFs are stored outside the web root and served exclusively through an auth-gated API route. No accidental public exposure.
πŸ“š
Full Swagger API docs
Interactive OpenAPI 3.0 documentation at /api-docs β€” build integrations or automate job posting without digging into source code.
🐳
One-command Docker deploy
A single docker-compose up starts the Next.js app and a self-hosted Inngest server together. No external accounts required.

From submit to decision in minutes

Every application moves through a consistent, auditable pipeline with human override at every step.

1
Candidate submits application
Name, email, and PDF resume (max 5 MB). Optional per-job screening questions appear as a second step. All answers are IDOR-validated server-side.
POST /api/candidates
2
PDF text extracted & AI scoring runs
unpdf extracts CV text. The AI provider scores it against the job description using a weighted formula: relevance Γ— 0.4 + experience Γ— 0.6.
Inngest Β· analyze-candidate
3
Automatic status assignment
Score β‰₯ threshold (default 75) β†’ SHORTLISTED. Below threshold β†’ REJECTED. Recruiters can always override.
APPLIED β†’ ANALYZING β†’ SHORTLISTED / REJECTED
4
Delayed status email queued
A status-change email is scheduled after the configured delay (default 48 h). If the recruiter updates the decision before it sends, the email is cancelled and a new one is queued.
Inngest Β· send-delayed-status-email
5
Recruiter reviews & decides
The recruiter dashboard shows every applicant sorted by AI score with full reasoning and screening-question answers. Accept, reject, or shortlist with one click.
/recruiter/jobs/[jobId]
6
Automated data retention
A daily Inngest cron deletes candidate records and resume files older than the admin-configured retention window. Warning emails are sent 7 days in advance.
Inngest Β· purge-expired-candidates Β· daily 02:00 UTC

Three distinct surfaces

Each role has a dedicated, purpose-built UX β€” no cluttered all-in-one interface.

public
Candidate
Browses job listings and applies with a resumΓ©. Tracks application status via a private link.
Job listings & search
Multi-step apply form
Screening questions
Status tracker page
Email notifications
recruiter
Recruiter
Manages job listings and reviews candidates sorted by AI score β€” no context-switching required.
Job listing management
Screening question builder
Applications sorted by score
AI reasoning & answers
Accept / reject / shortlist
admin
Admin
Controls the platform β€” accounts, email templates, retention settings, and system configuration.
Recruiter account management
Email template editor
Data retention settings
Email delay configuration
Sent email audit log

Built on proven open source primitives

No proprietary runtimes or vendor-specific infrastructure required.

FrameworkNext.js 15 App Router
DatabaseSQLite via Prisma 7 + better-sqlite3
AuthNextAuth v5 credentials
AI pipelineInngest durable functions cron
AI providersMock Β· OpenAI GPT-4o Β· Ollama (local)
PDF extractionunpdf
ValidationZod
LoggingPino structured JSON
UIshadcn/ui + Tailwind CSS v4 + Phosphor Icons
Rich textTiptap
EmailResend

Up and running in one command

The setup script downloads all files, generates secrets, prompts for your admin credentials, and starts everything automatically.

terminal
curl -fsSL https://raw.githubusercontent.com/Behnoudmst/vekt/main/setup.sh | bash

# App β†’  http://localhost:3000
# Inngest β†’ http://localhost:8288

Before you screen real applicants with this

Using AI to screen job applications is an Annex III high-risk use under the EU AI Act. That classification follows from what the system decides about people, not from how it is licensed or described. Whoever deploys Vekt to screen candidates carries those obligations — the project does not carry them for you.

Vekt makes no claim of compliance with the AI Act or the GDPR. It has not been audited, certified or conformity-assessed, and it declares no accuracy figure: its scores have never been measured against labelled hiring outcomes, so treat them as an unvalidated ranking heuristic and never as a decision. Human review before rejection is the default for exactly this reason.

The software is provided as is, without warranty. Nothing on this site is legal advice. The public demo runs on seeded data and is not intended for real applications. What the system does, and the gaps it still has, are written down in docs/compliance.

Ready to take back control of your hiring?

Vekt is free, open source, and runs entirely on your own infrastructure.