HOW THIS WORKS
No model reads your resume.
Your resume is graded by a set of rules you can read, which give the same answer every
time you ask, and nothing you upload is kept. That is worth saying plainly, because the usual
alternative is a language model, generally someone else's, in another country, under a policy
that reserves the right to pass your details on. There is no model in this code path at all.
What actually leaves your browser
| What you do | What is sent | What is kept |
| Check a resume | The file, over HTTPS, to our own server in a single request | Nothing. The bytes are parsed in memory and dropped when the response is written |
| Check a Naukri or LinkedIn profile | The text you pasted | Nothing |
| Track applications | Nothing at all. The tracker has no network call in it | Your own browser's local storage, on your device |
| Check a government photo or signature | Nothing at all. The image is decoded and measured in the page | Nothing - it never reaches a server |
| Sign in and save a score | Your email and the numeric score | The score history, until you delete it |
No third-party analytics, no advertising pixels, no session recording, and no
resume content in our logs. We are a data fiduciary under India's Digital Personal Data
Protection Act, and the simplest way to honour that is to hold almost nothing.
Why not just use an LLM?
Because it would have to see your resume
A resume is a dossier: full name, phone number, home city, employer history, salary
signals, sometimes a photograph and a date of birth. Sending it to a model provider
means a third party now holds it. Published privacy policies in this category are
explicit that user input is shared with the AI providers they call.
Because the answer would move
Ask a model the same question twice and you can get two answers. A checker whose
score changes on re-upload is not measuring anything. These rules are deterministic:
same resume, same score, today and next year.
Because an ATS is not intelligent either
The thing you are being filtered by is a parser and a keyword index. Modelling it with
a language model is using the wrong instrument - it will fluently describe a resume
that a parser cannot read at all.
Because it invites the wrong fix
Generative tools rewrite the document for you. That produces a resume you cannot
defend in the interview, in a register recruiters have learned to spot. Findings here
tell you what is wrong and leave the writing to you.
What the rules actually are
- Parseability - the file is opened the way a parser opens it: text layer, column
order, tables, images, headers and footers. If your phone number lives in a header, it is
reported as missing, because that is what the ATS sees.
- Contact and section detection - regex, tolerant of the formats people actually
use, including +91 98765 43210 with spaces in it.
- Skills - a maintained dictionary, matched literally with an abbreviation table,
so ML and Machine Learning are
the same claim.
- Job-description matching - the posting's title and skills against yours, reported
as findings that never move your score, because a résumé is not worse for being aimed at
a different job.
- Evidence - a skill named only in the skills list and nowhere in your experience
is flagged as a claim without evidence. That is the check that keyword-stuffing tools
cannot make, because stuffing is what their score rewards.
There is no hidden model behind any of it. The scoring is arithmetic over
these findings, which is why the same file always returns the same number.
The trade-off, stated plainly
Rules cannot tell you whether you are a good fit for a role, whether your bullet points are
persuasive, or what to write instead. A model can attempt all three, badly and differently
each time. We would rather do the mechanical part exactly right and be honest that the
judgement is still yours.
Check a resume