# The Inbound Recruiter Verification Standard, Six Checks to Six Releases

*Grade any unknown recruiter's message on six pass or fail criteria and know which disclosure, from a reply to running their code or sending ID, that grade unlocks.*

- Canonical URL: https://www.refolk.ai/candidates/guides/inbound-recruiter-verification-standard
- Pillar: Applying at volume
- Format: Standard
- Published: 2026-11-11
- Last reviewed: 2026-11-11
- Reading time: 21 min
- Keywords: how to verify a recruiter is real, is this recruiter message a scam, fake recruiter red flags LinkedIn, recruiter asking for SSN before interview, fake coding test malware job interview, how to check if a job offer is legit

## Key takeaways

- Reported job scam losses to the FTC rose from $90 million in 2020 to $501 million in 2024, so an unknown recruiter's first message deserves a fixed grading procedure rather than a gut call.
- Task scams went from 0.6% of the FTC's sampled job scam reports in 2021 to 38.8% in the first half of 2024, and they need only a payment from you, so "never pay a fee" is the one gate that holds even when every identity check looks clean.
- A LinkedIn workplace badge proves the person confirmed a link to a company at some point through a work email, Entra Verified ID, a Learning license, or a Recruiter license; it never proves they have authority over the opening they are pitching.
- In Refolk's index, 24.0% of the 21,200 US Technical Recruiters work at staffing and recruiting companies, and for them the sender domain and badge describe the agency, so independent employer confirmation is the only check that reaches the real employer.
- Any request for an SSN or identity documents before you have accepted a written offer conflicts with the I-9 process, because USCIS does not let Section 1 be completed until an offer is accepted.
- For developers, simply opening a recruiter's repository in VS Code and clicking Trust can run the attacker's commands through tasks.json, so the code-execution tier starts when you open the folder, not when you type npm run.

This is the standard I use when a recruiter I have never heard of messages me about a role. It has six pass or fail criteria, and each one is tied to the specific thing it lets you release. It is written for job seekers applying at volume who get inbound contact every week and can't afford to ignore real recruiters or to hand a stranger their ID. Grade the message, read off the tier it unlocks, and release nothing above that tier.

## What does this standard decide?

It decides one thing: the highest disclosure tier you may release to an inbound recruiter right now, based on six criteria graded pass or fail. It does not decide whether the job is good. It decides whether the person, the company, and the opening are real enough to justify what they are asking for.

A **disclosure tier** is a category of thing you hand over, ranked by how much damage it does in the wrong hands. A **requisition** is the specific opening a recruiter claims to be filling, often with an ID number on the employer's careers site. The **sender domain** is the part of an email address after the @, read from the right, because the rightmost domain is the one that actually identifies who sent it.

There are six tiers, grouped here into five layers by risk:

#### Disclosure tiers, highest risk first

1. **Payment of any fee** - Never released, at any grade, to anyone
2. **Identity documents, SSN, bank details** - Only after a written offer is accepted, through the employer's own process
3. **Code execution** - Opening or running a recruiter-supplied project, only after five checks pass and only in isolation
4. **Resume and live call** - Released once sender domain, channel, and requisition all pass
5. **Reply** - Released once the message is captured; no personal data beyond your name

*Each layer needs everything the layers below it need, plus its own condition, and the top layer is never unlocked.*

The six criteria are sender domain, channel, platform verification signal, requisition match, independent employer confirmation, and request type. Five of them are graded pass or fail. The platform signal is recorded but never counts as a pass, for reasons covered below.

## Why grade the contact instead of scanning for red flags?

A red-flag list tells you what looks wrong. It doesn't tell you what you can safely give, and the fastest-growing kind of job scam needs nothing from you except a payment. A gated standard holds up in exactly the case where every identity check looks clean.

The FTC's figures show how fast the losses grew and where the growth came from.

| Year | Reported losses | Task scam share (FTC sample) |
|---|---|---|
| 2020 | $90M | 0% |
| 2021 | $131M | 0.6% |
| 2022 | $179M | 1.6% |
| 2023 | $286M | 5.6% |
| 2024 | $501M (H1: $223M) | 38.8% (H1 only) |

