Timing is the part of B2B sales most people get wrong. They reach out to companies that might buy, instead of companies that are buying right now.
A company that just posted three senior data engineer roles has an open headcount budget, an active hiring cycle, and a head of data with approval authority who is already thinking about their stack. They are in motion. That is the moment to reach out — not six months later when the hiring is done and the budget is spent.
The problem is that job postings are scattered across LinkedIn, Greenhouse, Lever, Indeed, and dozens of company career pages. Manually checking them isn't realistic at any scale.
This tutorial shows you how to automate it. The Job Posting AI Analyzer scrapes job posting URLs you feed it and sends each one through Claude AI to extract: tech stack, seniority, what business problem the hire is solving, who likely approved it, and a B2B signal score from 1–10.
What You'll Build
A pipeline that takes a list of job posting URLs and returns:
- B2B hiring signal score (1–10) for each posting
- Tech stack extracted from the job description
- Seniority level and team context
- Business problem the hire is solving
- Decision-maker title (who probably approved the req)
- Outreach timing recommendation
A 50-URL batch runs in under 2 minutes and costs less than $0.75 total.
What You Need
- An Apify account — free tier includes $5 compute
- An Anthropic API key — Claude Haiku handles the analysis; fractions of a cent per posting
- A list of job posting URLs from LinkedIn, Greenhouse, Lever, Indeed, or company career pages
Step 1: Find Job URLs
LinkedIn's job search is the easiest source. Filter by:
- Function (e.g., "Engineering", "Data", "Marketing")
- Company size (e.g., 51–200, 201–500 employees)
- Date posted (past week)
Copy the job URLs from the results. You can also use Apify's LinkedIn Jobs Scraper if you want to automate the URL collection step.
For Greenhouse and Lever boards (common at Series A–C companies), the URL format is consistent: boards.greenhouse.io/[company]/jobs/[id] and jobs.lever.co/[company]/[id]. Both work with this actor.
Step 2: Open the Actor
Go to Job Posting AI Analyzer on Apify and click Try for free.
Step 3: Configure Your Run
Here's a sample input for a data tooling company targeting companies scaling their data teams:
{
"jobUrls": [
"https://www.linkedin.com/jobs/view/4253571918",
"https://boards.greenhouse.io/databricks/jobs/7614285002",
"https://jobs.lever.co/airbyte/abc123",
"https://careers.acmecorp.com/jobs/senior-data-engineer"
],
"anthropicApiKey": "sk-ant-api03-...",
"minScore": 7,
"extractTechStack": true,
"maxConcurrency": 5
}
jobUrls — any publicly accessible job posting URL. Boards requiring login won't work; most don't.
minScore — posts scoring below this are dropped. 7+ means the company is hiring in or near the function your product serves. 9–10 means the hire directly implies budget for your category.
extractTechStack — keep this true. Even when tech isn't listed explicitly, Claude infers it from context ("experience with our data warehouse" in a Snowflake shop tells you their stack).
Step 4: Run It
Click Start. A 5-URL batch finishes in under a minute. A 50-URL batch takes 1–2 minutes.
Step 5: Read a High-Score Output
Here's what a score-9 record looks like:
{
"url": "https://boards.greenhouse.io/somecompany/jobs/4567890",
"company": "Acme Analytics",
"jobTitle": "Senior Data Engineer",
"location": "Remote",
"analysis": {
"hiringSignalScore": 9,
"seniority": "Senior (5+ years)",
"techStack": ["Python", "dbt", "Snowflake", "Airflow", "AWS"],
"teamContext": "Third data hire in 60 days — building out platform team, not just backfilling",
"businessProblem": "Moving from ad-hoc analytics to a self-serve data platform. Engineering is the current bottleneck for reports.",
"decisionMakerTitle": "Head of Data / VP Engineering",
"outreachTiming": "Ideal — actively scaling, budget open, buying cycle in progress"
}
}
Score 9 with "actively scaling, budget open" means reach out this week. The Head of Data is approving headcount — they're also thinking about tooling to make that team productive.
The techStack field tells you exactly what they use. If your product integrates with Snowflake and dbt, lead with that. If they're on a stack you don't support, don't waste their time.
The businessProblem field gives you your opening line: "Saw you're building out your data platform — specifically around self-serve analytics. Worth a 20-minute call to show you how [X companies your size] handled the engineering bottleneck for reporting?"
Step 6: Export and Outreach
Export the dataset as CSV → import into HubSpot, Apollo, or your CRM. Use the decisionMakerTitle to find the right person on LinkedIn. Use businessProblem as your first sentence.
Don't reference that you saw their job posting directly — it can feel intrusive. Use it as intelligence, not as your opening.
Tips
Hiring patterns that signal open budget:
- Multiple hires in the same function within 60 days — budget is flowing
- Senior-level hires (5+ years) — they're paying above median, budget is real
- "Head of" or "Director of" hires — building a new function from scratch
Patterns that signal cost-cutting (avoid):
- Backfill postings ("joining our existing team of X")
- Junior-heavy postings (they're reducing cost, not scaling)
- Postings that have been live for 60+ days (either very hard to fill or frozen)
How often to run it: Weekly. A 7-day cadence catches companies early in their hiring cycle while the budget decision is still fresh. Monthly is too slow — the window closes.
Building your URL list at scale: Use LinkedIn job search with filters for your ICP (company size + function + date posted), export the URLs, run them through this actor. Takes 20 minutes to set up a weekly process that would otherwise take hours.
Pricing
| Component | Cost |
|---|---|
| Apify compute | ~$0.01–$0.02 per job URL |
| Anthropic (Claude Haiku) | ~$0.003 per posting analyzed |
| 50 job postings | Under $0.75 total |
Weekly runs of 100 postings cost about $1.50. You only need one good lead per week to justify it.
Try It
The actor is live: Job Posting AI Analyzer on Apify
Start with 10 job URLs from LinkedIn for companies in your ICP. See what scores 8+. Use the business problem field to write your first outreach line.
Questions or feedback on the actor? Drop a comment below.
Top comments (0)