Judge engineers on real work, not résumé keywords.

Judge engineers on real work, not résumé keywords.

Judge engineers on real work, not résumé keywords.

TruDev drops candidates into a real production codebase with real tickets, then captures 70+ signals on how they actually debug, build, and ship.

Painterly desert sunset over mesas, the TruDev hero backdrop
Parley AI agent Framer template interface preview

The problem

The engineers you want never make it past the screen.

The engineers you want never make it past the screen.

Keyword filters and puzzle rounds measure how well someone interviews. The job never comes up.

What they wrote

Rebuilt

Rebuilt

the

the

payments

payments

retry

retry

pipeline

pipeline

after

after

a

a

Black

Black

Friday

Friday

outage

outage

errors

errors

down

down

94%.

94%.

Three

Three

years

years

on-call

on-call

for

for

checkout

checkout

at

at

40

40

million

million

requests

requests

a

a

day.

day.

Mentored

Mentored

four

four

engineers

engineers

two

two

now

now

lead

lead

their

their

own

own

teams.

teams.

What the filter kept

payments

payments

pipeline

pipeline

checkout

checkout

engineers

engineers

Four nouns, and a decision.

Four nouns, and a decision.

The filter read what it could match and threw away the rest. Everything that made this person worth hiring was written in sentences.

The interview

A puzzle you can rehearse.

A puzzle you can rehearse.

Q3 — Invert a binary tree.

You have 45 minutes.

function invert(root) {

|

}

Blank editor. No context.

No internet, no tools, no teammates.

Seen it before? You pass.

The job

A codebase you have never seen.

A codebase you have never seen.

TICKET-4412 payments 500s on retry

payments-service · 847 files

$ pytest tests/

FAILED test_retry_backoff

1 failed, 211 passed — go.

213,004 lines they did not write.

Real tooling — terminal, debugger, AI.

Cannot be memorised. Only done.

One of these looks like Monday morning. Your process tests the other one.

TruDev finds the ones who are good at the job.

TruDev finds the ones who are good at the job.

Why TruDev

Real codebases,
not whiteboard puzzles

LeetCode tests recall. Production tests judgment. TruDev hands candidates an unfamiliar repo, a real ticket, and a clock that’s running.

01.

Orange mosaic

Real production code

Message from Parley

War-room pressure

Real tickets, real constraints, real time pressure. We simulate the incident, not the whiteboard, so you see how they hold up.

03.

Orange mosaic

70+ real signals

04.

Orange mosaic

Proof, not vibes

Message from Parley

A real IDE, not a code box

Candidates work inside a genuine, full-featured IDE — file explorer, terminal, debugger, and AI code completion — not a cramped textarea pretending to be a dev environment.

Message from Parley

Judges how they think

TruDev tracks the process, not just the output: file edits, terminal use, debugging, focus and typing patterns — the full story of how a candidate actually worked, not just what they turned in.

Message from Parley

AI-aware, not AI-phobic

We don’t penalize AI use — we penalize uncritical acceptance. TruDev classifies how candidates used AI assistance and surfaces an Independent Authorship score, so you see what they actually built themselves.
One conversation updates everything, no extra work.

Message from Parley

Fair by design

Every interview follows a fixed, calibrated blueprint — role, seniority, and rubric never change mid-interview. Only the next question’s scaffolding adapts, so the bar stays the same for every candidate.

Message from Parley

A real IDE, not a code box

Candidates work inside a genuine, full-featured IDE — file explorer, terminal, debugger, and AI code completion — not a cramped textarea pretending to be a dev environment.

Message from Parley

Judges how they think

TruDev tracks the process, not just the output: file edits, terminal use, debugging, focus and typing patterns — the full story of how a candidate actually worked, not just what they turned in.

Message from Parley

AI-aware, not AI-phobic

We don’t penalize AI use — we penalize uncritical acceptance. TruDev classifies how candidates used AI assistance and surfaces an Independent Authorship score, so you see what they actually built themselves.
One conversation updates everything, no extra work.

Message from Parley

Fair by design

Every interview follows a fixed, calibrated blueprint — role, seniority, and rubric never change mid-interview. Only the next question’s scaffolding adapts, so the bar stays the same for every candidate.

The simulation

Real repo. Real ticket. Ninety minutes.

TruDev code explorer showing the payments-service repository and ticket TICKET-4412

payments-service

TICKET-4412

EXPLORER

payments-service

api

payments

retry_handler.py

webhook.py

models.py

queue

lib

tests

config/retry.yaml

847 files · 213,004 lines

retry_handler.py

webhook.py

retry.yaml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

from queue import Consumer

from lib.backoff import compute_delay

MAX_ATTEMPTS = 5

def handle(event, attempt=0):

“””Retry a failed payment webhook.”””

if attempt >= MAX_ATTEMPTS:

raise MaxRetriesExceeded(event.id)

