Here's a problem that seems to have become more common over the last few years. A company will give a recruiter a search. The recruiter will find a good candidate and the company will say, "We're interested in this person but we're not going to pay you because he's already in our database."
To the company, it makes sense. Why should they pay a recruiter to find them someone they already know? But the recruiter knows better. If the company had the candidate already why did they give a recruiter the search? They gave it to him because they didn't know about that candidate and would have never have found him if the recruiter had not brought him to their attention.
What they did was run the name through their Applicant Tracking System (ATS) after they received the resume from the recruiter. That's when they discovered the resume, not before.
Perhaps the candidate applied for a different position a year ago or two years ago or even two months ago. It doesn't make any difference. The company owes the recruiter a fee.
I have a friend in Scotland who was given a search for a design engineer by the owner of a company. The best person he found for the job was the owner's brother-in-law.
The owner had never thought of asking him but he hired him and to his credit he paid the fee without complaint.
Here's a case in which it didn't work out so well.