All projects
ResumeFit, know what your resume proves: a match score of 75 out of 100 with five of six must-haves shown, a React requirement proven by a quoted resume line, Next.js mentioned but never shown, and screen reader testing the posting calls WCAG 2.2 AA.

Completed2026 — ongoing

ResumeFit

Applicant tracking software reads most resumes before a person does, and it is looking for particular words in a particular shape. The tools built to help with that inherited the same weakness: if a word appears anywhere, a skills list included, it counts as a match. A resume can score well on a requirement it never actually evidences.

ResumeFit is built around one rule instead. A requirement only counts if the analysis can quote the sentence in your experience that demonstrates it, and every quote is checked back against your text before it is shown, so a line the model invented never reaches the page. On a live run the model claimed Next.js, Jest and Figma as covered while citing nothing but a skills list. The grounding check rejected all three and the score dropped accordingly.

The report is built to be acted on. It gives a strong, partial or weak verdict with a count of the must-haves you show, and keeps "listed, but not shown" apart from "not there at all", because the first needs a sentence and the second needs experience. A fix-first list comes with starter wording, rewrites of weak bullets are dropped if they add a number or a claim the original never made, and a tailoring section shows where your proof for each top requirement sits and reorders your skills for the role. It also compares your job titles with the posting's and checks how readable the file is to tracking software.

Getting the resume in turned out to be half the work. PDFs are read in the order they were written, so two-column layouts don't get shuffled together, and Word, ODT, RTF and HTML files are read locally. Photos of up to five pages and scanned PDFs go to Gemini. Anything that isn't a resume, a posting pasted into the resume slot, or pages from two different people are turned away with a specific reason before the analysis runs, so a wrong file costs no quota.

It runs on a free tier, so identical comparisons are cached and every analysis draws on a budget shared across everyone using the site. When the budget runs out or the model fails, it compares wording only and says so on the page. There are no accounts and no files are stored.

Every quote is checked against your resume before it is shown, so a claim the model invented never reaches the page. It reads PDFs, Word files and photos of each page, and turns away anything that isn't a resume.

Next.js / TypeScript / Tailwind CSS / Gemini / Zod / pdf.js