tracking-hiring-signals-from-company-tweets

Tracks hiring signals and growth indicators from company Twitter accounts using apidojo's Tweet scraper on Apify. Triggers when the user asks to: find companies that are actively h…

API Dojo

@apidojo-io

Install

$ openclaw skills install @apidojo-io/tracking-hiring-signals-from-company-tweets

Tracking Hiring Signals from Company Tweets

Monitors company Twitter accounts for hiring announcements and growth signals. Companies tweet about openings before jobs.page or LinkedIn posts go live — Twitter is an early signal channel.

Prerequisites

  • APIFY_TOKEN environment variable set
  • Optional: Apify MCP server installed

Inputs

ParameterTypeRequiredDefaultNotes
searchTermsarray[]Twitter advanced search queries (e.g. ["#AI lang:en", "from:NASA"])
sortstringOptionalTopSort order: Latest, Top, or Latest+Top
tweetLanguagestringOptionalISO 639-1 language code (e.g. en)
maxItemsnumberOptionalUnlimitedMaximum tweets to return
onlyVerifiedUsersbooleanOptionalfalseOnly tweets from verified users
onlyTwitterBluebooleanOptionalfalseOnly Twitter Blue subscribers
onlyImagebooleanOptionalfalseOnly tweets with images
onlyVideobooleanOptionalfalseOnly tweets with videos
onlyQuotebooleanOptionalfalseOnly quote tweets
authorstringOptionalFilter to a specific author handle
inReplyTostringOptionalTweets replying to a specific handle
mentioningstringOptionalTweets mentioning a specific handle
geotaggedNearstringOptionalTweets near a location
withinRadiusstringOptionalRadius around geotaggedNear
geocodestringOptionalLat/lng + radius string
placeObjectIdstringOptionalTweets tagged with a place
minimumRetweetsnumberOptionalMinimum retweet count
minimumFavoritesnumberOptionalMinimum like count
minimumRepliesnumberOptionalMinimum reply count
startstringOptionalTweets after this date (YYYY-MM-DD)
endstringOptionalTweets before this date (YYYY-MM-DD)
includeSearchTermsbooleanOptionalfalseAdd the matched search term to each tweet
customMapFunctionstringOptionalJavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Search for hiring-signal tweets in sector
- [ ] Step 2: (Optional) Scrape specific company accounts
- [ ] Step 3: Extract role and team info from tweet text
- [ ] Step 4: Score growth signal strength
- [ ] Step 5: Deliver hiring intelligence report

Step 1: Search Hiring Signals

Recommended — run_actor.js (handles waiting, output, and file saving automatically):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

APIFY_TOKEN must be set in environment or .env file.

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
  "searchTerms": ["we're hiring [SECTOR]", "join our team [SECTOR]", "[ROLE] hiring [SECTOR]"],
  "maxItems": 300
}

REST API fallback:

curl -X POST   "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{
    "searchTerms": ["we are hiring fintech", "join our team SaaS startup", "software engineer hiring"],
    "maxItems": 300
  }'

Step 2: Extract Role Signals from Tweet Text

role_mentioned = extract noun phrases after "hiring a/an", "looking for a/an", "seeking a"
team_mentioned = extract from: "engineering team", "sales team", "marketing", "product team"
urgency = "immediately", "ASAP", "urgent" → HIGH; "growing team" → MEDIUM; general → LOW

Step 3: Growth Signal Score

hiring_signal_score = (is_confirmed_company_account ? 1 : 0.5) * 0.30
                    + (role_is_specific ? 1 : 0.5) * 0.25
                    + (post_is_recent: ≤7 days = 1, 8-14 = 0.7, 15-30 = 0.4) * 0.25
                    + (link_to_job_page ? 1 : 0) * 0.20

Growth tier: Multiple hiring tweets in 30 days = HIGH_GROWTH; 1-2 = STEADY_HIRE; no link = SIGNAL_ONLY

Step 4: Edge Cases

  • Retweets from employee accounts: If a company employee retweets a job post, keep — it's still a valid signal; note it's not the company's official account
  • Job boards posting on behalf of company: Filter out accounts named "JobsAt[Company]", staffing agencies, or accounts posting > 10 hiring tweets/day (aggregators)
  • Role extraction fails: Note the tweet verbatim and mark role = "unspecified" — still a growth signal
  • Same company posts 5 roles: Deduplicate by author.username; count unique companies, not unique tweets

Output Format

# Hiring Signal Intelligence: [SECTOR/ROLE]
Tweets analyzed: [N] | Companies with hiring signals: [N] | Date: [DATE]

## High-Growth Companies (Multiple Roles Posted)
| Company | @Handle | Roles Mentioned | Teams | Posts | Link to Jobs | Score |
|---------|---------|----------------|-------|-------|-------------|-------|
| [name] | @[handle] | [role list] | [eng/mktg] | [N] | [Yes/No] | [0.XX] |

## Single Hire Signals
| Company | @Handle | Role | Team | Tweet Date | Job Link |
|---------|---------|------|------|-----------|---------|

## Role Distribution Across All Companies
| Role Category | # Companies Hiring | Urgency |
|--------------|-------------------|---------|
| Engineering | [N] | [High/Med] |
| Marketing | [N] | |
| Sales | [N] | |

Troubleshooting

Results dominated by job boards: Add negative terms to search: -jobs -jobboard -staffing -recruiting Sector too broad: Narrow with a sub-sector or specific stage: "Series A fintech" instead of "fintech". Job links are broken/expired: Hiring tweets are posted in real-time; check within 48h for best link validity.

Top skills in this category