Skip to content
Marketing
Skill

/job-posting-intent

Detect buying intent from job postings. When a company posts a job in your problem area, they've allocated budget and are actively thinking about the problem. This skill finds those companies, qualifies them, extracts personalization context, and outputs everything to a Google

From plugin
goose-skills
1.2k200 skills
Install
$ npx -y skills add gooseworks-ai/goose-skills --skill job-posting-intent --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/job-posting-intent

Context preview

The summary Claude sees to decide when to auto-load this skill.

Detect buying intent from job postings. When a company posts a job in your problem area, they've allocated budget and are actively thinking about the problem. This skill finds those companies, qualifies them, extracts personalization context, and outputs everything to a Google

SKILL.md

job-posting-intent.SKILL.md
name: job-posting-intent
version: 1.1.0
description: >
  Detect buying intent from job postings. When a company posts a job in your problem area,
  they've allocated budget and are actively thinking about the problem. This skill finds those
  companies, qualifies them, extracts personalization context, and outputs everything to a
  Google Sheet. Does NOT do outreach — just delivers qualified leads with reasoning.
tags: [lead-generation, outreach]

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

# Get your token at https://console.apify.com/account/integrations
export APIFY_API_TOKEN="apify_api_YOUR_TOKEN_HERE"

2. Install dependencies

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

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.

# 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 | |

Read more
Ships withgoose-skills

Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.

Get the whole plugin

Other skills on goose-skills.