Losses in 2024 were 5.6 times the 2020 figure, and the number of reports tripled over the same period. The task scam share comes from the FTC hand-coding a random sample of 500 job scam reports for each year. A **task scam** is a gamified "job" in which you complete small online tasks, are shown earnings, and are then told to deposit money to unlock them.

**38.8% - Share of sampled FTC job scam reports that were task scams, first half of 2024**

The same sample put the share at 0.6% in 2021, and task scams ask for a payment, not a resume or an ID.

The FTC says reports of these scams went from zero in 2020 to 5,000 in 2023, then roughly quadrupled to about 20,000 in the first half of 2024 alone. Crypto losses to job scams were about $41 million in that half-year, against about $21 million in all of 2023. A red-flag list built around strange email addresses misses most of this. A rule that says "payment is never released" catches all of it.

One limit on the evidence: the FTC has not published a median loss for job scams on their own. Its 2024 Data Book gives $2,250 for the parent category, Business and Job Opportunities. If you need a current figure, pull it yourself from ftc.gov/exploredata. Don't trust a number quoted on a secondary site.

## The six criteria, and how two graders reach the same verdict

Each criterion has an exact pass condition, and anything you have not proven counts as a fail for gating purposes. That rule is what makes the standard repeatable. "Probably fine" and "still waiting" both grade as fail, so two people looking at the same message cannot drift apart.

| Criterion | Pass when | Proves | Lies when |
|---|---|---|---|
| Sender domain | From and Reply-To match a list the employer publishes | Mail came from a sanctioned system | Reply-To differs; ATS domains missing from your list |
| Channel | Email or enterprise video only | The process looks like the employer's | A real recruiter uses chat informally |
| Platform signal | Recorded, never a pass | A person or company link existed at some point | Read as authority over the opening |
| Requisition match | You find the role yourself on the official careers site | The opening exists | The scammer copies a real posting |
| Employer confirmation | Written reply via a published mailbox or line | The employer knows this recruiter and role | You used contact details from the message |
| Request type | Ask is at or below the unlocked tier and its lawful point | Nothing is being taken early | A real employer sends a legitimate pre-offer background form |

### Sender domain

Many employers publish their recruiting domains. Northrop Grumman lists @ngc.com and @northropgrumman.careers. Lockheed Martin lists seven: @lmco.com, @yello.co, @lockheedmartin.vssend.com, @successfactors.com, @eightfold.ai, @global.lmco.com, and @nc3.com. Several of those belong to the applicant tracking system vendors it uses, not to Lockheed. Meta also publishes its email domains. The pass condition is an exact match against the list the employer publishes itself, applied to both the From and the Reply-To header. If the employer publishes no list, the criterion grades as fail and you lean on employer confirmation instead.

### Channel

Wells Fargo states that "Interviews are never conducted using free or consumer chat platforms." Kudelski Security reports that the operators behind fake developer interviews pose as recruiters on LinkedIn, WhatsApp, and Discord. The criterion passes while the conversation stays on email or enterprise video. It fails the moment the recruiter moves things to a chat-only channel on a consumer app.

### Platform verification signal

On LinkedIn, an identity badge means the person's government-issued ID was verified through one of LinkedIn's verification partners. A workplace badge means the member confirmed their association with a specific company using a work email, Microsoft Entra Verified ID, a LinkedIn Learning license provided by the company, or an active LinkedIn Recruiter license. LinkedIn's own wording is that this happened "at some point". Every one of those methods is issued per person, and none of them ties the person to a particular opening. That is why the badge is recorded and never passed. LinkedIn also says a missing badge "does not necessarily mean that the information is incorrect or fraudulent", so a missing badge is not a fail either.

### Requisition match

Find the role yourself. AECOM, for example, points candidates to aecom.jobs to verify job postings. Type the careers site address yourself, or reach it from the employer's main homepage, and then search. Never follow a link in the message. How often careers sites show the requisition ID a recruiter quotes has not been established publicly. If the ID is missing but the title, team, and location match, record the result as "matched without ID" and require employer confirmation before anything above the resume tier.

### Independent employer confirmation

This is the only criterion that reaches the employer through a channel the scammer does not control. Some employers make it easy: Airswift says any of its recruiters can be verified by emailing verify@airswift.com. For everyone else, use a mailbox or main phone line the employer publishes. It passes only on written confirmation. It can take hours or days, and until the confirmation arrives the grade is fail.

