Repository-based technical interviews

Interview engineers
in real code.

Turn a prepared GitHub repository into a live interview. Watch candidates read unfamiliar code, improve a real change, run tests, and explain their decisions.

payments-service / interviewSession live

Repository

▾ src

  api

  services

  billing.ts

▸ tests

README.md

18   export async function applyDiscount(order) {

19     const plan = await loadPlan(order.planId);

20     if (!plan.active) throw new Error("inactive");

21     return calculateDiscount(order, plan);

22   }

$ npm test
12 passed   saved
Candidate editing
Tests passing

Two ways to interview

See how they understand code. And how they build it.

Review a change in an existing repository, or work through a coding problem with evolving requirements. Choose the format for what you want to learn.

Repository interviews

Give candidates a change in a repository you’ve prepared. Watch them explore the code, trace its behavior, and make a fix they can explain and test.

Example interview
checkout / review2 files changed

Repository

checkout.ts

stock.ts

tests/

History

Add checkout retries

− await reserveStock(order);

+ await retry(() =>

+   reserveStock(order)

+ );

Follow the call into stock.ts

Existing tests, history, and context

Could the same order reserve stock twice?

Explore Review Edit and test

Staged coding interviews

Start with a focused coding problem. As candidates pass each stage’s tests, new requirements unlock—revealing how they extend their solution without breaking what already works.

Example interview
stock / coding exerciseStage 2 of 3
12 3

Handle insufficient stock.

01  def reserve(stock, quantity):

02    # extend your solution

3 of 4 tests passingNext stage

A new requirement. The same solution, evolving.

Read Pass the tests Unlock

Both formats. Ready to run.

Different candidates. Same starting point.

For each exercise, candidates start from the same prepared code and dependencies in their own isolated workspace. They open a private link and get to work—without setting up their laptop.

Code, run, test
An editor, terminal, and tests in the browser, with dependencies prepared ahead of time.
Set the AI policy
Optional inline autocomplete, enabled per exercise. Off by default, with usage limits per interview.
Skip candidate setup
No candidate account, local cloning, or laptop configuration required.
Try an example
Example workspace · Python Dependencies ready
reserve.pyAI autocomplete: allowed
def reserve(stock, quantity):
if quantity > stock:
raise ValueError("Not enough stock")
return stock - quantity

Terminal

$ pytest tests/test_reserve.py

Reserves available stock

Rejects insufficient stock

2 passed

One prepared exercise.
A separate workspace for each candidate.

Two ways to run Chunin

Choose what stays in your hands.

Use hosted Chunin with your own infrastructure credentials, or deploy the application in your environment.

Hosted

Bring your own credentials

Start interviewing without running Chunin.

Chunin hosts the product. Your organization connects its own Modal credentials and, when AI autocomplete is enabled, a supported model-provider credential.

Sign up
Self-hosted

Deploy in your environment

Keep the interviewer side on your network.

Run Chunin with Docker Compose, use SAML for company sign-in, connect an organization-owned GitHub App, and expose only candidate sessions publicly.

Read-only GitHub accessCredential-free candidate workspaces
C

Chunin / repository interviews

Prepared repositories · live observation · reviewable evidence

© 2026 Return to top