Skip to main content
← Back to Blog

Job postings are your best free source of buying intent — here's how to use them

Colin Gillingham··5 min read
gtm-automationhubspotai-agentssales-automationintent-data

This post is part of the GTM Automation Playbook — a 13-part series on building AI-powered GTM agents with HubSpot.


When a company posts a job for a Head of Revenue Operations, they're not just hiring. They're telling you they've outgrown their current stack, they have budget approved, and someone is about to own a buying decision.

Most sales teams miss this because the signal lives on LinkedIn or Greenhouse and nobody has time to monitor 200 target accounts manually. The workflow I'm going to describe does it automatically and writes structured insights directly to your HubSpot company records before your rep's next touchpoint.

Why job postings work

Job descriptions are unusually honest. Companies write them to attract candidates, which means they describe their actual problems, their current tools, and where they're headed. A job posting for a "Salesforce Admin with experience migrating from legacy CRM" tells you they're mid-migration and probably frustrated with their current setup. A posting for "AI Automation Engineer with HubSpot experience" tells you they're investing in automation and already in your ecosystem.

The signal decays fast. A company in active hiring mode is a window that closes. Six months after they fill the role, the decision is made and the budget is spent. You want to know about the job posting in week one, not week eight.

The workflow

Five nodes in n8n, running on a daily schedule.

Node 1: Schedule trigger. Runs every morning at 7am. No webhook needed — this is a polling workflow, not event-driven.

Node 2: Pull target accounts. HTTP Request to GET /crm/v3/objects/companies/search with a filter for companies in your ICP list. I use a custom boolean property called icp_confirmed = true to tag accounts that have been qualified. Pull name, domain, hubspot_owner_id, and last_job_scan_date (a custom date property you'll create). Filter for companies where last_job_scan_date is more than 7 days ago or is empty.

Node 3: Fetch job postings. For each company, run an HTTP Request to search for job postings. The most reliable free method is the Google Jobs API via SerpAPI (https://serpapi.com/search?engine=google_jobs&q={company_name}&chips=date_posted:week). Alternatively, if you have access to LinkedIn's unofficial API or Coresignal, the data quality is higher. Pull the job title, description, posted date, and department for each posting in the last 30 days.

Node 4: Analyze with Claude. For each batch of job postings per company, send to Claude Sonnet with this prompt structure:

Analyze these job postings for {{company_name}} and extract buying signals relevant to a B2B SaaS sales team.

JOB POSTINGS:
{{job_postings_text}}

Return a JSON object with:
- signal_strength: "high", "medium", or "low"
- signal_summary: 2-3 sentence plain English summary of what these postings indicate about company priorities
- relevant_roles: list of job titles that indicate buying intent
- tech_mentions: any specific tools or platforms mentioned
- growth_areas: departments or functions they appear to be scaling
- suggested_outreach_angle: one sentence on how a sales rep should frame their next touchpoint based on these signals

Use temperature 0 for structured output. Parse the JSON response in a Function node.

Node 5: Write to HubSpot. Two writes per company. First, create a timeline event on the company record using POST /crm/v3/timeline/events with your custom event type — this gives reps a clean activity feed entry showing the job signal analysis. Second, update the company properties: set last_job_scan_date to today, job_signal_strength to the Claude output value, and job_signal_summary to the plain English summary. If signal strength is "high," also update hs_lead_status to "In Progress" and trigger a HubSpot workflow to notify the account owner via email or task.

Setting up the HubSpot side

You need three custom company properties before the workflow can write: last_job_scan_date (date), job_signal_strength (enumeration: high, medium, low), and job_signal_summary (multi-line text). Create these in HubSpot under Settings → Properties → Company Properties.

For the timeline event type, go to Settings → Integrations → Private Apps and create a custom timeline event type called "Job Signal Detected." This shows up as a distinct event in the company activity feed rather than getting buried in notes.

What reps do with it

The workflow creates the signal. The rep acts on it. I set up a HubSpot view called "Hot Accounts — Job Signals" filtered to companies where job_signal_strength = high and last_job_scan_date is within 14 days. Reps check this view daily as part of their prospecting routine.

The outreach angle Claude generates is a starting point, not a script. A rep who reads "company is scaling their RevOps function and mentions Salesforce migration challenges" knows exactly how to open a conversation. The signal does the research. The rep does the selling.

Colin Gillingham

Need a Fractional Head of AI?

I help companies build an AI operating system — shared context across teams, AI handling the repetitive work, and your people focused on what actually matters.

15+

Years in Tech

12+

AI Products Shipped

3

Fortune 500 Brands