Hiring platformCyberr Technical Tests

Technical Tests at Cyberr: from claimed skills to proven ones 

Role
Sole Product Designer
Scope
User Research, Competitive Analysis, UI/UX Design, Usability Testing
Team
Product Manager, Machine Learning engineers, Frontend engineers
Users
Cybersecurity candidates (junior to senior) and hiring clients: recruiters, hiring managers, technical leads
Cyberr Technical tests hub with pending tests, value banner and test categories

In cybersecurity hiring, everyone says they’re good. I designed the feature that lets candidates prove it, and gives clients a way to act on that proof. The hard part wasn’t the screens. It was making a test feel safe enough for candidates to take, and credible enough for clients to trust.

Context 

Cyberr is a hiring platform and professional network built only for cybersecurity. It had already solved two layers of trust: identities were verified, and certifications were validated via Credly. Clients could search talent, use AI matching, build shortlists and hire directly.

But a verified identity and a valid certificate still say nothing about whether a person can find and exploit a misconfigured service under time pressure. That was the layer missing. Clients kept running their own technical screening outside the platform, and every good candidate looked the same on paper as an average one.

A partnership with Airbus gave us realistic, hands-on missions in a real attack environment. My job was to turn that into a product people on both sides would actually use.

The Tension 

A test sits between two people who want opposite things from it.

Wants
The candidate
To look strong and get noticed
The client
To see the truth, fast
Fears
The candidate
A bad result following them forever
The client
A result that can be gamed or means nothing
Needs from the design
The candidate
Safety and control
The client
Transparency and comparability

If we lean too far toward the client, candidates don’t start. If we lean too far toward the candidate, the result becomes marketing, and clients stop trusting it. A test nobody takes and a result nobody trusts fail in the same way: the feature dies.

The first spec leaned toward strictness: one attempt per test, results synced to the profile, no detailed feedback. It was clean from an engineering point of view, but it assumed candidates would accept high stakes with no control. I wasn’t sure they would, so before designing anything I wanted to hear from both sides.

What the market taught us 

The skills gap in security is about quality, not just headcount: in 2024 ISC2 estimated a shortfall of about 4.8M professionals, and 90% of respondents reported skills gaps on their teams (ISC2). Employers need a better signal, and several products already try to give one.

Looking at them, I saw two camps. Training platforms like Hack The Box, TryHackMe and Root-Me PRO are great at motivation, with ranks, leagues and streaks. But their scores mostly measure how active you are, and hiring is a side feature. Assessment tools like HackerRank and TestGorilla live inside the hiring process, but their results belong to one employer. Candidates take a new test for every application, and the tests lean toward knowledge checks rather than hands-on work.

That gave me three principles to design by:

  1. 01Borrow the motivation, not the noise. Gamification should pull candidates in, but the result must reflect skill, not grinding.
  2. 02The result belongs to the candidate. It should be portable across employers, and the candidate decides when it’s shown.
  3. 03Tests live where hiring happens. For clients, a test is useful only inside the project they are hiring for, next to the people they are considering.

Listening to both sides 

I ran discovery interviews with 6 candidates (half junior and mid-level, half senior) and 5 clients (recruiters, hiring managers and a technical lead). I split candidates by seniority on purpose: I expected juniors and seniors to feel very differently about being tested, and they did. Later, two rounds of moderated usability tests on Figma prototypes, with 5 participants per group each round, checked whether the design actually solved what we heard.

How the sessions were set up

Candidate interview
Format
45 min, remote
What it covered
How they prove skills today, how they feel about being tested and ranked, what they expect after a test on an external platform
Client interview
Format
45 min, remote
What it covered
How they screen technical skills today, which signals they trust, how they’d compare candidates and who should pay for a test
Candidate usability test
Format
40 min, Figma prototype, think-aloud
What it covered
8 tasks, from finding a test to understanding what it takes to reach the next league
Client usability test
Format
30 min, Figma prototype, think-aloud
What it covered
6 tasks, from sending a test from the shortlist to booking a meeting with the strongest candidate

