Open source

Clearhire

Open-source platform, built with Claude Code · AI recruiting with evidence

An AI recruiting platform that checks CVs against each requirement of a vacancy and shows the CV line behind every verdict — blind screening, a local LLM that must cite its sources, and an audit log anchored on a blockchain.

Clearhire preview

Problem

Screening tools rank CVs by one similarity score that nobody can explain, can be swayed by names and age, and leave no record a candidate or an auditor could check.

Solution

Requirement-level checks with the CV quote behind each verdict, blind screening before any model, an LLM that may only explain with citations, and a tamper-evident audit log anchored on a chain.

Built in

nDCG@10 0.972 on 312 synthetic CVs (embeddings alone: 0.603); identical scores in all 486 blind-mode swaps; a live demo, and CI covering Python, three front ends, the contract and a Kubernetes end-to-end run.

Overview

Clearhire is an open-source recruiting platform I built with Claude Code to show a whole AI product, from reading a CV to deployment. A candidate can check a CV against a role before applying and see each requirement found or not, with the line of the CV that shows it; recruiters get the same reading, ranked.

The backend is Python: CVs in PDF, Word or scans go through Tesseract OCR into a profile with dated roles and evidence for each skill, pgvector embeddings power hybrid search, and a C++ skill matcher has a pure-Python fallback. Ranking uses the requirements, not one similarity number. Personal details are replaced before the embedding model reads the text, a local Qwen 3.5 9B writes summaries where uncited sentences are dropped, and every decision goes into a SHA-256 chained audit log whose Merkle roots are anchored hourly in a Solidity contract.

It is measured on a generated set of 312 CVs and 39 vacancies with known answers: nDCG@10 0.972 against 0.603 for embeddings alone, skills read with F1 0.997, and identical scores in all 486 blind-mode swaps of gender, origin and age. The demo runs live with Docker Compose on a GPU server, and a Helm chart is tested end to end on kind in GitHub Actions.

What it does

  • Reads CVs in PDF, Word, scans and photos (Tesseract OCR), in English and Russian, into skills, dated roles, languages and degrees
  • Ranks candidates by unmet must-haves first, then requirement score, then similarity, with the quote behind every verdict
  • Blind screening before the model sees the text; a local LLM (Qwen 3.5 9B) writes summaries and answers that must cite the CV
  • Angular console, Next.js careers site and NestJS Telegram bot over one FastAPI API; audit log anchored in a Solidity contract; Helm chart tested on kind in CI

What's next

Hiring for a full-stack or Python role — or need something like this built? Let's talk.

I'm open to offers — on-site or hybrid in Moscow, or remote; full-time or contract. I reply within 48 hours — faster on Telegram.

Get in touch TelegramDownload CV

Alhassan Alfarran.

© 2026 · Designed and built by me with Next.js, Tailwind and Framer Motion.

My local time: · Moscow

Notes
How this site is built

Stack

Next.js (App Router) and React, styled with Tailwind CSS and animated with Framer Motion. The contact form sends email through Resend; the site is hosted on Vercel.

Three languages, one layout

English, Russian and Arabic each have their own address (/en, /ru, /ar) and share one set of components. The layout uses logical CSS properties (start/end instead of left/right), so Arabic mirrors right to left without separate styles. The server sends every page with its language and text direction already set, so nothing flips after loading, and the Arabic font is only downloaded when Arabic text is on screen.

Performance and accessibility

Sections below the first screen skip rendering until you scroll near them, and the quick menu loads on first use. Everything works from the keyboard, with a skip link and visible focus, and animations switch off when your system asks for reduced motion.

Source code on GitHub