I Built a Free ATS Resume Checker for Indian Job Seekers โ€” No LLM, No Build Step, No Framework

์ž‘์„ฑ์ž

์นดํ…Œ๊ณ ๋ฆฌ:

โ† ํ”ผ๋“œ๋กœ
DEV Community ยท ARAVINDHRAJA ยท 2026-07-14 ๊ฐœ๋ฐœ(SW)

ARAVINDHRAJA

๐Ÿ”— Live: atsmeter.in

Why I built this
Most free ATS resume checkers are built for the US job market. They flag CGPA as “unnecessary personal data,” don’t understand fresher/campus-project resumes, and give the same advice regardless of whether you’re applying to a private company or a government/PSU role in India โ€” where the same detail (DOB, photo, father’s name) means completely opposite things depending on who’s screening you.

So I built ATSMeter โ€” a free, unlimited ATS resume checker (plus cover letter and LinkedIn About checkers) made specifically for Indian job seekers.

The interesting technical decisions
No LLM in the scoring path. Every finding is a deterministic, rule-based check โ€” regex patterns, layout heuristics from pdfplumber (two-column detection, header/footer band detection for contact info), keyword matching. Same resume in, same score out, every time. No black box, no hallucinated feedback, and it means I can explain every single finding with the exact reason behind it.

No framework, no build step. The frontend is plain HTML/CSS/JS across three pages. No React, no bundler, no TypeScript. For a tool this size, that means instant load times, zero dependency-update maintenance, and I can read the entire codebase top to bottom in a sitting.

Firebase Auth via raw REST API, not the SDK. Sign-in is optional (email-link, passwordless) and only unlocks cross-device score history. I called Firebase’s REST endpoints directly instead of loading the Firebase JS SDK, specifically so I could keep a strict CSP (script-src ‘self’) โ€” no third-party script CDN needed at all.

Nothing is stored, structurally. Your resume/cover letter/LinkedIn text is parsed in memory for the duration of one request and discarded. If you sign in, we store only score/type/filename/date โ€” never the actual content. This isn’t just a privacy policy sentence, it’s enforced by the code path itself: there’s no code that ever writes resume text anywhere.

It’s a real PWA. Installable on iOS/Android/desktop, works offline via a service worker caching the app shell, with network-first fetching so a new deploy shows up immediately instead of needing a stale cache to expire.

What it checks
Two-column layouts and tables that scramble when an ATS parses them
Contact info accidentally sitting in a header/footer band that some parsers skip
CGPA, fresher/campus-project resumes (scored on their own merit, not penalized for missing “experience”)
Govt/PSU vs private-sector targeting โ€” same resume, different rules, because the right answer genuinely differs
Passive/filler phrases with suggested action-verb rewrites
Missing quantified results
Stack
FastAPI + pdfplumber/python-docx on the backend, deployed on Google Cloud Run. Vanilla JS frontend, Firebase Auth/Firestore/Cloud Storage for the optional account features (private bucket, served only to its owner โ€” no public URLs).

It’s free, unlimited, and takes about 10 seconds โ€” no sign-up required to check a resume.

๐Ÿ”— atsmeter.in โ€” feedback welcome, especially if something looks wrong on your resume.

์›๋ฌธ์—์„œ ๊ณ„์† โ†—

์ฝ”๋ฉ˜ํŠธ

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค