Hiring Intent Account Feed (Jobs to Accounts) avatar

Hiring Intent Account Feed (Jobs to Accounts)

Pricing

from $10.00 / 1,000 ranked accounts

Go to Apify Store
Hiring Intent Account Feed (Jobs to Accounts)

Hiring Intent Account Feed (Jobs to Accounts)

Turn job postings into ranked B2B outbound accounts with explainable scoring, fresh-signal deltas, and optional webhook alerts.

Pricing

from $10.00 / 1,000 ranked accounts

Rating

0.0

(0)

Developer

Alex, The Creator

Alex, The Creator

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Hiring Intent Account Feed

Convert job postings into ranked B2B outbound accounts with explainable hiring-intent signals.

Why Teams Use This

  • Prioritizes accounts with active hiring momentum.
  • Works with both Greenhouse boards and existing Apify datasets.
  • Produces explainable scoring with matched categories and keywords.
  • Tracks new-vs-seen changes so repeated runs surface fresh opportunities.
  • Ships run-level ROI counters in SUMMARY for stakeholder reporting.

Quick Start (2 Minutes)

  1. Run with default input (already prefilled with greenhouseBoardTokens: ["webflow"]).
  2. Open dataset view overview for ranked accounts.
  3. Check key-value store record SUMMARY for run counters and ROI metrics.

What It Does

  • Ingests jobs from one of two sources:
    • Apify dataset (sourceDatasetId)
    • Greenhouse Job Board API (greenhouseBoardTokens)
  • Normalizes and deduplicates jobs.
  • Aggregates signals by company domain.
  • Scores accounts using configurable role rules.
  • Tracks new-vs-seen signals across runs using persisted state.
  • Outputs ranked accounts to the default dataset.
  • Writes run metrics and ROI metrics to SUMMARY in default key-value store.
  • Optionally posts digest and failure alerts to webhooks.

Best-Fit Use Cases

  • Outbound prospecting queues for SDR/AE teams.
  • Weekly account prioritization for RevOps.
  • Agency lead-list enrichment workflows.
  • Signal-driven routing into CRM or outreach automation.

Input Contract

Use the Actor input schema in the Apify run UI.

Source Selection

Provide exactly one source mode.

FieldTypeRequiredNotes
sourceModestringYesgreenhouse_api or dataset. Runtime validation enforces consistency with source fields.
sourceDatasetIdstringYes (if greenhouseBoardTokens is empty)Apify dataset ID with source job rows.
greenhouseBoardTokensstring[]Yes (if sourceDatasetId is empty)Greenhouse board tokens or board URLs. Example: webflow or https://boards.greenhouse.io/webflow.
greenhouseIncludeContentbooleanNoGreenhouse mode only. Default true. Includes full job description content when enabled.

Source selection is strictly XOR-validated at runtime (schema requires explicit sourceMode and mode guidance):

  • dataset mode: non-empty sourceDatasetId and empty greenhouseBoardTokens
  • greenhouse mode: non-empty greenhouseBoardTokens and empty sourceDatasetId

Default public run behavior:

  • The input UI is prefilled with greenhouseBoardTokens: ["webflow"] so first-time runs work without extra setup.
  • To use dataset mode, clear greenhouseBoardTokens and set sourceDatasetId.

Processing Controls

FieldTypeDefaultNotes
maxSourceItemsinteger5000Max source jobs to read in a run (hard-capped at 20000).
maxAccountsinteger200Max ranked accounts to output (hard-capped at 1000).
minAccountScoreinteger25Accounts below this score are dropped.

Dataset Mapping (dataset mode)

fieldMapping supports custom source key lookup for:

  • companyNameFields
  • companyDomainFields
  • companyUrlFields
  • jobTitleFields
  • jobUrlFields
  • locationFields
  • postedAtFields
  • descriptionFields

Scoring Rules

roleRules[] entries:

  • name
  • weight
  • keywords[]
  • negativeKeywords[] (optional)
  • outreachAngles[]

Delivery and Billing

FieldTypeDefaultNotes
slackWebhookUrlstring""Optional digest webhook.
digestTopNinteger10Number of rows in digest.
alertWebhookUrlstring""Optional failure alert webhook.

Billing note: pay-per-event charging uses a fixed internal event name (ranked-account) and is not configurable via Actor input.

Input Examples

Dataset Mode

{
"sourceMode": "dataset",
"sourceDatasetId": "abc123XYZ",
"maxSourceItems": 3000,
"maxAccounts": 150,
"minAccountScore": 25,
"fieldMapping": {
"companyNameFields": ["company", "companyName"],
"jobTitleFields": ["title", "jobTitle"],
"jobUrlFields": ["url", "jobUrl"]
},
"slackWebhookUrl": "",
"digestTopN": 10,
"alertWebhookUrl": ""
}

Greenhouse Mode

{
"sourceMode": "greenhouse_api",
"greenhouseBoardTokens": [
"webflow",
"airtable",
"https://boards.greenhouse.io/discord"
],
"greenhouseIncludeContent": true,
"maxSourceItems": 3000,
"maxAccounts": 150,
"minAccountScore": 25
}

