Method, test results and sources
Last updated November 9, 2026. Engine 1.x. Every rule is public here so you can judge it.
Principles
- Only use what the candidate gave you, plus free public lookups (DNS, the domain registry, GitHub's public API).
- Every finding comes with evidence and a way to verify it. The output is a checklist, never a decision.
- Never use protected traits, and avoid known stand-ins for them. We do not use employment gaps, age, graduation year, photos, accent, nationality, or "AI-written" scores, and we never read a name as a hint about origin, sex or age. Names are only compared with each other, such as the name you typed against the name on the resume.
- Prefer signals that are cheap to verify and fair to honest people.
What we check
| Finding | Level | Why |
|---|---|---|
| Disposable email domain, email domain that does not exist | Verify first | Throwaway or impossible contact details |
| Domain that cannot receive mail, custom domain registered in the last 180 days | Worth verifying | Fresh or broken domains are common in made-up identities, and sometimes honest |
| Phone number we cannot read, or in the reserved 555-01XX fiction range | Worth verifying | Not a reachable line. Numbers typed as VoIP in public numbering data are shown as context only, because US VoIP numbers are rarely typed that way |
| The name at the top of the resume differs from the name you entered | Worth verifying | Borrowed resume or identity; also married names and templates |
| Resume lists a different email, phone, LinkedIn or GitHub | Worth verifying | Stitched-together identities |
| GitHub profile missing; very new account behind senior claims; profile handle or display name is a different person | Verify first / Worth verifying | Borrowed or synthetic online presence |
| Unfilled template text, chatbot replies left in | Verify first | Nobody read the resume before sending it. Using AI to write is fine and not flagged |
| Text that addresses an automated screener, hidden tiny text in the PDF | Verify first | Deliberate manipulation |
| More years of a technology than it has existed (Verify first); a tool used in a job that ended before it existed (Worth verifying). We allow one extra year for rounding | Mixed | Fabricated history |
| Dates that end before they start; two full-time jobs overlapping a year or more | Worth verifying | Fabrication, or honest moonlighting. Part-time, contract and per diem roles are excluded |
| Two or more employer names so generic we cannot tell which company they are, with no location | Worth verifying | Hard to verify; common in fabricated histories |
| Job description copied word for word (25% or more of its 7-word phrases) | Worth verifying | Hides what the person actually did |
| Text that asks for pay into another person's account, equipment shipped to someone else, or offers remote access to a work laptop (Verify first); pay in crypto, camera unavailable, ship-to address in another state (Worth verifying) | Mixed | Published FBI and Microsoft guidance on identity-masking remote workers. We look for request-style wording to avoid matching job duties. It can still misfire, which is why every finding is a question |
| A UTC or GMT offset in an availability statement that does not fit a US work location | Worth verifying | About where they say they will work, not where they are from. Bare zone abbreviations are ignored, and lines inside past job entries are skipped where we can tell |
| PDF author field has a different name; 60+ item skills list; many short engagements | Context | Weak on their own |
Test results
We tested on made-up resumes written for this purpose: a development set we tuned rules on, and a separate holdout set written independently afterwards that we did not tune on. Most test phone numbers use the reserved 555-01XX fiction range by design, so that one finding is left out of these numbers. Results below are without network lookups, because the made-up custom domains do not exist and would inflate both catches and false alarms.
Development set (40 samples)
Rules were adjusted while looking at this set, so these numbers are optimistic.
| Counted as flagged when the report says | Fakes caught | Honest candidates flagged |
|---|---|---|
| Verify first | 7 of 18 | 0 of 22 |
| Verify first, or two or more Worth verifying | 10 of 18 | 0 of 22 |
| Any finding shown | 15 of 18 | 0 of 22 |
Missed fakes: fake_custom_domain; keyword_stuffing; impossible_timeline.
Holdout set, frozen rules (24 samples)
Written independently by a separate process from a prompt that did not describe the tool, and run once with the rules frozen (engine 1.1). This is the honest number.
| Counted as flagged when the report says | Fakes caught | Honest candidates flagged |
|---|---|---|
| Verify first | 1 of 11 | 0 of 13 |
| Verify first, or two or more Worth verifying | 2 of 11 | 0 of 13 |
| Any finding shown | 3 of 11 | 0 of 13 |
Missed fakes: overseas operator posing as US-based remote developer (laptop forwarding); fabricated and inflated work history (technology anachronisms); third party (bench sales recruiter) applying on the candidate's behalf; fabricated work history backed by a friendly reference; fabricated nursing credentials (purchased diploma, license claims that do not hold up); overseas operator posing as a local remote worker; fabricated driving experience; borrowed identity (real person fronts the hiring process, someone else does the work).
Holdout set after later fixes (24 samples)
After reading the holdout misses we changed three rules (a dated bullet hid one anachronism, ship-to addresses in another state, and camera wording), then tightened several rules after a second outside review to cut false alarms (engine 1.3). These numbers are no longer a clean holdout.
| Counted as flagged when the report says | Fakes caught | Honest candidates flagged |
|---|---|---|
| Verify first | 1 of 11 | 0 of 13 |
| Verify first, or two or more Worth verifying | 3 of 11 | 0 of 13 |
| Any finding shown | 5 of 11 | 0 of 13 |
What this means: on the independent set it caught only a minority of fakes, and it raised no false alarms on honest candidates offline. With lookups on, which is the default, one honest holdout candidate (1 of 13) and one honest development candidate (1 of 22) were flagged because their made-up domains do not exist. Real typos and brand new domains will trigger the same finding. Several holdout fakes are undetectable from documents by design (a friendly reference, a real person renting out their identity). The tool is good at catching careless or document-level fakes. It cannot catch a well-made fake identity from documents alone, which is why every report ends with live verification steps. Treat a clean report as "nothing obvious", not as "verified".
Limits
- Scanned image PDFs have no text to read. Paste the text instead.
- Hidden white-colored text at normal size is not detected yet, only tiny text.
- US phone numbers are rarely marked as VoIP in public numbering data, so most US VoIP numbers will not be flagged. Call the number live.
- LinkedIn cannot be checked automatically. Use the ownership check.
- Public lookups can fail or be rate limited; the report lists anything not checked.
Legal framing
Candidate Check runs in your browser on what the candidate gave you. LumeGrid does not receive candidate data and does not furnish reports, and the tool does not search criminal, credit or court records. LumeGrid does not intend to act as a consumer reporting agency under the FCRA. Whether a particular use is covered is a legal question for your counsel. Use findings only as prompts to verify, apply the same checks to every candidate for a role, and talk to your counsel about state and local rules on automated tools in hiring. This is not legal advice.
Sources
- FBI IC3: Deepfakes and Stolen PII Utilized to Apply for Remote Work Positions (2022)
- FBI: North Korean IT Worker Threats to U.S. Businesses (2025)
- Microsoft Threat Intelligence: Jasper Sleet (2025)
- Gartner candidate survey (2025)
- Liang et al., GPT detectors are biased against non-native English writers, Patterns (2023)
- FTC and EEOC: Background Checks, What Employers Need to Know
- OWASP: Prompt Injection
- disposable-email-domains blocklist
- Google libphonenumber