### Request type

Compare what the recruiter wants with the tier your other grades unlock and with the earliest lawful point for that item (next section). A request for a fee fails at any grade, from anyone.

## Which tier does each grade unlock?

Each tier needs a specific set of passes, and the two tiers holding your most sensitive data also wait for a legal event: an accepted written offer. Read this table left to right and stop at the first row your grades don't satisfy.

| Tier | Unlocked when | Hard limit |
|---|---|---|
| Reply | Message captured | No personal data beyond your name |
| Resume | Sender domain, channel, requisition pass | Leave off home address and date of birth |
| Live call | Same as resume | Enterprise video, never consumer chat |
| Code execution | Domain, channel, signal recorded, requisition, confirmation | Isolated environment; opening the folder counts |
| ID documents, SSN, bank details | All criteria pass and offer accepted in writing | Through the employer's onboarding process |
| Payment of any fee | Never | Permanent fail |

Sources disagree on the resume tier. Built In wants both a company-domain email and a live call before you share any documents. I set the resume at the same tier as the call because your resume is the thing that gets you the call. If you want the stricter reading, move the resume above the call and keep everything else the same.

When the requisition match passes, tailor to the posting text you found on the careers site, not to the recruiter's summary of it. [Refolk](/candidates) tailors the resume to that exact posting and scores how well you fit it, so the version you release at the resume tier is aimed at an opening you have already confirmed exists.

The two highest tiers depend on legal timing, not on how convincing the recruiter is:

| Item | Earliest point (US) | Basis |
|---|---|---|
| I-9 Section 1 (SSN optional; "applied for" allowed) | Offer accepted | USCIS |
| ID documents (I-9 Section 2) | Offer accepted | USCIS |
| Background check consent | Standalone disclosure, then written authorization | FCRA |
| Payment of any fee | Never | Meta, AECOM, Airswift |
| Bank details | Not during application (employer policy) | Wells Fargo, Lockheed Martin |

> **Rule:** No SSN or ID before an accepted offer
>
> USCIS lets an employee complete I-9 Section 1 only after accepting the job offer, so any request for an SSN or identity documents before that point fails the request-type criterion, whatever the channel. Meta and Wells Fargo both state they will not ask for this data before an offer or during the application.

Background checks are the exception to keep in mind. Federal law (the FCRA) does not require an offer before a background check. It requires the employer to disclose its intention in a document that consists solely of that disclosure and to get your written authorization. A pre-offer background form can be lawful. If the request comes through chat, or the authorization is buried inside a longer form, grade it as a fail. One more limit: the earliest lawful point for collecting direct deposit details is not established publicly in the research behind this guide. The bank details row reflects published employer policy, not a statute.

## Agency and offshore recruiters: which checks still reach the employer?

For a third-party recruiter, the sender domain and badge tell you about the agency, not the employer. That leaves independent employer confirmation as the only check that reaches the company you would actually work for. That's normal and no reason to fail them, but it changes which grade matters.

| Segment (Technical Recruiters) | Count | Share |
|---|---|---|
| US, all industries | 21,200 | baseline |
| India, all industries | 24,923 | 1.18x US |
| US, Staffing and Recruiting | 5,078 | 24.0% of US |
| US, all other industries | 16,122 | 76.0% of US |

These are counts of people with "Technical Recruiter" in their title in Refolk's index of professional profiles. The ratios and the "all other" row are my own calculations. The 24.0% staffing share is probably a floor: in a sample of 25 US profiles, the staffing firms K2 Partnering Solutions (3) and Experis (2) led the list of employers, ahead of names like Apple, Google, and Snowflake. That's an inference from a small sample, not a measured figure.

**24,923 - Technical Recruiters in India in Refolk's index, against 21,200 in the US**

An offshore recruiter is not a fail on its own; the agency's relationship with the named client is what needs checking.

For agency recruiters, add two moves to the procedure. First, ask them to name the client. Second, check the agency itself where a register exists. In New York City, the DCWP License Search lets you enter a name or license number, and calling 311 gets you license and complaint history. The license only covers agencies that charge job seekers a fee. Agencies paid by the employer are exempt, so an unlicensed contingency recruiter is not a fail on its own.

