HAN VERIFIABLE COMPETENCE
/ sample report
TR · EN Sign in · soon
SAMPLE This report was generated from a real session and is publicly accessible; no sign-in required. This sample session was run in Turkish and has been translated; HAN operates in whatever language the task is written in.
TASK · SOFTWARE DEVELOPER
URL shortener service
✓ HIRE OUTSTANDING HIGH CONFIDENCE ⏱ 1h 05m ⌨ TERMINAL · cli-han
The candidate drove the session from start to finish with their own architectural plan: file separation, base62+UNIQUE retry, crypto.randomBytes, the 302 vs 301 rationale, catching the missing trustProxy/X-Forwarded-Proto before the AI did, and spotting the innerHTML XSS in the UI themselves are strong signals; rejecting the AI's speculative root-cause explanation and demanding evidence from node_modules is a mark of mature AI management. The weakest aspect is spending ~30 minutes on the vitest inject body issue in cyclical guesswork. This profile is close to senior level; a hire is recommended · deploy verification and debugging efficiency can be probed in a second round.
submitted Aug 29 01:45analyzed Aug 29 02:27band: Outstandingevaluation v2.3
Report Raw transcript (130)
81
/ 100
7 dimensions · weighted
total
HAN
SEALED
block 93.956.595 · verify seal ↗
/ COMPETENCE PROFILE · 7 DIMENSIONS
Comprehension
88
Knowledge
87
AI usage
85
Experience
82
Competence
77
Completion
76
Process
76
Total = Completion 20% + Competence 20% + AI usage 15% + Knowledge 15% + Comprehension 10% + Process 10% + Experience 10%
/ TASK LAYERS · DERIVED BY THE EVALUATOR
BASIC
▸ HTTP methods and status codes
▸ REST endpoint design, JSON body
▸ Simple SQL schema, INSERT/SELECT
▸ HTML form + fetch client side
▸ npm setup, git, .gitignore
INTERMEDIATE
▸ base62 short code, UNIQUE + retry
▸ URL validation and input sanitization
▸ 302 vs 301 · counter/cache impact
▸ Testable application factory
▸ Dockerfile, compose, reverse proxy
ADVANCED
▸ trustProxy / X-Forwarded-Proto
▸ Cryptographic randomness, modulo bias
▸ XSS: safely writing the URL to the DOM
▸ SQLite WAL, volume, healthcheck
▸ Automatic TLS flow, root cause vs workaround
/ DIMENSIONS · SCORE CARDS
click a quote to open the transcript
Completion×0.2076
Parts proven to work: 4/4 vitest passed, the creation/302 redirect/click counter/404 tests are green, '/' → '/ui/' 302 and POST /api/links verified with curl, tsc build + /health response received in prod mode…
evt_80 ✓ test/api.test.ts (4 tests) 198ms ✓ creates a link ✓ redirects…
+ 5 evidence items and detail
Competence×0.2077
Actually reads the AI's output: caught the missing trustProxy, that POST should return 201, the XSS, and the AI's speculative 'Fastify parser state is corrupting' claim; interpreted the vitest error message format correctly, unlike the AI…
evt_31 "Something's missing: behind a reverse proxy req.protocol returns http…"
+ 5 evidence items and detail
AI usage×0.1585
The first prompt provided the architecture, file structure, endpoints, code-generation strategy, and deploy target; set a clear checkpoint with 'first just build the skeleton, then stop.' Broke the tasks down, constraints at each step…
evt_2 "Task: URL shortener service. Here's my plan, let's proceed accordingly…"
+ 5 evidence items and detail
Knowledge×0.1587
Speaks at the advanced layer: said before the AI that req.protocol would return http without trustProxy, justified the 302/301 difference via the counter and cache, WAL, UNIQUE+retry, crypto.randomBytes…
evt_2 "Task: URL shortener service. Here's my plan, let's proceed accordingly…"
+ 5 evidence items and detail
Comprehension×0.1088
Correctly mapped all components of the task (API, counter, UI, reverse proxy + HTTPS, documented deploy) in the first message; foresaw a hidden risk such as the static UI clashing with the '/:code' catch-all…
evt_2 "Task: URL shortener service. Here's my plan, let's proceed accordingly…"
+ 3 evidence items and detail
Process×0.1076
Skeleton → db → routes → test → UI → deploy → git order is clear, requested verification at each step. When stuck, set a 20-minute limit and moved on by noting the workaround in the README; but there is time lost in the debug loop…
evt_2 "Task: URL shortener service. Here's my plan, let's proceed accordingly…"
+ 5 evidence items and detail
Experience×0.1082
Went into security and ops topics unprompted: URL scheme restriction and the 2048 limit, testing the javascript:/ftp: cases, foreseeing the catch-all clash, catching the XSS themselves, compose healthcheck, volume persistence…
evt_2 "Task: URL shortener service. Here's my plan, let's proceed accordingly…"
+ 5 evidence items and detail
/ TIMELINE · SENTIMENT CURVE
overall +0.45
✕ error / rejection! error… stall✓ test passed⚑ submission
+1 0
0 min
20 min
40 min
60 min
65 min
13:00
AI suggestion rejected · the candidate detected the missing trustProxy / X-Forwarded-Proto and had it fixed, and pushed POST to 201 evt_31 evt_33
45:00
Speculation rejected · demanded evidence from the node_modules source for the 'Fastify parser state is corrupting' claim evt_82 evt_84
14:00!
Error · 1 test dropped on the first test run: 'expected 404 to be 302' evt_40
47:00
Stall · root cause not found; set a 20-minute limit and noted the workaround in the README evt_85 evt_86
21:00
Stall · the AI read the error message backwards; the candidate intervened and correctly explained the vitest format evt_48 evt_50
52:00
XSS caught · flagged s.url being written to innerHTML in the UI as XSS and had it escaped evt_102 evt_106
35:00
Stall · guessing loop; the candidate said 'stop guessing' and asked for the POST body to be logged evt_63 evt_67
61:00!
Error · docker not found; compose/Dockerfile could not be verified, relied on the README evt_121 evt_125
42:00
Test passed · 4/4 tests green with an explicit JSON string payload evt_80
64:00
Submission · submitted with git init, .gitignore, and a single commit evt_126 evt_129
/ REQUIREMENTS
6 / 8 COMPLETED
Accept a long URL via POST and generate a short codeevt_22 evt_80
Redirect from short code (302)evt_22 evt_80
Click counterevt_17 evt_37
Statistics endpointevt_22 evt_80
Web interface with a link-creation form and a statistics page PARTIALevt_93 evt_100
Packaging with HTTPS behind a reverse proxy (Docker + Caddy) PARTIALevt_112 evt_121
Documentation of deploy steps (README)evt_118
Testsevt_37 evt_80
/ RED FLAGS
✓ No red flags found in the transcript.
/ HIGHLIGHTS
at most 6
Full architectural plan in the first prompt and the 'build the skeleton then stop' checkpoint evt_2
Caught the req.protocol issue behind the reverse proxy before the AI and had trustProxy added evt_31
Rejected the AI's speculative root-cause explanation and demanded evidence from the library source evt_82 evt_84
Detected the innerHTML XSS in the UI themselves and had it escaped evt_102 evt_106
Foresaw the static-file clash with the '/:code' catch-all and designed a /ui/ prefix + '/' redirect evt_86 evt_100
~30 minutes of cyclical guessing on the test failure; a workaround was accepted without finding the root cause (with a README note) evt_48 evt_63 evt_85
/ EVIDENCE CHAIN · ON-CHAIN
This report is sealed on-chain.
The seal below was computed from the cryptographic digests of the transcript and the report and written to the Avalanche C-Chain. If either one changes, the seal no longer holds.
only digests on-chain · never a name, score, or transcript
SEALBLOCK 93.956.595 · AUG 29 2026 02:27 UTC
0x454e10339236476e174ef2207b7ab2ca426e043f854ee2cfd4f8e59fd25b2f8c
Verify seal Snowtrace ↗ Download identity document
⚖ The final decision belongs to the evaluator. This report is a screening aid; scores are based on evidence drawn from the transcript and do not replace human review.
It looks like this for your own candidates too.
Write a task, invite a few candidates, read the reports yourself. You still make the decision · but this time you have evidence in hand.
Sign in · soon What is HAN?
HAN han.tayf.io · omer@tayf.io · the system screens, the human decides cli-han · live-environment sub-product ↗ © 2026 · Bursa, Türkiye