delay = compute_delay(attempt)

if not event.idempotency_key:

event.idempotency_key = derive_key(event)

return schedule(event, delay)

Python 3.11 · main

Ln 88, Col 12

An unfamiliar production repo

847 files they didn’t write, in a service they’ve never opened. No blank editor, no greenfield — the same cold start as their first week on the job.

See a sample session

A real ticket, and a clock

A genuine incident from a production backlog, with the constraints that come with it. They triage, reproduce and fix under time — the way an on-call morning actually goes.

How scenarios are built

A real production ticket in TruDev: payments return 500 on retry spike, flagged P1 with time remaining

payments-service

18:24

left

TICKET-4412

Payments return 500 on retry spike

P1

payments

on-call

Retries fire every 5s regardless of

attempt count. Queue backs up under

load and the consumer times out.

ACCEPTANCE

Backoff grows per attempt

No duplicate charges

Regression test added

retry_handler.py

test_retry.py

86

87

88

89

90

91

def compute_delay(attempt):

return 5 # TODO: exponential

# attempt 0 → 5s

# attempt 1 → 5s

# attempt 2 → 5s ← never grows

TERMINAL

$ pytest tests/test_retry.py

FAILED test_retry_backoff

assert 5 == 10

1 failed, 211 passed in 4.21s

TruDev session recording replaying a candidate editing retry_handler.py

payments-service

RECORDING

retry_handler.py

86

87

88

89

90

def compute_delay(attempt):

base = 5

return base * (2 ** attempt)

# grows 5s → 10s → 20s

SESSION ACTIVITY

70+ signals

14:02

opened retry_handler.py

14:06

grep MaxRetriesExceeded · 14 hits

14:16

breakpoint set · line 88

14:19

stepped through retry loop ×6

14:21

asked AI: why constant backoff?

14:34

edited compute_delay()

14:47

pytest -k backoff · failed

15:07

pytest -k backoff · passed

15:26

added regression test

Every move on the record

Seventy-plus signals captured while they work: which files they opened, how they debugged, what they asked the AI, what they kept. Every score points back to a moment you can replay.

See a sample report

Adaptive Interviews

One engine.
Every kind of interview.

One engine.
Every kind of interview.

One engine.
Every kind of interview.

Résumé deep dives, behavioral rounds, coding follow-ups, or questions from your own material — all on the same calibrated bar.

TruDev

Backend engineer · Senior

Question 4 of 9

18:24

left

Your résumé says you led the payments rewrite. What was the hardest call you had to make?

Cutting scope. We shipped without the fraud rules and carried the risk for two weeks.

A

Follow-up

You just wrote this retry. Why five seconds, every time?

Habit, honestly. It should back off — I’d change that before it shipped.

A

It’s 2am. Checkout is down and you have one engineer awake. First move?

Stop the bleeding before diagnosing. Roll back, confirm orders recover, then find out why.

A

Tell me about a time you disagreed with your lead and lost.

I pushed for a rewrite, got overruled, and it turned out fine. I’d argue it the same way but commit sooner.

A

Your résumé says you led the payments rewrite. What was the hardest call you had to make?

Cutting scope. We shipped without the fraud rules and carried the risk for two weeks.

A

Follow-up

You just wrote this retry. Why five seconds, every time?

Habit, honestly. It should back off — I’d change that before it shipped.

A

It’s 2am. Checkout is down and you have one engineer awake. First move?

Stop the bleeding before diagnosing. Roll back, confirm orders recover, then find out why.

A

Tell me about a time you disagreed with your lead and lost.

I pushed for a rewrite, got overruled, and it turned out fine. I’d argue it the same way but commit sooner.

A

Type your answer — plain, informal language is fine…

SCENARIO

Checkout is down

02:14

Error rate on /checkout hits 94%

02:16

One engineer on call, no lead reachable

02:19

Last deploy went out 40 minutes ago

02:21

Roughly £8k of orders lost per minute

Résumé deep-dive

It starts with what they claimed.

It starts with what they claimed.

Every line on a résumé is a claim. The opening round checks whether it holds up in their own words.

Every line on a résumé is a claim. The opening round checks whether it holds up in their own words.

Coding follow-up

Then it looks at the work itself.

Then it looks at the work itself.

Not a puzzle — the code they wrote twenty minutes ago, while the reasoning is still fresh.

Not a puzzle — the code they wrote twenty minutes ago, while the reasoning is still fresh.

Scenario

Then it turns up the pressure.

Then it turns up the pressure.

A real incident with real constraints. You find out how someone decides when the decision costs something.

A real incident with real constraints. You find out how someone decides when the decision costs something.

Behavioral

And how they work with people.

And how they work with people.

The part that decides whether someone is good to build with — not just good at building.

The part that decides whether someone is good to build with — not just good at building.

The same engine runs every other round, too

Behavioral