Every usability task had a success criterion and an ease rating (SEQ, 1 to 7); candidate sessions ended with a SUS questionnaire. Issues were rated by severity and compared between rounds. One interview question did most of the work with clients: “A candidate scored 70% on a practical pentest. What does that tell you?” Almost nobody could answer without asking what exactly the person got wrong.

Research scripts: recruiting criteria, all four scripts and usability tasks.

What survived the synthesis

After each round I clustered notes on an affinity map and kept only patterns that came up with at least three people. Here is what survived, and what it changed.

Senior candidates would rather have no result than a weak public one
Where it came from
3 of 3 senior interviews
What it changed in the design
Results are private by default; publishing is the candidate’s choice
Candidates postpone tests when the effort is unclear
Where it came from
5 of 6 candidate interviews
What it changed in the design
Level, time and topics are visible on every card; a details panel before starting
Leaving the platform for the test environment creates doubt: did it save, when will I know?
Where it came from
Interviews, confirmed in usability round 1
What it changed in the design
A Pending tests block that tracks every active test and its deadline
Juniors see tests as a way to stand out without experience
Where it came from
3 of 3 junior interviews
What it changed in the design
Leaderboard and leagues to reward progress and make strong juniors visible
Clients don’t trust a single number; they trust comparison
Where it came from
4 of 5 client interviews
What it changed in the design
A side-by-side view of candidates on the same questions
Clients already have a shortlist and want to test those exact people
Where it came from
5 of 5 client interviews
What it changed in the design
Send test starts from the project shortlist, not from a separate catalog
Clients want to know what candidates will face before paying
Where it came from
Usability round 1
What it changed in the design
Test details with the full question list, available before sending
The insight that reframed the project came from a senior pentester. Asked how he would feel about a public score, he said he’d simply never take the test. That one answer turned the first spec’s strict model upside down: if the most experienced people opt out, the leaderboard fills with beginners, and clients learn to ignore it.

Five decisions that shaped the product 

01Private by default, shared by intent

The central question was who sees a result, and when. We considered three models:

  • Public by default, as in the first spec. This gives maximum transparency, but research told us senior candidates would simply not start.
  • Auto-hide weak results below a threshold. This feels safe, but clients would see only good scores and stop trusting all of them.
  • Private by default, with explicit sharing. This is what we chose.

The final model has two contexts. A test a candidate takes on their own stays private until they press Publish on my profile. A test a client sends is shared with that client by design, because the candidate accepts it as part of an application. Candidates get control where it matters for reputation; clients get unfiltered results where it matters for hiring. Retake test lowers the stakes even further: a first attempt is practice, not a verdict.

Candidate test result with points, correct answers, time spent, per-question breakdown, Retake test and Publish on my profile

02Designing the in-between

The tests run in the Airbus environment, not in Cyberr. That gap is where trust leaks: users finish, close the tab, and don’t know if anything happened. An email alone felt too passive, and a status buried in the test card was too easy to miss.

I made the waiting state a first-class part of the page. Pending tests sit at the top of the hub: each card shows the test, the role and company it came from, the time left with a progress bar, and one action, Go to test. Results sync back automatically, so the block quietly turns into a result. Honestly, this was the least glamorous screen in the project, and probably the one that did the most for completion.

Mobile test screen in the “Waiting for results” state after returning from the Airbus environment

03Effort you can see before you commit

Candidates postponed tests when they couldn’t estimate the effort, so every card answers three questions at a glance: how hard (a level scale), how long (time) and what you get (points). A details panel before Start mission explains the environment and the topics covered. The pattern repeats on the client side: a client sees the same details, plus a Questions tab, before sending a test to anyone.

Client picks a test from areas of cybersecurity, each with a level scale and duration

04From a number to a decision

For clients, the score itself was never the product; the decision was. We explored a ranked list of candidates by score and profile cards with a score badge. Both reduced people to one number, which is exactly what clients said they didn’t trust.

