SkillForgeMeasure your own resume
The ruler

Benchmarks

Every level, gap and week in SkillForge is arithmetic over the rows below. The model reads a resume and reports what it found; it never picks a number. This is the ruler it is measured against — published so you can disagree with it specifically.

Benchmarks/SDET
v2026.1
Test infrastructure and the automation that keeps releases honest.12 tracks · 2 blocking
TestingblockingProving code works, and keeping it working while it changes.needs 8.0·×2.0·9h / level
The ladder
  1. 2Has written a testAt least one test file exists.
  2. 4Tests the awkward casesBoundary and failure cases, not just the happy path.
  3. 6Tests across a boundaryAn integration test against a real database or HTTP layer.
  4. 8Uses tests to drive a changeA regression test written before the fix.
Docker & CI/CDblockingPackaging an application and getting it to production without touching a server.needs 7.0·×1.5·9h / level
The ladder
  1. 2Has run someone else's containerdocker run appears in a README.
  2. 4Has written a working DockerfileAn image that builds and starts from a repo you own.
  3. 6Has a pipeline that gates mergesCI runs tests and blocks a red build.
  4. 8Has deployed on merge, with a rollbackAutomated deploy plus a documented way back.
REST & API designDesigning an interface other people have to live with.needs 6.0·×1.2·12h / level
The ladder
  1. 2Can call an APIConsumed a third-party HTTP API.
  2. 4Has built endpoints that workA CRUD surface in a shipped project.
  3. 6Handles errors, auth and paginationStatus codes and auth chosen on purpose.
  4. 8Versions without breaking clientsEvolved a live API compatibly.
Linux & shellBeing productive on a machine with no GUI, which is where the code runs.needs 6.0·×1.0·8h / level
The ladder
  1. 2Moves around a filesystemComfortable with the everyday commands.
  2. 4Chains tools togetherPipes, grep, awk to answer a real question.
  3. 6Debugs a running processRead logs, checked ports, inspected resource use.
  4. 8Scripts a repeatable operationA script other people run.
ObservabilityKnowing what production is doing before a user tells you.needs 5.0·×1.1·10h / level
The ladder
  1. 2Logs thingsDeliberate log statements, not leftover prints.
  2. 4Uses structured logsMachine-readable fields that can be queried.
  3. 6Measures latency and error rateMetrics, and a sense of what normal looks like.
  4. 8Traced a slow request end to endFound a bottleneck across services.
Version controlWorking on a codebase with other people without losing work.needs 6.0·×0.9·6h / level
The ladder
  1. 2Commits and pushesA repository with a history.
  2. 4Branches and mergesFeature branches and resolved conflicts.
  3. 6Writes reviewable changesFocused commits with messages that explain why.
  4. 8Recovers from a mistakeBisect, revert or reflog used in anger.
ConcurrencyDoing several things at once without corrupting state or deadlocking.needs 5.0·×1.0·12h / level
The ladder
  1. 2Knows the primitivesCan name threads, locks, channels, async.
  2. 4Has written concurrent code that worksA parallel or async path in a real project.
  3. 6Has found and fixed a raceA specific bug, and what made it reproducible.
  4. 8Designs to avoid shared stateChose an architecture that makes races impossible.
Security basicsThe failures that get student projects rejected in review.needs 5.0·×1.0·9h / level
The ladder
  1. 2Keeps secrets out of the repoEnvironment variables, not committed keys.
  2. 4Hashes passwords and validates inputNo plaintext credentials, no string-built SQL.
  3. 6Implements authz, not just authnChecks what a user may do, not only who they are.
  4. 8Threat-models a featureIdentified an abuse case before shipping.
DSA — graphs & DPThe problem-solving round. Graphs and dynamic programming are where campus interviews concentrate.needs 5.0·×0.9·27h / level
The ladder
  1. 2Arrays, strings, hashingComfortable with the basics under time pressure.
  2. 4Trees and recursionTraversals and divide-and-conquer without hints.
  3. 6Graphs and shortest pathsBFS/DFS, Dijkstra, topological sort from scratch.
  4. 8Dynamic programming under time pressureRecognises the state and transition unaided.