#### Surface checks against employer confirmation

Horizontal axis runs from Sender domain fails or is an agency to Sender domain passes. Vertical axis runs from No employer confirmation to Written employer confirmation.

| Quadrant | What it means |
| --- | --- |
| Agency or unlisted sender, employer confirms | Proceed by the tier table; the confirmation is your anchor |
| Domain passes, employer confirms | Verified; unlock up to code execution, ID only after an accepted offer |
| Neither | Reply tier only; report it if anything is requested |
| Domain passes, no confirmation | Looks clean, unproven; resume and call at most |

*A message that passes every surface check but has no employer confirmation is the quadrant where impersonation lives.*

**Reply to an unverified recruiter**

```
Thanks for reaching out. Before we go further, could you send me:

1. The requisition ID or the exact posting title as it appears on the company's careers site
2. If you are with an agency, the name of the client company
3. An email from your company address, so I can continue the conversation there

I'm happy to schedule a call over the company's video platform once I've matched the opening on the careers site. I don't share identity documents, ID numbers, or banking details until I've accepted a written offer, and I don't pay fees for any part of a hiring process.
```

*Send on the channel they used if it is email; if they reached you on chat, ask to move to email in the first line.*

## The developer tier: what counts as running their code?

Opening the project folder in your editor counts as running their code. In the Contagious Interview campaign, the payload runs when the folder opens, once you grant trust. No npm command is needed, so this tier starts the moment a recruiter-supplied repository reaches your machine, not when you execute something on purpose.

Here is how the chain works, according to security researchers:

#### How a fake coding test executes

1. **Contact** - Operator poses as a recruiter on LinkedIn, WhatsApp, or Discord
2. **Assignment** - Candidate is told to clone a project hosted on GitHub, GitLab, or Bitbucket
3. **Trust prompt** - VS Code asks whether to trust the folder's authors
4. **Auto-run** - A tasks.json entry set to runOn folderOpen fires on trust
5. **Payload** - Attacker code runs with the candidate's access

*The attacker's commands run when VS Code opens a trusted folder, before the candidate has typed a single command.*

Ransom-ISAC documents the trigger as `"runOn": "folderOpen"` inside `.vscode/tasks.json`. Abstract Security's write-up puts it plainly: "If the user clicks 'Trust,' VS Code automatically parses and executes the commands within tasks.json." Microsoft Defender Experts, in a secondary summary, describe victims being told to clone and execute NPM packages from those code hosts, or being hit through VS Code's repository task auto-execution once trust is granted. Jamf Threat Labs found a related variant: macOS disk images (DMG) and installer packages (PKG) pretending to be well-known Mac applications. So "install this app for the interview" belongs in the same tier.

> **Watch out:** Clicking Trust is running the code
>
> Treat any instruction to trust, open, install, or run a recruiter's project as code execution, and require the sender domain, channel, platform signal, requisition, and employer confirmation steps to pass first. Even when they all pass, run it only in an isolated environment.

The isolation steps researchers recommend:

- Read the repository in the browser first.
- Inspect `.vscode/tasks.json` before opening the folder anywhere.
- Don't open unfamiliar repositories in VS Code Desktop.
- Set `task.allowAutomaticTasks: false`, as the Ransom-ISAC write-up gives it, so folder-open tasks can't fire.
- Run the project only in an isolated environment that holds none of your credentials, keys, or personal files.

A real employer whose opening you have confirmed in writing will not mind you reading their test in the browser first. Pushback against that is a request-type fail.

## Step-by-step: grading one inbound message

Run these nine steps in order and write down each grade as you go. Steps 2 through 6 produce the grades, step 8 turns them into a tier, and step 9 applies only if code is involved. The time estimates are mine and unverified. Most of the steps take a few minutes, and employer confirmation takes hours to days.

#### Grade an inbound recruiter contact