The final Test results view is a matrix: candidates in columns with their overall score, questions in rows with a clear pass or fail mark for each. A recruiter instantly sees that two candidates with similar totals failed completely different topics. Each test has its own tab, and Book a meeting sits right in the header, so the comparison ends with an action, not a spreadsheet.

Test results matrix comparing three candidates question by question, with Book a meeting in the header

Getting there had to be just as direct. Send test lives in the project’s shortlist and opens a three-step flow: select candidates, pick a test, send. A Tech Tests Left counter and an inline Buy more tests panel mean running out of tests never breaks the flow.

Step 1 of Send test: selecting candidates from the shortlist, with Tech Tests Left counter and Buy more tests

05Motivation without noise

We wanted juniors to have a reason to come back, without turning the leaderboard into a points race. Leagues are based on points from validated tests, not on weekly activity. The user’s own row is always pinned at the bottom of the table, even far down the list, and a progress card turns a distant rank into a concrete next goal: how many points to the next league.

Leaderboard with league tabs, podium, the user’s pinned row and a progress card to the next league

What usability testing changed 

The first round of usability tests didn’t challenge the big decisions, but it exposed the gaps between them. Most issues were about clarity at moments of uncertainty, the same theme as the research.

What we saw in round 1
Several candidates read the dot scale as a rating, not a difficulty
What we changed
Added a “Level” label next to the dots and kept the scale identical on every screen
What we saw in round 1
Candidates weren’t sure whether a finished result was already public
What we changed
A private state by default and a single, explicit Publish on my profile action
What we saw in round 1
Clients looked for a way to test candidates in the Candidates tab, not in a separate section
What we changed
Send test moved into the project shortlist, where clients already make decisions
What we saw in round 1
Clients hesitated to send a test they couldn’t preview
What we changed
A Questions tab in the test details, available before sending
What we saw in round 1
Running out of tests mid-flow sent clients to a separate pricing page
What we changed
Tests left are visible on the first step, and buying more opens in a side panel
What we saw in round 1
Clients compared only the overall percentage and missed the detail
What we changed
Per-question marks made high-contrast, with overall scores moved into the column headers

In round 2, every candidate found their pending test and understood their result’s visibility without help. Clients completed the send-a-test flow without help, and most went straight to the per-question view when asked who did best.

The outcome 

Technical Tests shipped to production. Exact numbers are under NDA, but the shape of the result is clear:

A new layer of trust.

Cyberr now verifies identity, certifications and practical skills, which no general job board offers.

Screening moved inside the platform.

Clients test their shortlist within a project and compare candidates before booking interviews, instead of running separate processes.

A new revenue stream.

Paid tests for clients and candidates turned an Airbus partnership into a product line.

What we measure

I worked with the PM to define success as a funnel, not a single number, so the team can see where trust breaks:

Candidates
Metric
Test start rate from the hub
What it tells us
Is starting a test perceived as safe and worth the time?
Candidates
Metric
Completion rate after leaving for the test environment
What it tells us
Does the hand-off work?
Candidates
Metric
Publish rate of finished results
What it tells us
Do candidates believe results help them?
Clients
Metric
Projects where a test was sent
What it tells us
Is testing part of the hiring flow?
Clients
Metric
Interviews booked from Test results
What it tells us
Does comparison lead to decisions?
Business
Metric
Repeat test purchases
What it tells us
Do clients see enough value to pay again?

What I learned 

Trust is a two-sided design problem.

I started by designing a feature for candidates and ended up designing a contract between two people. Every decision had to work for both, and the best ones, like private by default and shared by intent, gave each side what it needed without taking it from the other.

The quietest screens carry the most weight.

A waiting state rarely gets design attention, yet in a flow that leaves the platform, it is the moment that decides whether people come back. The Pending tests block did more for completion than any of the more visible screens.

A number is not an insight.

Clients didn’t want a better score; they wanted an easier decision. Designing for the decision, not the data, changed the results view completely.

Push back on the spec with evidence, not opinion.

The first spec wasn’t wrong, it was untested. One clear pattern from seniors was enough to change the core model, because it came with a real consequence for the business: an empty leaderboard.