Hiring platform
Careers site, apply wizard, AI scoring of CVs and interview scheduling, built end to end and live.
- Role
- Product engineer, end to end
- Years
- 2024 to present
- Stack
- Next.js, AI CV scoring, OCR, Microsoft Graph
- Scale
- Live for the whole group

Problem
Applications reached the group as CVs in a shared recruitment mailbox. Reading, scoring and scheduling were done by hand.
How I worked
I built it end to end: the public careers site, the apply wizard, the scoring and the recruiter side. I started from the candidate, not the pitch, so the job list is the front page and applying takes a name, a phone number and a CV. I measured the scoring against a fixture set before trusting it, and walked every release on the live site with labelled test data, then deleted that data.
What I built
- A public careers site and an apply wizard.
- AI scoring of CVs, with OCR for scanned files and a fixture set to check the scores.
- Interview scheduling on Outlook calendars.
- A triage inbox over the shared recruitment mailbox.
The hard parts
The AI scoring was slow, and slower meant worse.
The agent toolkit switched on extended thinking for the small model by default. One CV score took about 78 seconds and ordered candidates less accurately. Turning thinking off cut it to about 10 seconds, with better accuracy on my fixture set. I then checked every similar route for the same default.
10 seconds to score one CV, was 7810
Applying twice quietly reset your place in the queue.
A second application refreshed the first one, with a new date and a new score. Now a repeat is refused and returns the original date. Identity is the phone number, compared on its last nine digits so local and international formats match, and both checks run before anything is written.
A test locked in the bug.
Salaries showed a dollar sign when they were riyals, and a range of 1,000 to 1,500 rounded up to read 1k to 2k. The unit test asserted the dollar output, so it passed. I fixed the formatter, rewrote the test to fail on the old output, and now break every fix on purpose first.
Result
- The product is live. Candidates apply on the careers site and recruiters work from scored applications.
- Scores are checked against a fixture set, so a change to the scoring cannot drift unnoticed.
Next
Investor relations site and AI assistant
A public investor site and an assistant that answers from an approved knowledge bank, never from guesswork.
Hiring for a senior role? Let's talk.
Tell me the role or what is slowing your team down. I reply within two working days.