The Mine Works
← All posts
use-case July 17, 2026 · 8 min read

I Automated My AI Job Hunt: 8 Tools, One Claude Agent, Under $1

Most job hunting is spent on the wrong problem. Here is the exact end-to-end flow — find who is actually hiring, rank by real fit, research the company, find the human, and write an application grounded in facts — run entirely from Claude via MCP.

Try the scraper

The actor referenced in this article. Pay only for results delivered.

View the scraper →

Here is the uncomfortable arithmetic of a modern job hunt: you send 200 applications, you hear back from three, and you spend most of your time on the part that does not matter.

The part that does not matter is filling in forms. The part that does is knowing which roles exist before everyone else finds them, which are actually worth your time, and what to say that is specific enough to be worth reading.

That is a data problem. So let’s treat it like one.

This post is the complete flow I would run if I wanted an AI generalist role tomorrow. Eight tools, one Claude conversation, and about eighty cents. No code.

The setup (two minutes, once)

The Mine Works MCP server puts our scrapers inside Claude as native tools. Claude calls them itself and reasons over the results in the same conversation — you never copy-paste a CSV.

Open ~/.claude.json (or Claude Desktop → Settings → Developer → Edit Config) and add:

{
  "mcpServers": {
    "themineworks": {
      "url": "https://the-mine-works-mcp.hatchable.site/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}

Grab your token from Apify → Account → Integrations. Restart Claude. Runs bill to your own Apify account at pay-per-result rates — there is no subscription on our end.

Now the flow.

Step 1: Find who is actually hiring — from the source

Job boards are a lagging index. A role appears on the company’s own applicant tracking system the moment it opens, and shows up on aggregators days later, after thousands of people have already seen it.

So skip the aggregator. ATS Jobs reads Greenhouse, Lever, Ashby and Workday boards directly.

Prompt: Use scrape_ats_jobs to pull every open role at anthropic. Then do the same for openai, scale, cohere, and huggingface. Give me the full list with title, location, department and URL.

A real run against Anthropic’s board right now returns 40 open roles, each with the full job description attached:

- AI Compliance Officer                    | Dublin, IE
- Anthropic Fellows Program, AI Safety     | London, UK; Remote-Friendly, US; San Francisco, CA
- Account Executive, Public Sector         | Sydney, Australia
- Amazon GTM Partnership, Startups         | San Francisco, CA | New York City, NY | Seattle, WA
...

That full-description field is the important part. It is what makes the next step possible.

Cost: $0.001 per job. Ten companies at ~40 roles each is 400 jobs — forty cents.

Step 2: Let Claude read all 400 job descriptions

This is the step that is genuinely new. You are not going to read 400 job descriptions. Claude will, in about a minute, and it already has your CV in the conversation.

Prompt: Here is my CV. [paste it] Read every job description you just pulled. Score each role 1-10 on how well my actual experience matches what they are asking for. Be harsh — I would rather see 6 real matches than 40 maybes. For each one that scores 7+, tell me in one line why it matches, and one thing in my background that is a genuine gap.

You now have a ranked shortlist with the gaps named, from a model that read every word. That is a different starting position than “I searched ‘AI engineer’ and sorted by date.”

Cost: nothing. This is just Claude reading data you already pulled.

Step 3: Research each company properly

For the shortlist only — no point researching companies you are not applying to.

Three tools, three different questions:

Are they real and growing?

Prompt: Use get_linkedin_company for the 6 shortlisted companies. Then search_crunchbase for each one — I want total funding, last round, and date.

Funding date matters more than funding total. A company that raised 18 months ago and is hiring aggressively is in a different position than one that raised last month.

What are they actually building?

Prompt: Use analyze_github_repos on their main public repos. What is the real stack, how active is development, and when was the last release?

This is the one that separates you from every other applicant. Their careers page says “we use modern ML tooling.” Their GitHub says what they actually import, how often they ship, and whether the project has three contributors or thirty.

Cost: $0.004 per company (LinkedIn) + $0.0133 (Crunchbase) + $0.002 per repo. For six companies: about eleven cents.

Note: Crunchbase is a browser-based scrape and takes longer than a single request can wait. The tool hands back a run_id and Claude collects it with get_run_results a few seconds later. You will see it do this automatically — that is expected, not an error.

Step 4: Find the human, not the portal

Applications go into a queue. Humans read messages.

Prompt: Use search_linkedin_employees on each shortlisted company, filtered to the job title that would own the team I would join. Then use search_linkedin_posts to find what those people have posted about in the last few months.

The first call finds the person. The second finds what they care about right now. That is your opening line, and it is not a guess.

A real call against Stripe returns their actual leadership with titles and profile URLs. The post search returns real posts — including, in a live run today, someone writing publicly about the volume of applications they were receiving. That is a person telling you exactly what their problem is.

Cost: $0.002 per profile, $0.003 per post.

Step 5: Get a contact address that actually exists

Prompt: Use find_website_contacts on the 6 company domains. Then run verify_emails on everything it finds — I only want addresses that pass MX and SMTP.

Website Contact Finder crawls the homepage, contact, about and team pages and pulls emails, phones and social profiles. Email Verifier then tells you which ones are real, which are role-based (careers@, info@ — a queue, not a person), and which are catch-alls.

Sending to a dead address is worse than not sending. Verify first.

Cost: $0.001 per domain, $0.001 per email verified.

Step 6: Write the application that could only be about them

Now Claude has: the exact job description, the company’s funding position, their real engineering activity, the hiring manager’s name, what that person posted about last week, and your CV.

Prompt: Write a short outreach note to [name] about the [role]. Reference their post about [topic] only if it is genuinely relevant — do not force it. Mention one specific thing from their GitHub that connects to my background. Under 150 words. No flattery, no “I’m excited about your mission.” Just the reason I am worth 15 minutes.

The reason this works is not that the AI wrote it. It is that every claim in it is grounded in something real that you pulled thirty seconds ago. It is specific because it can be specific.

Step 7: Make it standing

The whole thing is a prompt, which means it can be a recurring one.

Prompt: Run the ATS pull across my 10 target companies again. Only show me roles that are new since the last run and score 7+ against my CV.

Run it every morning. You now see matching roles the day they post, with a ranked fit score, before the aggregators have indexed them.

What it actually costs

Real per-result prices, for a full pass over 10 target companies:

StepToolRateVolumeCost
Find rolesscrape_ats_jobs$0.001/job400 jobs$0.40
Company factsget_linkedin_company$0.004/company10$0.04
Fundingsearch_crunchbase$0.0133/company10$0.13
Engineeringanalyze_github_repos$0.002/repo10$0.02
Find peoplesearch_linkedin_employees$0.002/profile50$0.10
What they care aboutsearch_linkedin_posts$0.003/post30$0.09
Contactsfind_website_contacts$0.001/domain10$0.01
Verifyverify_emails$0.001/email20$0.02
Total$0.81

Eighty-one cents. You pay per result delivered — a search that returns nothing costs nothing, and a blocked or failed run is never charged.

The honest part

This will not write your experience for you. If you are not a fit for the role, a well-researched note makes that clearer, faster.

What it removes is the part that was never the real work: not knowing which of 400 roles to care about, and having nothing specific to say about the ten you do. Those are lookup problems. They have always been lookup problems. Until recently there was just no reasonable way to do the lookups.

Now there is, and it costs less than a coffee.


Tools used: ATS Jobs · LinkedIn Company Scraper · Crunchbase · GitHub Repo Intelligence · LinkedIn Employees · LinkedIn Post Search · Website Contact Finder · Email Verifier

All of them are available as one MCP endpoint.

Related Actor

Explore the scraper referenced in this article — see inputs, outputs, and pricing, then run it on Apify.

Frequently asked questions

Do I need to write any code for this? +

No. Everything here runs from Claude Desktop through the MCP server. You add one block to a config file, paste your Apify token, and then talk to Claude in plain English. The only 'code' in this post is the JSON config block and the prompts themselves.

What does a full run actually cost? +

Researching 10 target companies end-to-end — every open role, company firmographics, funding, engineering activity, the hiring managers, and verified contact addresses — costs about $0.81 at current per-result rates. You pay per result delivered, and nothing at all for a search that returns no results.

Is scraping LinkedIn and job boards allowed? +

Everything here reads public pages only: public ATS boards (Greenhouse, Lever, Ashby, Workday), publicly indexed LinkedIn pages, public GitHub repos, and company websites. No login, no cookies, no account credentials. You are reading what any visitor can read, just faster.

Why not just use LinkedIn Easy Apply? +

Because Easy Apply optimizes for volume on both sides. The bottleneck in a job hunt is not how many applications you can send — it is knowing which roles are worth applying to and having something specific to say. This flow attacks that bottleneck instead.