The Problem

The remote job market is broken in two directions at once.

Job seekers are drowning in fake postings. Thousands of fraudulent listings flood job boards every single day — promising high salaries, flexible hours, dream opportunities. Real people apply. Real people get scammed. They lose money, they lose weeks, and they lose confidence in the search entirely.

On the other side, recruiters are posting vague, bloated job descriptions that repel the exact candidates they are trying to attract. Rockstar ninja developers. Ten plus years of every framework. No salary. No context. Nobody wins.

This is the problem the Scale Without Borders Hackathon challenged me to solve. SafeHire is my answer.


Demo

SafeHire Demo

Watch the full demo on YouTube


What I Built

SafeHire is a three-mode AI job intelligence platform powered by the Claude API.

Mode A — Job Legitimacy Analyzer

Paste any job posting and get an evidence-based fraud score from 0 to 100 across eight signal categories — salary transparency, contact method, upfront payment requests, company verifiability, grammar quality, application process legitimacy, remote work validity, and implausibility indicators. Each signal returns a verdict and a one-line explanation. Not a generic warning. A specific breakdown in seconds.

Mode B — Remote Job Advisor

Enter your skills and Claude searches Greenhouse, Lever, LinkedIn, and company career pages in real time using the Claude web search tool. Every result is scored for skill match, annotated with matched and gap skills, and fraud-screened by the same engine powering Mode A before it ever reaches the user. SafeHire is the only job search tool that guarantees every listing it surfaces has already passed a fraud check.

Mode C — Job Posting Auditor

For recruiters. Paste a job posting before it goes live and get an eight-dimension quality audit covering clarity, DEI language, requirement bloat, salary transparency, company sell, role impact, application UX, and keyword strength. Each dimension returns a score out of ten, a specific issue, and a concrete fix. Then hit AI Rewrite and Claude rewrites the entire posting incorporating every suggestion. From a grade F posting to publish-ready in under thirty seconds.


What Inspired Me

I have been through the job search myself. I know what it feels like to spend two weeks on an application for a role that turned out to be a scam. I know what it feels like to search for remote work and get buried in recycled aggregator listings that have nothing to do with my actual skill set.

The Scale Without Borders theme — scaling opportunity without borders — made the direction obvious. Remote work is the great equalizer. But only if the infrastructure around it is trustworthy. SafeHire is that infrastructure layer. I built it because I needed it myself.


How I Built It

Frontend

React with TypeScript, Vite, and Tailwind CSS. I centralized all API calls in a single claude.ts module with a multi-strategy JSON parser to handle Claude response variability gracefully.

AI Layer

Three distinct Claude API integrations, each with carefully engineered system prompts:

Mode A uses a structured prompt that forces Claude to return a strict JSON schema with exactly eight signal objects. I included a concrete example response in the system prompt to anchor the output format and eliminate markdown fence leakage.

Mode B uses the web_search_20250305 tool with a search strategy prompt that targets specific job boards by domain, enforces fraud pre-screening at the prompt level, and returns matched and gap skills alongside each result.

Mode C uses two separate API calls — one for the audit returning scored dimensions with issue and suggestion fields, and a second for the rewrite that receives the full audit result as context so every suggestion is applied precisely.

Infrastructure

Vite dev proxy for local development. Vercel serverless function at api/anthropic.js for production, keeping the API key server-side at all times.

Quality

I had the project independently QA audited across 18 test cases covering fraud detection accuracy, input validation, XSS injection resistance, mobile responsiveness, and UX quality.

Overall audit score: 74/100 Fraud detection engine: 95/100 Security: 96/100

All medium severity defects were remediated before submission.


Challenges I Faced

Prompt engineering for consistent JSON

Getting Claude to return strictly structured JSON across three different analytical tasks without markdown fences, preamble, or schema drift took significant iteration. I solved it by combining explicit format instructions, a concrete example in the system prompt, and a multi-strategy client-side parser as a safety net.

CORS in production

The Anthropic API blocks direct browser requests. The Vite dev proxy solves this locally but does not carry over to Vercel. I built a lightweight serverless proxy function to handle production requests while keeping the API key server-side at all times.

Web search result quality

Claude's web search tool returns live results but without guardrails it surfaces aggregator links and expired postings. I solved this with a detailed search strategy prompt that specifies target domains, enforces fraud pre-screening at the model level, and requires real ATS links rather than search results pages.

Calibrating fraud detection

A fraud detector that flags everything is useless. I tuned the analyzer to correctly score a legitimate Shopify engineering role at 92 out of 100 while scoring a scam posting at 15 out of 100 — which required multiple prompt iterations and real world test cases across both ends of the spectrum.


What I Learned

Building SafeHire taught me that prompt engineering is real engineering. The system prompts in claude.ts went through more iterations than any component in the codebase. Getting an AI to return consistent, structured, accurate output across three completely different analytical tasks is a genuine technical challenge — and solving it cleanly is a skill I will carry into every AI project I build from here.

I also learned that the best AI products are not the ones that do the most — they are the ones that do one thing so well that users trust them completely. SafeHire does one thing. It tells you the truth about a job posting. Everything else is built around that.


Tech Stack

  • React, TypeScript, Vite
  • Tailwind CSS
  • Claude API claude-sonnet-4-20250514
  • Claude web_search_20250305 tool
  • Vercel

Try It

Live demo: https://safe-hire-delta.vercel.app

Demo video: https://youtu.be/X2KJUP5-Ccg

GitHub: https://github.com/Aiman03at/safe-hire


SafeHire. Know before you apply.

Built With

Share this project:

Updates