---
title: "How to review a coding screen submission"
description: "Open the attempt from Candidates, read the code, replay and activity, rate it, record a recommendation, then advance or reject."
updated: 2026-10-06
canonical: https://kendor.io/docs/coding-screens/review-a-submission
---

# How to review a coding screen submission
Open **Candidates**, find the person, and choose **Open review** on their screen. The review page shows the submitted code with its replay and activity on the left, and your rating, recommendation and the team's decision on the right.

Owners and editors can rate, recommend and decide. Viewers can read everything but can't change it.

## Find submissions to review

When a candidate submits, every member of your organization gets a notification. Members who keep **New submissions** on under **Settings → Notifications** also get an email with a link to the submission.

On **Candidates**, the **Awaiting review** tab lists people with work to review, and **Assigned to me** narrows it to your own. Each row shows the reviewer: the person assigned to that attempt, or else the screen's default reviewers. Open a candidate's profile and choose **Open review** on the screen you want.

You can open an attempt while the candidate is still working. A banner says they're still on it, and the **Solution** tab shows their **Live files** as they change. Rating, recommendations and the decision open once they submit or run out of time.

## Read the work

A screen with several challenges shows them in a row across the top, each with its status. Pick one to review it. For each challenge, these tabs are available:

| Tab | What it shows |
|---|---|
| **Solution** | The submitted project as a read-only file tree. Files the candidate changed are marked, and **Diff vs starter** shows exactly what they changed. |
| **Timeline** | A replay of the code being written, edit by edit. Play it, scrub along the bar, change the speed, and use **Skip idle** to jump over quiet stretches. |
| **Terminal** | A replay of the candidate's terminal, when the attempt has a terminal recording. |
| **AI agents** | The conversation with Claude Code or Codex, when the candidate used one. |
| **Requests** | Requests the candidate sent from the editor's requests panel, with their responses, when there are any. |
| **Activity** | Integrity signals and when the challenge was submitted. See [Integrity signals](/docs/coding-screens/integrity-signals). |
| **Comments** | Notes for your team. Type `@` and a name to notify a teammate. |

**Open in editor** opens the submission in the full editor with its own sandbox, so you can run the app or the tests yourself. The candidate's submission doesn't change.

## Assign a reviewer

The **Reviewer** menu at the top of the page assigns this attempt to one teammate. **Reviewer · unassigned** falls back to the screen's default reviewers.

## Rate each challenge

Under **Rating · 1–10**, rate the submission for the selected challenge, from **Did not pass** at the low end to **Strong hire** at the high end. Ratings are per challenge, so rate each one you review.

## Record your recommendation

Under **Recommendation**, pick one of **Strong yes**, **Lean yes**, **Lean no** or **Strong no**. Add a note if you like and choose **Save note**; the other reviewers can see it. Change your mind at any time, or choose **Clear verdict**.

Each reviewer records their own recommendation, and everyone's appears in the list below. The pill next to the heading shows how many reviews are in. When the recommendations split between yes and no, it reads **Needs discussion**, and the decision card says the reviewers disagree.

## Make the decision

The **Decision** card is the team's call on this attempt. Choose **Advance** or **Reject**, add an optional reason, and confirm. The reason goes into the decision log.

Neither choice emails the candidate. After a rejection, **Send rejection email** opens an email you can check and edit before sending. **Undo this decision** clears the call if you need to.

You can decide before every reviewer has weighed in; the card tells you how many reviews are in.

> **Note.** The header also has **Mark passed** and **Mark did not pass**. Unlike **Advance** and **Reject**, these email the candidate their result as soon as you choose one. Use them only when you mean to tell the candidate.

## The decision log

The **Decision log** under the decision card lists what happened to this attempt and who did it: the invite, the start, the submission or **Ran out of time**, each recommendation, the decision with its reason, resets, and emails sent to the candidate.

## Review together, live

**Live review** opens a live room on this attempt, where you and your teammates can go through the code together. To have the candidate walk you through it, choose **Invite candidate** next to it, then **Create invite**. They get an emailed link to a live review workspace that shows no scores or internal notes, and the original submission stays unchanged. **Revoke** cancels the link. See [In the room](/docs/live-coding/in-the-room).

## Reset an attempt

If something went wrong for the candidate, such as a broken laptop or a mistake in the challenge, choose **Reset attempt** at the bottom of the decision card. Their invitation opens again with a fresh expiry, and they start from the beginning. The old attempt stays on record and is marked as replaced.

Resetting doesn't email the candidate. Send them the link yourself with **Copy invite link** or **Send reminder** on **Candidates**.
