Replace coding puzzles with real-work simulations.
Open infrastructure for production-grade technical assessments.
InterviewOS helps teams evaluate candidates through job-relevant tasks instead of algorithm puzzles.
Candidates complete realistic assignments using their normal tools. InterviewOS records the full workflow and generates structured evaluation reports so reviewers can see:
- what the candidate shipped
- how they approached the work
- how they debugged, used tools, and made tradeoffs
- how they explained decisions along the way
Not just output. The process.
Define the task, add follow-up questions, and configure reporting requirements.
Send a secure link. No account setup required.
Candidates work normally using their preferred tools. InterviewOS captures the workflow and responses.
Reviewers get a high-signal summary plus the underlying evidence needed for calibration.
Hiring is still optimized for puzzle performance. Modern engineering is not.
Real work involves:
- debugging unfamiliar code
- reading and applying documentation
- using AI tools responsibly
- working through ambiguity
- communicating tradeoffs and decisions
Short algorithm challenges rarely measure these skills. InterviewOS is opinionated: real work beats rehearsed tricks.
| Traditional puzzle interviews | InterviewOS |
|---|---|
| tests memorization and prep | tests job-relevant execution |
| output-focused | workflow and decision-focused |
| easy to game | harder to fake |
| no realistic context | realistic tasks and constraints |
| weak reviewer calibration | evidence-rich review (recording + report) |
Prerequisite: Docker Desktop running.
make devThis starts:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- Local email inbox (Mailpit): http://localhost:8025
A bundled sample assessment is included so you can test the full flow immediately.
For full executable report generation, start the optional grader worker:
make dev-fullThis keeps the default local stack light while enabling heavier assessment evaluators for report generation.
- end-to-end invite flow with frontend + backend
POST /assessments/startplus legacyPOST /start-assessment- invite lifecycle APIs: bulk send, resend, verify token, and mark-taken
- local out-of-box mode (no AWS account required)
- bundled sample assessment archive for immediate testing
- local SMTP inbox via Mailpit in Docker Compose
- admin dashboard foundation at
/dashboardbacked by:GET /api/assessmentsGET /api/candidates?assessmentId=<id>
- assessment creation flow foundation:
/new-assessment(title + context)/selection-questions(question pick + create)GET /api/questions,GET /api/assessments/check-title,POST /api/new-assessments
- assessment result + invite-management foundation:
/assessment_result/:idGET /api/assessments/{id}POST /api/invite/bulkandPOST /api/invite/resendnow supportassessmentId/candidateId- resend UX polish: success toast + status label rendered as
resent at <timestamp>
- candidate flow baseline at
/take-assessment?token=...using copiedAssessment.jsrecording pipeline with compatibility endpoints:GET /api/public/assessment/{id}GET /api/reflection/sectionsPOST /get-presigned-upload-url,PUT /local-upload/{key},POST /notify-recording-uploadPOST /api/recording/start-multipart-upload,POST /api/recording/upload-part,POST /api/recording/complete-multipart-uploadPOST /upload-zip,POST /download-assessment
- report experience baseline:
- report route at
/report/:idbacked by persisted canonical candidate report payloads - report API compatibility endpoint:
GET /report/{id} - assessment-result action now includes
View Report POST /upload-zipnow triggers assessment-linked background scoring dispatch and persists report records in local SQLite- optional grader worker mode via
make dev-fullfor executable evaluators across supported assessment types - local artifact endpoints support submission downloads and report video playback without AWS
- local screen-time analyzer hook is enabled for uploaded workflow recordings (duration baseline, richer worker path when enabled)
- candidate completion now lands on a loading screen that polls report readiness and auto-redirects to
/report/:id - assessment4 dual-artifact upload path is supported via
POST /upload-assessment4(submission zip + notebook) - report scoring now uses candidate-scoped submission and reflection artifacts instead of assessment-wide latest files
- report UI now renders score, test evidence, assessment overview, app usage, code diffs, code-quality findings, NER metrics, videos, and submission download actions when present
- report route at
- reliability and security hardening:
- invite supersession and resend behavior are scoped by assessment
- invalid/missing assessments are rejected before invite or candidate-row creation
- multipart recording uploads validate part numbers, reject empty completion, expire abandoned sessions, and clean up stale temp files
- local reflection uploads require a short-lived invite-validated upload token bound to the generated recording key
- default local assessment starts resolve to a real assessment id, preventing
/report/defaultloading loops
- frontend build reproducibility:
frontend/package-lock.jsonis committed- frontend Docker builds use
npm ci - Vite dependencies are upgraded and
npm auditreports zero vulnerabilities
InterviewOS is split into:
frontend/: candidate and admin UIbackend/: API, invite lifecycle, local SQLite state, assessment packaging, and report scoring pipelinegrader/: optional full-report worker with heavier evaluator runtimes and starter fixturesdocker-compose.yml: local end-to-end dev environment (including Mailpit)
For development details, see CONTRIBUTING.md.
Planned next steps:
- expand the grader worker with more fixture submissions and CI coverage
- add optional S3-backed recording/submission artifact providers for production deployments
- add richer deterministic rubric scoring controls per assessment type
- ATS and webhook integrations
Adds the optional full-report generation path:
- added
make dev-fulland an optionalgraderDocker service for executable report evaluators - added backend worker dispatch config while keeping
make devon the lightweight local evaluator - added canonical report payload persistence with compatibility for existing report columns
- added local artifact endpoints for submission download and assessment/reflection video playback
- added evaluator paths for the four supported assessments: Users API, Insurance Document Processor, Supreme Court RAG, and NER Product Attributes
- upgraded the report UI to render richer test evidence, diffs, code-quality findings, app usage, video artifacts, NER metrics, and submission downloads
Released after the original v1.0.0 README status. This release focuses on making the local open-source workflow safer and more deterministic:
- tightened invite lifecycle behavior so resend/supersession is assessment-scoped
- fixed invalid-assessment edge cases across invite, resend, and upload paths
- hardened multipart recording uploads with malformed-part validation, empty-completion rejection, abandoned-session expiry, and temp-file cleanup
- protected local reflection uploads with invite-validated, short-lived, one-use upload tokens
- fixed candidate artifact attribution so reports use the correct candidate ZIP/reflection files rather than assessment-wide latest files
- fixed the default assessment loading loop by resolving default starts to a real assessment id and guarding invalid report ids
- improved SES reminder email parity with HTML invite emails
- added reproducible frontend dependency installs with
package-lock.json,npm ci, upgraded Vite dependencies, and a clean frontend audit/build path
Initial production-ready open-source local workflow: Docker Compose setup, Mailpit email flow, admin dashboard, assessment creation/result views, invite management, candidate recording flow, artifact upload, background report generation, and report readiness polling.
InterviewOS v1.2.0 is production-ready for the open-source local workflow. The default stack remains lightweight and local-first; the optional full grader worker enables deeper executable report generation when you need assessment-specific grading.
If you try it and hit sharp edges, please open an issue. Feature requests and PRs are welcome.
See CONTRIBUTING.md.
See SECURITY.md. Please report sensitive issues responsibly.
MIT. See LICENSE.



