job-posting-intent
This skill identifies hiring job postings as budget signals for B2B sales outreach, using LinkedIn job search data to find companies actively solving problems that align with a product's solution. Results are exported to Google Sheets with decision-maker suggestions and personalization context, helping sales teams target companies with confirmed budget allocation and problem acknowledgment. The tool uses Apify's LinkedIn job search actor with transparent per-event pricing starting at roughly nine cents for quick searches.
git clone --depth 1 https://github.com/gooseworks-ai/goose-skills /tmp/job-posting-intent && cp -r /tmp/job-posting-intent/skills/capabilities/job-posting-intent ~/.claude/skills/job-posting-intentSKILL.md
# Job Posting Intent Detection
Find companies that are hiring for roles related to the problem you solve. A job posting is a **budget signal** — the company has allocated money to solve a problem your product addresses.
Results are automatically exported to a **Google Sheet** with signal strength, decision-maker suggestions, outreach angles, and personalization context.
## Why This Works
When a company posts a job, they've:
- Allocated budget (headcount is expensive)
- Acknowledged the problem exists
- Started actively solving it
If your product helps solve that problem faster, cheaper, or better than a hire alone, the timing is perfect.
## Cost
**Apify Actor:** `harvestapi/linkedin-job-search` (pay-per-event)
| Component | Cost |
|-----------|------|
| Actor start (per run) | $0.001 |
| Per job result | $0.001 |
| Apify platform fee | +20% |
**Typical run costs:**
| Scenario | Titles | Jobs/title | Runs | Est. Cost |
|----------|--------|------------|------|-----------|
| Quick scan | 3 | 25 | 3 | ~$0.09 |
| Standard | 5 | 25 | 5 | ~$0.16 |
| Deep search | 5 | 100 | 5 | ~$0.60 |
| Multi-location | 5×3 | 25 | 15 | ~$0.47 |
Google Sheet creation is free (uses Rube/Composio integration).
Always run `--estimate-only` first to see the Apify cost before executing.
Track usage: https://console.apify.com/billing
## Setup
### 1. Apify API Token
```bash
# Get your token at https://console.apify.com/account/integrations
export APIFY_API_TOKEN="apify_api_YOUR_TOKEN_HERE"
```
### 2. Install dependencies
```bash
pip3 install requests
```
### 3. Rube/Composio (for Google Sheets)
Google Sheet creation uses Rube MCP with Composio. The token is preconfigured.
If it stops working, update the `RUBE_TOKEN` env var or the default in `search_jobs.py`.
## Usage
### Step 1: Define your ICP and target titles
Think about it this way: **"If a company is hiring for [role], it means they're investing in [problem area you solve]."**
Examples:
- GTM agency: "Growth Marketing Manager", "SDR Manager", "RevOps Engineer", "GTM Engineer"
- AI dev tools: "AI Engineer", "ML Ops Engineer", "Prompt Engineer", "LLM Engineer"
- Sales automation: "SDR", "BDR Manager", "Sales Ops", "Revenue Operations"
### Step 2: Estimate cost
```bash
python3 scripts/search_jobs.py \
--titles "GTM Engineer,SDR Manager,Head of Demand Gen" \
--locations "United States" \
--max-per-title 25 \
--estimate-only
```
### Step 3: Run the search
The script searches LinkedIn Jobs, groups results by company, qualifies leads, and creates a Google Sheet automatically.
```bash
# Standard search (creates Google Sheet)
python3 scripts/search_jobs.py \
--titles "GTM Engineer,SDR Manager,RevOps Engineer" \
--locations "United States" \
--max-per-title 25
# Deep search with custom sheet name
python3 scripts/search_jobs.py \
--titles "AI Engineer,ML Ops Engineer,Prompt Engineer" \
--locations "United States" \
--max-per-title 50 \
--sheet-name "AI Hiring Signals - Feb 2026"
# Filter results to only relevant titles (LinkedIn search is fuzzy)
python3 scripts/search_jobs.py \
--titles "GTM Engineer,Growth Marketing Manager,SDR Manager" \
--locations "United States" \
--relevance-keywords "gtm,growth,sdr,marketing,demand gen,revops"
# Also save raw JSON alongside the sheet
python3 scripts/search_jobs.py \
--titles "GTM Engineer,SDR Manager" \
--locations "United States" \
--output results.json
# Skip Google Sheet, console + JSON only
python3 scripts/search_jobs.py \
--titles "GTM Engineer" \
--no-sheet --json
```
## What the Script Does
1. **Searches** LinkedIn Jobs for each title/location combination via Apify
2. **Groups** results by company (deduplicates)
3. **Computes signal strength** based on number of relevant postings + seniority
4. **Extracts personalization context** from job descriptions (tech stack, growth signals, pain points)
5. **Suggests decision-maker title** (one level above the hired role)
6. **Suggests outreach angle** (accelerate / replace / multiply the hire)
7. **Creates a Google Sheet** with all qualified leads
8. **Prints a console summary** of all companies found
## Options Reference
```
Required:
--titles Comma-separated job titles to search
Optional:
--locations Comma-separated locations (default: no filter)
--max-per-title Max jobs per title per location (default: 25)
--posted-limit Recency: 1h, 24h, week, month (default: week)
--output, -o Also save raw JSON to this file path
--json Print JSON output to console
--estimate-only Show cost estimate without running
--no-sheet Skip Google Sheet creation
--sheet-name Custom Google Sheet title (default: "Job Posting Intent Signals - {date}")
--relevance-keywords Comma-separated keywords to filter truly relevant postings
```
## Google Sheet Columns
| Column | Description |
|--------|-------------|
| Signal | HIGH / MEDIUM / LOW based on # postings + seniority |
| Company | Company name |
| Employees | Employee count |
| Industry | Company industry |
| Website | Company website |
| LinkedIn | Company LinkedIn URL |
| # Postings | Number of relevant job postings found |
| Job Titles | The actual job titles posted |
| Job URL | Link to the primary job posting |
| Location | Job location(s) |
| Decision Maker | Suggested title of person to contact |
| Outreach Angle | Accelerate / Replace / Multiply the hire |
| Tech Stack | Technologies mentioned in job descriptions |
| Growth Signals | Growth indicators (first hire, scaling, series stage) |
| Pain Points | Pain indicators (automate, optimize, manual processes) |
| Description | Company description snippet |
## AI Agent Integration
When using this skill as an agent, the typical flow is:
1. User describes their product and the types of roles that signal intent
2. Agent runs `--estimate-only` and confirms cost with user
3. Agent runs the search (Google Sheet is created>
AI video conversations - create real-time video calls with AI personas
AI-powered web scraping - extract data using natural language prompts
Search Amazon products - find items, compare prices, read reviews
Test and document API endpoints - validate responses, check status, generate examples
>
>
Brand intelligence - logos, colors, fonts, styleguides, and company data from any domain