Send a timed assessment built from real schemas. Get back a report that says how the code behaved — runtime, memory, shuffle stages — not just whether it returned the right rows.
Four steps, and only the last one needs you in the room.
Paste the job description, drop in the resumes. Each comes back ranked, with the reasoning and a quote from the resume behind every score. It never rejects anybody — below the bar just means nobody was invited automatically.
Pick questions by technology, difficulty and experience band. Set the clock, the pass mark and how long the invite stays valid.
One click, or automatically to everyone above the bar. Each candidate gets their own link and access code, no account needed, and the clock starts when they enter the code.
It arrives by email the moment they finish. Per-question outcomes, engineering metrics, and how many of the cohort solved each question — so a miss reads as the paper or the person.
Most of the work in screening was never the test. It was the pile of resumes before it, and the doubt about the room afterwards.
See a sample reportThe real layout, with invented figures.
Paste the job description once. It is read into weighted criteria you can edit — those are what everybody is scored against, so a wrong reading gets corrected in one place rather than argued with forty times. Then drop the resumes in.
Every criterion score has to quote the resume. One that cannot scores zero, whatever the model thought it remembered, so a recruiter reading “3 out of 5 on Spark” can see the line that produced it.
It ranks. It never rejects. Below the bar means nobody was invited automatically — the candidate stays on the list with their reasoning, and inviting them anyway is one click that needs no justification. Scoring is blind by default: names, contact details, date of birth and gender are stripped before the model reads anything, because a model asked to judge fit from a document with a name on it will use the name.
A still every forty-five seconds, on the report beside the code. Never video, never sound, and never their screen. The candidate sees their own camera for the whole attempt, so nothing is captured that they are not watching being captured.
They are asked before the clock starts, in plain words, and refusing is a real button — a refusal shows on your report as a refusal rather than as a no-show. The photographs are deleted on a clock you set.
What it cannot do, said here rather than found out later: there is no face matching, so it does not establish that the person in frame is the person you invited. A second laptop or a phone leaves no trace at all. It raises the cost of casual copying and it is not a guarantee — and a report implying otherwise would be worse than none, because you would trust it.
An algorithm puzzle says whether somebody can invert a binary tree. It does not say whether they can write a join that survives a skewed key.
Named columns and types, explicit constraints, and hidden datasets large enough that a naive answer runs out of time rather than passing quietly.
Every submission carries runtime, peak memory, shuffle stages and partition counts. Passing with a collect() looks different from passing properly, and the report shows the difference.
Candidates down, questions across, and how many solved each one. That row is what tells you whether question three was too hard or the candidate was not up to it.
Counted from the catalogue. Assessments draw from the same questions candidates practise on, so a paper is built from content that has been sat and calibrated rather than written for one interview.
Including the one that does not have a comfortable answer.
No, and it is built so that it cannot. Resume screening ranks and explains; there is no status meaning rejected, and a candidate below the bar stays on the list with the reasoning attached. The written summary on a report has three verdicts and the lowest is "not yet, on this evidence". You cannot build a reject pile on a column whose worst value is that.
Yes, and nobody who tells you otherwise is being straight with you. What we do instead is measure how the code ran — runtime, memory, shuffle stages, partition counts. A pasted answer that passes still shows its shuffle count next to everybody else’s, and the follow-up conversation is about the code in front of both of you.
It is off unless you turn it on, and it is stills every 45 seconds — never video, never audio, never the screen. They consent before anything starts and declining is recorded as a decline rather than a no-show. No face recognition, no identity matching, no score, and nothing is ever rejected automatically on the strength of it.
Identity is stripped before the model reads a resume — name, contact details, date of birth, gender, address — because a model asked to judge fit from a document with a name on it will use the name. Every criterion score has to quote the resume or it scores zero, and the overall figure is a weighted mean we compute rather than a number the model hands us.
It grades SQL, Python, PySpark, Spark, Databricks and data modelling against hidden datasets, in the same sandbox candidates practise in. The questions are the ones people have already sat, so a paper is built from content that has been calibrated rather than written the night before an interview.
There is no seat licence. It is priced per hire, so a quiet quarter costs nothing and you are not buying capacity you will not use.
We will set up a real assessment against a role you are hiring for, and you can send it to yourself first.
Priced per hire rather than per seat, so a quiet quarter costs nothing.