cd /news/developer-tools/i-built-a-free-ats-resume-checker-fo… · home topics developer-tools article
[ARTICLE · art-58603] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

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

A developer built ATSMeter, a free ATS resume checker tailored for Indian job seekers. The tool uses deterministic rule-based checks instead of LLMs, runs on a vanilla JS frontend with no framework, and stores no resume content. It supports two-column layouts, CGPA, fresher resumes, and distinguishes between government/PSU and private-sector targeting.

read2 min views1 publishedJul 14, 2026

🔗 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 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.

── more in #developer-tools 4 stories · sorted by recency
── more on @atsmeter 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-a-free-ats-r…] indexed:0 read:2min 2026-07-14 ·