1. **Capture the evidence** - Save the message text, sender address, full email headers, and profile URL before replying. Done when all four are saved somewhere you control.
2. **Grade the sender domain** - Compare the rightmost domain in both From and Reply-To with a list the employer or agency publishes. Exact match passes; a lookalike, free webmail, or no published list fails.
3. **Grade the channel** - Pass while the conversation stays on email or enterprise video. Fail the moment it moves to chat-only on a consumer app.
4. **Record the platform signal** - Open any badge and write down its type and method. Record it; never count it as a pass.
5. **Match the requisition yourself** - Reach the official careers site on your own and find the same role, location, and requisition ID if one was cited. Pass only if found without using a link from the message.
6. **Get independent employer confirmation** - Use a mailbox or main line the employer publishes, never contact details from the message. Pass only on written confirmation; pending is fail.
7. **Check the agency if third-party** - Ask the recruiter to name the client and search the licensing register where one exists. A missing license is not a fail if the employer pays the fee.
8. **Gate the request** - Compare the ask with the tier your grades unlock and the earliest lawful point for that item. Release nothing above the tier; any fee request is a permanent fail.
9. **Isolate any code execution** - Open or run a recruiter's project only after steps 2 to 6 pass. Read it in the browser first, then run it only in isolation.

Sources disagree on the order of steps 5 and 6. Some put the careers page first and the switchboard second. I check the requisition first because it takes minutes, and a failed match saves you an email to the employer. If you are in a hurry, send the confirmation request at step 1 and let it run in the background.

**Employer confirmation request**

```
Subject: Please confirm a recruiter and an opening

Hello,

I was contacted about a role and would like to confirm that the contact is legitimate before sharing any documents.

Recruiter name:
Address or profile they used:
Date of contact:
Role title as they described it:
Requisition ID they cited (if any):
Agency named (if any):

Could you confirm in writing that this person recruits for your company and that this opening is active? I have not shared personal documents and will not until I hear back.

Thank you.
```

*Send only to a recruiting-fraud mailbox, careers contact, or main line the employer publishes; never reply to an address from the recruiter's message.*

## How this goes wrong: false fails, false passes, and polish

Most of the standard's errors come from applying a criterion too literally or reading a criterion as proving more than it does. False fails do as much damage as false passes, because a candidate who keeps failing real recruiters soon stops using the rule.

### Sender domain, false fail

Legitimate recruiting mail can come from applicant tracking system domains such as eightfold.ai or successfactors.com. Lockheed Martin's published list includes both. If you check against the company's homepage domain alone, you will fail real recruiters, and that teaches you to ignore the rule. Always check against the employer's published list. If none exists, grade the domain as fail and let employer confirmation carry the decision.

### Sender domain, false pass

Built In describes a Reply-To trap: "Form shows careers@brand[.]com but Reply-To is jobs@brand-careers[.]co." The From line passes and your reply goes to the attacker. Open the full headers and grade the rightmost domain of both fields. If either one fails, the criterion fails.

### Badge read as authority

A workplace badge means the person confirmed a link to the company "at some point". LinkedIn notes that workplace verification may be removed if the organization changes its approved email domains, which also means a badge can lag behind reality. Neither badge says which openings the person can recruit for. LinkedIn itself says that applying to a job with a verification badge "does not mean you are more likely to be hired." Confirm the opening separately every time.

### Register lookup, false fail

The NYC employment agency license applies to agencies that charge job seekers for job assistance. Agencies whose fees are paid by the employer are exempt. An unlicensed contingency recruiter is normal. The reverse is the real warning sign: an agency asking you for a fee, licensed or not, fails request type.

### Recruiter location, false fail

Refolk's index has more Technical Recruiters in India (24,923) than in the US (21,200). Failing a recruiter for being offshore throws out a large share of real contacts and tells you nothing about fraud. Check the agency's relationship with the client instead.

### Code tier, missed trigger

Workspace Trust is the gate attackers exploit. Candidates who think "I'll just look at the code, I won't run it" open the folder in their editor and click Trust, and at that point the code has run. Treat any instruction to trust or open a project as code execution.

### Polish

Meta warns that "These scammers may use real employee names and create documents that appear authentic." A real name on a convincing offer letter passes neither the domain check nor the callback check, because the name is the one thing a scammer can borrow for free.

> A real employee's name is the cheapest thing a scammer can borrow, and it passes none of the six checks.

> **Note:** What this standard cannot see
>
> It checks the person, company, and opening, not whether a confirmed employer runs a fair process. The time estimates are unverified, and some employers publish no domain list, which pushes every decision onto the slower confirmation step.

