How ApplyArc fact-checks AI

How ApplyArc fact-checks every number you write.

We cross-check every AI-generated number against your real resume. If a metric isn't in your data, it never reaches a recruiter. Teal, Huntr and Kickresume don't do this. Here's the architecture.

See pricing
The problem nobody else is solving

AI resumes get rejected. Not because they're AI.
Because they make things up.

Most AI career tools generate impressive-sounding metrics that aren't on your resume. Recruiters check. When the numbers don't match LinkedIn, your application goes in the bin and your reputation goes with it.

What ChatGPT, Teal, Huntr, Kickresume ship

"Spearheaded a cross-functional team to drive a 37% increase in revenue, leveraging cutting-edge AI to deliver robust, scalable solutions."

37% — invented. Spearheaded, leveraged, robust — AI tells. The recruiter rejects in 3 seconds.

What ApplyArc ships (after metricVerifier + Anti-Slop)

"Rebuilt the onboarding flow with two engineers. Cut signup drop-off from 41% to 18% over Q3."

Every number cross-checked against your resume. No AI tells. Real verbs.

The architecture

How the fact-checker actually works.

Three layers. Every AI output goes through all three before you see it. No exceptions.

01

AI drafts your output

GPT-5.4 (flagship) for high-stakes work — cover letters, salary negotiation, interview prep, job match. GPT-5.4-mini for everything else. Strict JSON schema enforced at the model level.

02

metricVerifier extracts every number

Revenue figures, percentages, multipliers, team sizes, years, durations. Each numeric token is cross-referenced against your resume context. If it's not there, it's a hallucination.

03

Silent retry with stricter prompt

If a number was invented, the system retries with an explicit ban on fabricated metrics. Up to 2 retries. After that, fallback to a vaguer-but-honest version. You never see the lie.

metricVerifier.js · simplified
const numbers = extractNumbers(aiOutput);
const resumeNumbers = extractNumbers(userResume);

for (const n of numbers) {
  if (!resumeNumbers.includes(n)) {
    // Hallucination caught.
    return retry(prompt, { strictMode: true });
  }
}

return aiOutput; // Every number verified.
235+
AI fingerprints stripped
18
AI tools fact-checked
8
Tools share unified memory
11
Structural pattern detectors

Why Teal, Huntr and Kickresume can't ship this.

Output-side validation is hard. It needs the user's structured resume context, a numeric extraction layer, a retry loop, and the engineering culture to ship a stricter product than the model wants. Most teams optimise for speed of generation. We optimise for accuracy of generation.

ApplyArc
Teal
Huntr
Fact-checks AI numbers vs resume
Strips 235+ AI fingerprints
Unified memory across tools
Silent retry on hallucination
Open architecture (file names public)

Verified April 2026 against public product surfaces. We rebuild this comparison every quarter.

Frequently Asked Questions

Every AI-generated output runs through metricVerifier. It extracts every numeric token, cross-references your stored resume, and silently retries with a stricter prompt if anything was invented. Up to 2 retries before falling back to the safest version.

Three steps. (1) The AI generates your output — cover letter, resume bullet, interview answer. (2) metricVerifier extracts every numeric token (revenue figures, percentages, multipliers, team sizes, years). (3) Each number is checked against your resume context. If a number isn't there, the system retries with the explicit instruction not to invent metrics. Up to 2 retries before falling back to the safest version.

It can write a vague claim that the verifier won't catch — for example 'improved customer satisfaction' without a number. But it physically cannot ship 'improved satisfaction by 37%' if 37% isn't in your resume. Every fabricated metric is blocked.

After fact-checking, every output is scanned against 235+ AI fingerprints: 32 AI verbs (spearheaded, leveraged, orchestrated), 29 AI adjectives (robust, seamless, comprehensive), 7 adverbs, 65 phrases, 17 weak ownership patterns, 15 AI openers, plus 11 regex detectors for em-dashes, tricolons (X, Y, and Z), and prepositional openers. Recruiters spot AI in seconds. We strip the giveaways before they ship.

Not as of April 2026. Teal, Huntr and Kickresume ship the AI's first draft. They have no output validation layer and no AI-tell scanner. We've checked their public product surfaces.

It's the architecture. The fact-checker lives in metricVerifier.js inside our backend. The pattern library lives in shared/aiTells.json (235+ patterns) and shared/aiPatterns.cjs (11 regex detectors). The retry loop lives in generateAIContent.js with a maxRetries cap of 2. We rebuild this every deploy.

After 2 retries, the system falls back to a stricter prompt that bans numerical claims entirely and ships a vaguer-but-honest version. We'd rather you have a less impressive sentence than a fabricated one. Inflated metrics are the fastest way to get blacklisted by a recruiter.

Yes. Every AI generation on ApplyArc — Free or Pro — runs through metricVerifier and the AI-tell scanner. Free users get 5 fact-checked generations per month. Pro users get unlimited. The architecture is identical. Safety isn't a feature, it's the floor.

Start free. Every AI output gets fact-checked.

5 fact-checked AI generations every month on the free plan. No card. 30 seconds to set up.

No credit card. Cancel anytime — 1 click.