SQL & data modellingDesigning a schema and making the database do the work efficiently.needs 5.0·×0.9·14h / level
The ladder
  1. 2Reads and writes basic SQLSELECT, JOIN, GROUP BY.
  2. 4Designs a normalised schemaSensible keys and relationships in a real project.
  3. 6Reads a query planUsed EXPLAIN to make something measurably faster.
  4. 8Understands the cost of an indexCan say when an index hurts writes, with evidence.
System designChoosing and defending an architecture under real constraints — traffic, latency, failure.needs 4.0·×0.8·16h / level
The ladder
  1. 2Can name the componentsUses the vocabulary: load balancer, cache, queue, replica.
  2. 4Has drawn one under loadA diagram with an identified bottleneck, not just boxes.
  3. 6Has estimated capacity and justified a cacheNumbers behind the choice — QPS, payload size, hit rate.
  4. 8Has broken a real system and written it upA load test that found the limit, and a postmortem.
CachingTrading freshness for speed on purpose, and knowing what it costs.needs 3.0·×0.5·10h / level
The ladder
  1. 2Knows what a cache is forCan explain the read-path benefit.
  2. 4Has added oneRedis or in-memory caching in a project.
  3. 6Has an invalidation strategyTTL or explicit invalidation chosen deliberately.
  4. 8Has reasoned about a stampedeHandled cold starts or thundering herds.
How a level is measured
1
Extract

The model reads the resume once and reports evidence — booleans and counts like “two projects use this, neither shipped, no tests”. It is never asked for a score, and every flagged line must cite a page and line that really contains it.

2
Weigh

Code sums what that evidence is worth using the fixed table below, then clamps to 0–10. The weights encode an opinion worth saying out loud: a shipped thing beats a built thing, a measured outcome beats both, and a bare claim is worth almost nothing.

3
Snap

The number is anchored to the track's human-written ladder — the highest rung the evidence actually reaches. That is why a level can always be explained in words, not just digits.

4
Compare

The role's benchmark sets the required level and its weight. gap = required − proven; weeks-to-close = gap × hours-per-level ÷ your weekly hours. Readiness is the weighted shortfall across all tracks, out of 100.

Worked example/Testing

A student whose resume shows: the skill named, two projects using it (neither shipped), a public repository, and a B in the related coursework. `provenLevel()` scores that — at render time, on this page — as:

Named on the resume
+1.0
2 projects
+2.0
Public repository
+0.4
Coursework B
+0.6
Proven levelreaches the “Tests the awkward cases” rung
4.0
What Testing requires for this role
8.0
Gap, and weeks to close at 9 hrs/week
4.0 · 4 wks

Nothing above came from a template — this example runs through the same exported function the analysis uses, so it cannot drift from the real scoring.

The arithmetic
gapmax(0, required − proven)
weeksToCloseceil(gap × hoursPerLevel ÷ weeklyHours)
readiness100 × (1 − Σ wᵢ·gapᵢ ÷ Σ wᵢ·requiredᵢ)
statusproven ≥ required ? met : open

Four lines of TypeScript, applied identically to every student and every role. Switching your target role re-runs only these — which is why it takes milliseconds and costs nothing.

What evidence is worth
Named on the resumea claim with no artefact behind it — deliberately worth one point of ten+1.0
Each project using itsomething was actually built with the skill · counts up to 3+1.0
Each one that shippeddeployed where someone else could use it · up to 2, on top of the project point+1.0
A measured outcomea before/after number — the strongest cheap signal that the work was real+1.0
Tests exista test suite is rare enough in student work to earn nearly a full point+0.8
Public repositorythe code is readable by anyone, so every other claim becomes auditable+0.4
Internship monthsprofessional use, per month · capped at 6 so tenure can't outweigh built work+0.15
Coursework gradeA / B / C — corroborates other evidence; can confirm a level, never establish one+1.0 / 0.6 / 0.2
Competition useused under time pressure, which filters familiarity from copy-paste+0.5
Years claimedself-reported and unverifiable, so weighted lightly · up to 3+0.2

Summed, clamped to 0–10, then snapped to the nearest rung of the track’s ladder. Adding evidence can never lower a level.