## Before you release anything: the checklist and how to keep it current

Run this checklist every time you are about to move up a tier. Every item has to be true, not just likely. When a line fails, stay at the tier you are on and send the confirmation request instead of releasing the item.

#### Before releasing the next tier

- [ ] The message, sender address, full headers, and profile URL are saved.
- [ ] The rightmost domain in both From and Reply-To matches a list the employer or agency publishes.
- [ ] The conversation is on email or enterprise video, not a consumer chat app.
- [ ] The badge type and method are written down and have not been counted as a pass.
- [ ] I found the opening myself on the official careers site without using a link from the message.
- [ ] I have written confirmation from a mailbox or line the employer publishes, or the tier I am releasing does not require it.
- [ ] If the recruiter is third-party, they have named the client and the client confirmed the relationship.
- [ ] The item requested is at or below the tier my grades unlock.
- [ ] Nobody has asked me to pay anything, in any currency, for any reason.
- [ ] Any SSN, ID document, or bank detail request comes after I accepted a written offer, through the employer's own onboarding.
- [ ] Any recruiter-supplied repository has been read in the browser, its tasks.json inspected, and will be run only in isolation.

The standard depends on a few external facts that change, so here is how to re-check each one:

- **Employer domain lists.** Employers add and drop vendor domains. Before you grade a sender domain, reload the employer's recruitment-fraud page rather than relying on a list you saved months ago.
- **Platform badge meanings.** LinkedIn's help pages define what each badge confirms, and its two pages already differ: the job-post page lists three workplace methods and leaves out the Recruiter license that the profile page includes. Reread both before relying on a badge.
- **Agency licenses.** NYC employment agency licenses expire May 1 in even-numbered years. Check the status and expiration date in the DCWP search or open dataset at the time you grade, not once.
- **Scam figures.** For current loss and report counts, query ftc.gov/exploredata directly. Report any fraud attempt at ReportFraud.ftc.gov, which feeds the same data.

Once a contact clears the gate, it becomes an ordinary application, and the confirmed posting is what you build on. Refolk drafts the tailored resume and cover letter from that posting, so the time you spent verifying the opening doesn't have to be spent again rewriting for it.

## Frequently asked questions

### How do I verify a recruiter is real before sending my resume?

Check three things before the resume goes out: the sender's rightmost email domain matches a domain list the employer publishes, the conversation is on email or enterprise video rather than consumer chat, and you can find the same opening yourself on the official careers site. If all three pass, sending a resume is reasonable. Leave your home address and date of birth off it anyway, because none of those checks proves the person has authority over that opening.

### Is a recruiter asking for my SSN before an interview a scam?

Treat it as a fail under this standard. The SSN belongs on Form I-9, and USCIS says Section 1 can be completed only after you accept a job offer. Meta says it will never ask for an SSN or national ID by email or chat before an official offer, and Wells Fargo says it does not ask for one during the application process. A background check is different: it needs a standalone disclosure form and your written authorization.

### Does a LinkedIn verified badge mean the recruiter is legitimate?

No. An identity badge means a verification partner checked a government ID. A workplace badge means the person confirmed a connection to a company at some point, through a work email, Entra Verified ID, a Learning license, or a Recruiter license. Neither badge links the person to a particular opening, and verification can be removed if the company changes its approved email domains. Write down what the badge says, then check the opening separately.

### Can a fake coding test install malware just by opening the project?

Yes. In the Contagious Interview campaign, researchers found a .vscode/tasks.json file set to run on folder open. Once you click Trust in VS Code, the editor reads that file and runs its commands without you typing anything. Read an unfamiliar repository in the browser first, inspect tasks.json, turn off automatic tasks, and run the project only in an isolated environment after the employer has confirmed the opening.

### What if the recruiter works for an agency and not the company?

That is normal, so don't fail them for it. In Refolk's index, at least 24% of US Technical Recruiters work at staffing firms. For an agency recruiter, the email domain and badge describe the agency, so ask them to name the client. Then confirm the opening yourself on the client's careers site, and confirm the agency relationship through a mailbox or phone line the client publishes.

---

*From the Refolk guide library. I revise these guides rather than replacing them, so the current version is always at https://www.refolk.ai/candidates/guides/inbound-recruiter-verification-standard*