System design

Debugging walkthrough

Code review

Incident retro

Take-home defence

Integrations

Integrations

Fits your hiring stack. No migration required.

Fits your hiring stack. No migration required.

Fits your hiring stack. No migration required.

Your ATS keeps the pipeline. TruDev slots in where the interview happens, sends the result back automatically, and changes nothing else about how your team already works.

  • Greenhouse logo, an applicant tracking system TruDev integrates with
  • Lever logo, an applicant tracking system TruDev integrates with
  • Workday logo, an applicant tracking system TruDev integrates with
  • Ashby logo, an applicant tracking system TruDev integrates with
  • BambooHR logo, an HR platform TruDev integrates with
  • Greenhouse logo, an applicant tracking system TruDev integrates with
  • Lever logo, an applicant tracking system TruDev integrates with
  • Workday logo, an applicant tracking system TruDev integrates with
  • Ashby logo, an applicant tracking system TruDev integrates with
  • BambooHR logo, an HR platform TruDev integrates with
  • Greenhouse logo, an applicant tracking system TruDev integrates with
  • Lever logo, an applicant tracking system TruDev integrates with
  • Workday logo, an applicant tracking system TruDev integrates with
  • Ashby logo, an applicant tracking system TruDev integrates with
  • BambooHR logo, an HR platform TruDev integrates with
  • Greenhouse logo, an applicant tracking system TruDev integrates with

From the beta

From the beta

What candidates said
after their first run

Unedited, from engineers who sat a real TruDev interview during the beta.

  • Decorative background image for Parley template section

    Genuinely the first interview where I wasn’t performing. I just… worked. Strange feeling, in a good way.

    Decorative background image for Parley template section

    Genuinely the first interview where I wasn’t performing. I just… worked. Strange feeling, in a good way.

    Decorative background image for Parley template section

    Genuinely the first interview where I wasn’t performing. I just… worked. Strange feeling, in a good way.

  • Decorative background image for Parley template section

    Got dropped into a codebase I’d never seen and had to actually think. Beats reciting sorting algorithms at 9am.

    Decorative background image for Parley template section

    Got dropped into a codebase I’d never seen and had to actually think. Beats reciting sorting algorithms at 9am.

    Decorative background image for Parley template section

    Got dropped into a codebase I’d never seen and had to actually think. Beats reciting sorting algorithms at 9am.

  • Decorative background image for Parley template section

    I got one part badly wrong and still moved forward, because they could see how I got there. That’s never happened to me before.

    Decorative background image for Parley template section

    I got one part badly wrong and still moved forward, because they could see how I got there. That’s never happened to me before.

    Decorative background image for Parley template section

    I got one part badly wrong and still moved forward, because they could see how I got there. That’s never happened to me before.

  • Decorative background image for Parley template section

    Used the AI the same way I do at work, said so, and nobody treated it like cheating. Refreshing.

    Decorative background image for Parley template section

    Used the AI the same way I do at work, said so, and nobody treated it like cheating. Refreshing.

    Decorative background image for Parley template section

    Used the AI the same way I do at work, said so, and nobody treated it like cheating. Refreshing.

  • Decorative background image for Parley template section

    Ninety minutes and I somehow enjoyed it. I have never once said that about an interview.

    Decorative background image for Parley template section

    Ninety minutes and I somehow enjoyed it. I have never once said that about an interview.

    Decorative background image for Parley template section

    Ninety minutes and I somehow enjoyed it. I have never once said that about an interview.

Decorative mosaic texture in Parley AI agent Framer template

FAQ

Questions
answered.

How is this different from LeetCode tests?
Is candidate data safe with TruDev?
Do you penalize candidates for using AI?
How long does setup take?
Can we use our own codebase or material?

Find the engineers
résumés miss.

See how a candidate handles a real codebase under real pressure. Book a demo and run your first scenario this week.

Parley AI agent Framer template interface preview

Find the engineers
résumés miss.

See how a candidate handles a real codebase under real pressure. Book a demo and run your first scenario this week.

Parley AI agent Framer template interface preview

Find the engineers
résumés miss.

See how a candidate handles a real codebase under real pressure. Book a demo and run your first scenario this week.

Parley AI agent Framer template interface preview

TruDev

Social media

Judge engineers on real work, not résumé keywords. Real codebases, real tickets, and proof behind every score.

TruDev

© 2026 TruDev

Decorative mosaic texture in Parley AI agent Framer template

TruDev

Social media

Judge engineers on real work, not résumé keywords. Real codebases, real tickets, and proof behind every score.

TruDev

© 2026 TruDev

Decorative mosaic texture in Parley AI agent Framer template

TruDev

Social media

Judge engineers on real work, not résumé keywords. Real codebases, real tickets, and proof behind every score.

TruDev

© 2026 TruDev

Decorative mosaic texture in Parley AI agent Framer template