Source Row Shape (dataset mode)

A typical source row:

{
"companyName": "Acme Inc",
"companyUrl": "https://acme.com",
"jobTitle": "Senior RevOps Manager",
"jobUrl": "https://jobs.acme.com/revops-123",
"location": "San Francisco, CA",
"postedAt": "2026-02-01T12:00:00Z",
"description": "Own Salesforce administration and RevOps process improvements."
}

Output Contract

Default Dataset

One row per account.

FieldTypeDescription
accountKeystringStable account identifier used for state/dedupe/ranking.
companyNamestringAccount display name.
companyDomainstring | nullCanonical website domain when available; null if unresolved.
scoreintegerFinal account score (0-999).
jobCountintegerTotal jobs after normalization/dedupe.
matchedJobCountintegerJobs that matched at least one rule.
matchedJobRationumbermatchedJobCount / jobCount.
newJobCountintegerNew jobs vs persisted seen-state.
newMatchedJobCountintegerNew matched jobs vs seen-state.
isNewCompanybooleanWhether account was unseen in prior state.
matchedCategoriesstring[]Rule categories with hits, ordered by hit strength.
outreachAnglesstring[]Up to 4 angle suggestions from matched categories.
latestPostedAtstringLatest posting timestamp observed for the account (ISO 8601 UTC).
avgSignalConfidencenumberMean confidence across matched rule events.
recencyScoreintegerRecency factor (1-100).
scoreBreakdownobjectComponents used to build final score.
signalsobject[]Up to 8 matched signals.
generatedAtUtcstringRun timestamp in UTC (Z).

signals[] fields:

  • title
  • location
  • postedAt
  • jobUrl
  • matchedRules
  • signalConfidence
  • matchedKeywordsByRule

scoreBreakdown fields:

  • categoryScore
  • volumeComponent
  • qualityComponent
  • confidenceComponent
  • recencyComponent

SUMMARY (default key-value store)

SUMMARY includes run counters plus ROI summary.

FieldTypeDescription
sourceTypestringdataset or greenhouse_api.
sourceDatasetIdstringDataset ID (empty in Greenhouse mode).
sourceItemsReadintegerJobs read from source ingestion.
accountsMatchedintegerAccounts with non-zero matched score before cap.
accountsOutputintegerAccounts actually delivered to dataset (after score/output caps and PPE cost cap, if hit).
generatedAtUtcstringRun timestamp UTC.
filteredMissingDomainintegerJobs dropped for missing domain.
filteredMissingTitleintegerJobs dropped for missing title.
filteredDuplicateJobsintegerDuplicate job fingerprints dropped.
filteredBelowMinScoreintegerAccounts dropped below minAccountScore.
roiSummaryobjectAggregate output quality metrics.
stoppedByMaxTotalChargebooleanTrue when PPE max total charge limit stopped output early.
deliveryobjectDelivery accounting for attempted vs delivered vs charged rows.
ingestionobjectPresent in Greenhouse mode; board-level ingestion stats.

roiSummary fields:

  • outputMatchedJobs
  • outputNewMatchedJobs
  • outputHighConfidenceAccounts
  • highConfidenceThreshold
  • outputAvgAccountScore
  • outputAvgMatchedJobRatio
  • outputAvgSignalConfidence

delivery fields:

  • attemptedRows
  • deliveredRows
  • chargedRows
  • chargedEventName
  • pricingModel
  • isPayPerEvent
  • knownPayPerEvents
  • eventChargeLimitReached
  • stoppedByMaxTotalCharge

ingestion includes board-level success/failure detail:

  • succeededBoards[]: { token, jobsFetched }
  • failedBoards[]: { token, reason, httpStatus?, message }

Processing Behavior

Normalization and Dedupe

  • Domains are normalized from explicit domain, company URL, or job URL.
  • Known aggregator hosts are re-keyed to account-level keys (for example webflow.greenhouse).
  • Description text is cleaned (HTML/boilerplate removal) before scoring.
  • Dedupe uses a deterministic fingerprint over domain/title/location/url (or description snippet fallback).

Scoring

  • Rule hits come from keyword matches in title + cleaned description.
  • A rule match requires either a title hit or at least two distinct keyword hits.
  • Optional negativeKeywords suppress matches for known noisy contexts.
  • Rule-level confidence is computed from title/body hit mix and keyword coverage.
  • Final score blends:
    • weighted category hits
    • match ratio quality
    • confidence quality
    • recency
  • Accounts with no matched rules are not emitted.

State and Newness

  • State stores seen fingerprints per accountKey.
  • newJobCount and newMatchedJobCount are calculated against persisted state.
  • Seen-state is updated for all matched domains, not only capped output rows.

Failure Handling

  • Failures are logged with pipeline stage context.
  • If alertWebhookUrl is set, a failure alert message is posted.
  • In Greenhouse mode, per-board failures are counted in ingestion.greenhouseBoardsFailed; successful boards still process.

Changelog

See CHANGELOG.md.