How do I check candidate portfolio and company URLs before recruiting outreach?
The problem
A recruiting AI agent scrapes candidate profiles from job boards and LinkedIn. Each candidate has a personal website, portfolio, or company URL attached to their profile. But this data goes stale fast. Dead portfolio sites mean the candidate has moved on. Parked company domains mean the employer may no longer exist. Wasting outreach on stale candidates costs time and money.
Clicking through hundreds of portfolio links manually is not realistic. You need a way to batch validate URLs and filter out candidates whose online presence has gone dark.
How Unphurl solves it
Check candidate portfolio URLs and company websites through Unphurl to detect dead sites, parked domains, and missing infrastructure. Use Claude Cowork, OpenClaw, or the CLI to batch check candidate lists. A parked portfolio means the candidate probably isn't actively looking. A company domain with no MX record means you can't reach anyone at that company by email. These signals help you prioritise live, reachable candidates and skip the stale ones.
Signals that matter for this use case
- – Parked domain means the portfolio or company site is a placeholder. Nobody is maintaining it.
- – Chain incomplete means the URL doesn't resolve at all. The site is dead.
- – SSL invalid suggests the site owner stopped maintaining their infrastructure.
- – HTTP only indicates a neglected site. Active portfolios use HTTPS.
- – No MX record means the domain can't receive email. If it's the company domain, email outreach will bounce.
- – Expiring soon flags domains nearing expiry, a sign the owner may have abandoned it.
Note: domain age and brand impersonation are weighted at 0 for this use case. A candidate's portfolio being new is not suspicious, and personal sites don't impersonate brands.
Suggested scoring profile
{
"name": "recruiting",
"weights": {
"parked": 35,
"chain_incomplete": 25,
"ssl_invalid": 15,
"http_only": 15,
"no_mx_record": 10,
"expiring_soon": 10,
"domain_age_7": 0,
"brand_impersonation": 0
}
} What a result looks like
You're reviewing 50 candidate profiles. Claude checks all portfolio and company URLs.
You focus outreach on the 42 candidates with live online presences. The 8 flagged candidates get deprioritised or removed from the list. No time wasted on emails that bounce or candidates who disappeared.
Cost
Most company domains in candidate profiles are well-known companies that resolve for free via the Tranco Top 100K. Portfolio sites on platforms like GitHub Pages, Behance, and Dribbble are also known domains. Only personal domains and smaller company sites use pipeline checks. The Starter package ($9 for 100 pipeline checks) covers months of recruiting sessions.
Get started
For non-coders (Claude Cowork, OpenClaw, or any AI agent)
Add the Unphurl MCP server to your Claude configuration, or build an Unphurl skill for OpenClaw. This gives your AI the ability to check URLs directly when you're reviewing candidates.
{
"mcpServers": {
"unphurl": {
"command": "npx",
"args": ["-y", "@unphurl/mcp-server"],
"env": { "UNPHURL_API_KEY": "uph_your_key_here" }
}
}
} Then ask Claude: "Check the portfolio URLs for these candidates and tell me which ones are dead or parked." Paste your candidate list or spreadsheet and Claude handles the rest. No code, no script, just a conversation.
Pair this with the Unphurl companion skill so your AI proactively flags dead URLs whenever you share candidate data.
For developers and recruiting platforms
Integrate directly into your recruiting pipeline with a batch check. Export candidate URLs to a file and run them through the CLI.
# Batch check candidate URLs from a file
unphurl --batch candidate-urls.txt --profile recruiting