Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion PROJECT_STATUS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# resume-tailor — PROJECT STATUS

Last updated: 2026-07-26
Last updated: 2026-07-31

## Why / What

Expand Down Expand Up @@ -63,6 +63,11 @@ SHA-tagged `workflow_dispatch`.

## Timeline

- **2026-07-31 — Free ATS checker intent page:** clarified the checker as a
private, no-sign-up seven-signal structure pass; documented its scoring,
relationship to keyword matching, workflow, and limitations; and synchronized
the agent-readable public catalog without changing its local analysis logic.

- **2026-07-29 — First-party changelog shipped:** The Astro public surface now
owns a same-origin `/changelog` with verified editorial release entries,
while Roadmap and Source link to the canonical GitHub issues and repository.
Expand Down
10 changes: 5 additions & 5 deletions public-surfaces.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -119,13 +119,13 @@ export const PUBLIC_SURFACES = [
{
id: 'ats-checker',
path: '/tools/ats-check',
title: 'ATS resume checker',
title: 'Free ATS resume checker',
description:
'Check resume structure and parseability with local heuristics for sections, contact details, bullets, dates, metrics, and table-like rows.',
'Check seven resume structure and formatting signals for free in your browser with no sign-up, upload, or network request.',
details: [
'The score summarizes seven documented formatting and structure checks.',
'Findings explain which heuristic passed, warned, or failed.',
'The check runs locally and does not upload the resume.',
'The documented heuristics cover length, sections, contact details, bullets, dates, quantified outcomes, and table-like rows.',
'Every warning and failure is visible; the score is not a prediction from a particular employer ATS.',
'The check runs locally and does not upload the resume or require an account.',
],
changeFrequency: 'monthly',
priority: 0.85,
Expand Down
51 changes: 35 additions & 16 deletions src/app/tools/ats-check/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import type { Metadata } from 'next';
import { ToolSeo } from '@/components/tool-seo';

export const metadata: Metadata = {
title: 'Free ATS Resume Checker — Formatting & Parseability Scan',
title: 'Free ATS Resume Checker — Private, No Sign-Up | RolePatch',
description:
'Check resume formatting and ATS parseability for free. Find missing sections, contact gaps, table traps, weak bullet density, and missing dates in your browser.',
'Check seven resume structure and formatting signals for free in your browser. See every warning and limitation with no sign-up, upload, or network request.',
alternates: { canonical: 'https://rolepatch.com/tools/ats-check' },
};

Expand Down Expand Up @@ -45,29 +45,48 @@ export default function Layout({ children }: { children: React.ReactNode }) {
howItWorks={
<>
<p>
Paste your resume as markdown or plain text and the checker runs seven local
heuristics against it — no network call, so your text never leaves the page. It flags
a word count outside the 200&ndash;1300 range, missing standard sections (Experience,
Education, Skills, Projects), absent contact info (it looks for an email plus a phone
number or LinkedIn URL), low bullet density, too few quantified outcomes,
pipe-delimited table rows that ATS parsers flatten, and missing dates.
Paste plain text or Markdown and the checker runs seven local heuristics: length,
standard sections, contact details, bullet density, quantified outcomes, table-like
rows, and date coverage. It does not upload a PDF or DOCX and cannot inspect the
rendered document.
</p>
<p>
Each check is marked good, warn, or fail. The score starts at 100 and drops 5 points
per warning and 15 per failure, clamped to 0&ndash;100. The findings list tells you
exactly which heuristic tripped and why, so you can fix the underlying structure
rather than guessing.
The score starts at 100 and subtracts 5 points for every warning and 15 points for
every failure, clamped to 0&ndash;100. Every deduction remains visible. There is no
universal ideal resume length, heading set, bullet density, or ATS threshold, so read
the findings instead of treating the score as an employer prediction.
</p>
<h3 className="font-serif text-lg font-semibold text-foreground pt-3">
Parseability check or job match?
</h3>
<p>
This tool checks parseability and structure only. To measure keyword match against a
specific job description, use the{' '}
This checker reviews one resume's structure. The{' '}
<a
href="/tools/keywords"
className="text-[var(--accent)] underline underline-offset-2"
>
ATS Keyword Checker
</a>
.
</a>{' '}
answers a different question by comparing a resume with one job description and
reporting matched and missing terms.
</p>
<h3 className="font-serif text-lg font-semibold text-foreground pt-3">
How to use the result
</h3>
<ol className="list-decimal space-y-2 pl-5">
<li>Paste plain text or Markdown from your resume.</li>
<li>Read every finding, not only the score.</li>
<li>Fix genuine structure problems without inventing achievements or metrics.</li>
<li>Run the Keyword Checker against the actual job description.</li>
<li>Review the final document visually and as extracted text before applying.</li>
</ol>
<h3 className="font-serif text-lg font-semibold text-foreground pt-3">
What this checker does not do
</h3>
<p>
It does not reproduce a proprietary employer ATS, guarantee an interview, know an
employer's ranking rules, judge whether a claim is true, or determine whether the
rendered document looks good. Treat it as an inspectable first pass.
</p>
</>
}
Expand Down
9 changes: 5 additions & 4 deletions src/app/tools/ats-check/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -152,11 +152,12 @@ export default function AtsCheckPage() {
<Link href="/" className="text-xs text-stone-500 hover:underline">
← RolePatch
</Link>
<h1 className="mt-3 text-3xl font-bold tracking-tight">ATS check</h1>
<h1 className="mt-3 text-3xl font-bold tracking-tight">Free ATS Resume Checker</h1>
<p className="mt-3 text-sm text-stone-600">
Paste your resume as markdown or plain text. Local heuristics flag the things ATS parsers
and recruiter skim-readers actually care about. No network call — your text never leaves the
page.
Paste the text of your resume for an immediate, browser-local check of seven visible
structure and formatting signals. No sign-up, file upload, or network request is required.
The result is a transparent heuristic report, not a prediction that a particular employer or
applicant-tracking system will accept your resume.
</p>

<textarea
Expand Down