Every engineer uses AI now.
Hire the ones who use it well.
Evaluator is the technical assessment that grades how skillfully candidates collaborate with AI — reading it, fixing it, prompting it, overriding it — on top of the fundamentals that still matter: reading, writing, debugging.
An AI assistant produced this. It looks reasonable. It is not. Find every flaw and fix it.
async function fetchUserPosts(userId: string) {
const res = await fetch(`/api/users/${userId}/posts`)
const posts = res.json.parse()
return posts.filter((p, i) => i <= posts.length)
}Candidate found
res.json.parse()— hallucinated. It'sawait res.json().i <= posts.length— off-by-one. Should be<or just drop the filter.
The shift
You've been screening for the wrong thing.
2023 hiring
“Did the candidate use ChatGPT? Block them, detect them, ban the tool.”
2026 hiring
“Of course they use AI. The question is whether they can read it, fix it, prompt it, and override it when it hallucinates.”
Every shop now has Copilot, Cursor, Claude Code. The bottom quartile of every team is the one that takes the AI's first answer. The top quartile catches the hallucinated import, rewrites the over-engineered class, and ships something that actually works. We test for the top quartile.
The differentiator
Five tests for how someone works with AI.
No other platform does this. Most still treat AI as a thing to detect. We treat it as a tool to grade.
- 01Prompt quality
Can they brief an AI like they brief a junior?
We give them a feature spec. They write the prompt they would actually send. We score for context, constraints, edge cases, and acceptance criteria — not for verbosity.
Strong candidate response
Implement a debounced search hook for the Postgres-backed /api/search endpoint we already use in SearchBar.tsx. 300ms debounce. Cancel in-flight requests on new input (use the AbortController we use elsewhere). Return { data, error, loading }. Don't introduce a new fetch library — we use native fetch. Cover the empty-query case (return early, no request).
+ context+ constraints+ edge case - 02Reading AI code
Can they tell "works" from "good"?
We show them AI-written code that runs. They explain what it does, flag the AI-shaped tells — over-engineered classes, defensive try/catch eating real errors, non-idiomatic patterns — and say what they would change.
class UserDataManager { private cache: Map<string, User | null> constructor() { this.cache = new Map() } async getUserById(id: string | null): Promise<User | null> { if (!id) return null try { if (this.cache.has(id)) return this.cache.get(id)! return await fetchUser(id) } catch (e) { return null } } }Candidate
“A class for what should be a function. Swallows errors silently — caller can't tell a 500 from a missing user. Doesn't actually write to the cache, so it never warms.”
- 03Fixing AI code
Can they surgically fix one bug?
We plant exactly one realistic bug in an AI-written function. They find it and patch it minimally. We penalize broad refactors that miss the actual problem.
difffunction paginate(items, page, size) { - const start = page * size + const start = (page - 1) * size return items.slice(start, start + size) }
Correct — surgical fix. No collateral refactor. - 04Critique
Can they catch every hallucination?
We give them code with multiple planted flaws — fake APIs, off-by-ones, swallowed errors. We grade thoroughness: did they catch them all, or did they stop at the first one and say "looks good"?
Found by candidate · 3 / 3
lodash.deepFlattendoesn't exist —_.flattenDeepdoes.catch (e)swallows the error. Should at least log or rethrow.- Loop runs O(n²) — switch the outer to a Set lookup.
- 05Live collaboration
Watch them work with the assistant.
On the final question, the candidate gets an AI sidebar built into the editor. We record every prompt they send, every suggestion they accept, every chunk they reject, and every keystroke they make on top. The transcript goes to you.
function debouncedSearch(query: string) { // accepted from AI if (!query) return if (controller) controller.abort() // candidate edit: was 200, made it 300 timeout = setTimeout(...) }Sidebar transcript
You: use AbortController for cancellation
AI: <draft>
You: debounce is wrong — should be 300ms not 200ms
4 prompts · 2 accepts · 1 reject · 38% manual edits
Six dimensions
Five fundamentals. Plus the one nobody else tests.
Every assessment is generated for the specific role you're hiring for, in the specific tech stack you use. The questions change. The dimensions don't.
The differentiator
AI Collaboration
Five sub-tests: prompt quality, reading AI code, fixing AI code, critique, and live collaboration. The first assessment that grades AI fluency as a first-class skill.
See all five sub-tests- R
Code Reading
Untangle real code, spot subtle bugs, reason about architecture.
- W
Code Writing
Implement to spec. Complete partial code. Build features that compile and pass tests.
- D
Debugging
Find bugs in messy, real-world legacy code — bad naming, deep nesting, hidden state.
- C
Communication
PR descriptions. Explaining a refactor to a PM. Writing for the next human, not the compiler.
- T
Tradeoffs
Build vs buy. SQL vs NoSQL. Justify the choice — there is no single right answer.
The flow
From a JD to a scored candidate, in one sitting.
Paste a job description.
Or describe the role in a sentence. We pick up seniority, tech stack, and what the candidate will actually be doing.
Get an assessment in 30 seconds.
A custom test across all six dimensions, calibrated to the role. Reading, writing, debugging, communication, tradeoffs, AI collaboration.
Share a link. Get a scored report.
Candidates take the test async. You get per-question feedback, integrity flags, and — for AI questions — the full collaboration transcript.
Integrity
We allow AI where it's expected. We catch it where it isn't.
On the AI Collaboration section, the sidebar is right there — we're scoring how they use it. On every other section, behavioral analysis, keystroke pacing, paste pattern, and LLM fingerprinting flag candidates trying to outsource the fundamentals.
On AI questions
Sidebar visible. Every prompt, accept, and edit logged for the reviewer.
LLM fingerprint on a no-AI question
Uniform structure, hedging language, suspiciously polished prose under time pressure.
Pure paste
Non-trivial answer arrived with zero keystrokes — pasted from somewhere off-page.
Burst pattern
Long idle, then a 400-CPM burst, then submit. The 'they alt-tabbed to ChatGPT' fingerprint.
Tab switches
Five or more focus changes during a single question.
Pricing
Per assessment, not per seat.
The free tier is the full product. Upgrade when you're moving real volume, not before.
Free
Same features as Pro. Lower volume. The tier most teams stay on for months.
- 10 assessments / month
- All six dimensions, including AI Collaboration
- Full integrity reports
- PDF / CSV export
Pro
For teams hiring regularly.
- 250 assessments / month
- All Free features
- Remove Evaluator badge
- Priority support
- $0.50 / extra assessment
Pro Annual
Same as Pro. ~15% off.
- 3,000 assessments / year
- All Pro features
- Save ~$69 vs monthly
Stop hiring engineers who can ace a 2019 coding test.
Start hiring the ones who can ship working software in 2026 — with AI, around AI, despite AI.