resumebench
Source Open the bench

One master profile. A tailored resume for every posting.

Keep everything you have ever done in one place, then write a version aimed at the job in front of you — without inventing a single thing you would have to defend in the interview.

Free, no sign-up. Your resume stays in your browser.

Every resume is a projection

The master profile is the only source of truth. Tailoring lays an overlay on top of it and never rewrites it, so nothing you have written can be lost by a bad run.

Build the master

Upload a .docx or paste an old resume. It comes back structured — roles, bullets, skills — and everything you add later lives here.

Paste the posting

Keywords from the job get matched against what you have. Hits are highlighted, gaps are underlined, and bullets are rewritten to face the role.

Save the version

Each saved version stores only what made it different. Fix a typo in your profile and every version you have ever saved is corrected with it.

What it is underneath

The whole application is one HTML file with no framework, no build step and nothing to install. The decisions that shape it are worth stating plainly.

Zero dependencies
No framework, no bundler, no npm install. One HTML file, plus a small Node relay that exists only to keep an API key out of the page.
.docx read in the browser
A .docx is a ZIP holding XML, and the platform can already inflate it, so the file is parsed with no library and no upload. It never leaves your machine — only the extracted text is ever sent to a model.
ATS safety in the renderer
Real headings, real lists, real selectable text, one column — guaranteed in code, not in the prompt. A model that misbehaves cannot produce a document a parser chokes on.
The score runs locally
Contact, structure, content and ATS checks recalculate on every keystroke with no API call, and each finding names the thing to change. Instant feedback is what makes it get used.
Nothing invented
Every generative prompt is prefixed with a rule forbidding invented metrics, titles, dates and tools. A resume you cannot defend is worse than an untailored one.
Your data stays put
Everything lives in your browser's storage. There is no account and no server to lose it to — export a JSON backup whenever you want one.

Most of it needs no key at all

The editor, the templates, the score and the PDF export all run in the page. Only the model-backed actions need credentials, and those are yours — there is no shared backend, and no key ever enters the page.

Open it and go

No key, no sign-up
  • Write and edit your whole profile
  • Reorder sections, switch templates and density
  • The live ATS score, with fixes that name the change
  • Save as PDF, or copy as plain text
  • Export and restore a JSON backup

Bring your own key

Runs on your machine
  • Turn an uploaded .docx into a structured profile
  • Ask what is missing from a role
  • Rewrite bullets, and tailor to a posting
# Gemini's free tier is enough
git clone https://github.com/bylukeO/resumebench.git
cd resumebench
echo 'GEMINI_API_KEY=...' > .env
node proxy.mjs

Who built it

I'm Luke Oladejo, a full-stack developer. I built resumebench because tailoring a resume by hand for every application is slow and easy to get wrong, and the tools that automate it tend to either want a subscription or quietly invent things you then have to explain in an interview.

So the rule it is built around is that the model may rephrase what you have written and nothing else. The parts that have to be trustworthy — the document structure, the ATS checks, the master profile — are plain code that a model never touches.

  • PortfolioSync — CTO
    Syncs developer portfolios by opening pull requests against your own repo. GitHub OAuth, JWT sessions, encrypted tokens; React 19 and Vite over Node, Express and SQLite.
  • GIREAPP — Backend
    An EdTech API in Express and TypeScript. JWT over HTTP-only cookies, full verification and reset flows, shared Zod schemas, ten entities modelled in PostgreSQL through Prisma.
  • Agrilink — Frontend lead, 2nd place
    A two-sided marketplace for Nigerian farmers and buyers, built with a team of four at the INVENTORS COMMUNITY hackathon. React and TypeScript against NestJS, with Socket.IO chat.
  • The Peoples Hub — Solo
    A polling application on Django REST and MySQL, with a React front end. Deployed.

Open to work

Full-time, contract or freelance — any timezone.