Back to Projects
Case Study

Hireon - AI Resume Analyzer

ReactTypeScriptTailwind CSSClaude 3.7Zustand
Hireon - AI Resume Analyzer preview
01

The Problem

Most job seekers have no idea whether their CV will survive an ATS (Applicant Tracking System) filter. Professional review services cost between $50 and $200 per resume, so a lot of qualified candidates get silently rejected before a human ever sees their file.

02

My Role

Solo. I handled design, frontend, AI integration, and deployment.

03

Approach

I built a browser-based tool that parses the candidate's PDF on the client, extracts its text, and sends structured prompts to Claude 3.7 Sonnet for an ATS-aware review. Feedback comes back in categorized sections (formatting, keyword coverage, clarity, impact) so the user gets actionable edits instead of a generic score.

04

Technical Decisions

Zustand over Redux / Context

The app has a handful of cross-cutting pieces of state (uploaded file, parse result, analysis response, loading flags) and no server. Redux would be ceremony; prop-drilling through Context would re-render half the tree on every analysis update. Zustand gave me selector-based subscriptions in ~50 lines of boilerplate.

Claude 3.7 Sonnet instead of a cheaper model

Earlier Claude and GPT-3.5 class models produced generic 'make your resume stronger' feedback that felt worse than a Google search. Sonnet 3.7 was the first model I tested that consistently caught ATS-specific issues like missing keywords for the target role, odd column layouts, and inconsistent verb tenses.

Parse the PDF in the browser

Uploading the raw PDF to a server means handling storage, deletion, and privacy disclosures for a file that often contains a home address and phone number. Parsing client-side keeps the file on the user's machine. Only the extracted text goes to the model.

05

Stack

React + TypeScript for the UI, Tailwind for styling, Zustand for state, pdf.js for in-browser PDF text extraction, Claude 3.7 Sonnet via the Anthropic API for the analysis step. Deployed on Vercel.

06

Outcome

I shipped it as a free tool. I used it on my own CV, and iterated on the prompts after watching where it gave weak feedback on real resumes from friends who tested it.

07

What I'd Take Into the Next Project

Prompt design is the product. The difference between a 'meh' analyzer and a useful one was almost entirely in how I structured the system prompt and forced the model to return categorized, specific, rewrite-style suggestions instead of vague advice.