Skip to main content

Hiring Signals — scrape, review, and export leads

Goal: Run the Hiring Signals scraper to find companies actively hiring for roles that are a strong fit for Skilladder assessments, review and tier the results, and export or sync them to Google Sheets for the team's matching workflow.

Who can do this: Platform admins and Directory admins.


Before you start

  • The scraper uses Claude AI with web search. Each run consumes a small amount of API quota.
  • Google Sheet sync requires that the OAuth credentials are configured in the environment. If you see a sync error, contact the Skilladder engineering team.
  • The deduplication ledger prevents any job link from appearing twice across runs. If you need a lead to resurface, remove it from the Seen Leads tab first.

Tabs at a glance

TabWhat it shows
RunsHistory of all scrape runs with status, lead count, and sheet sync state
LeadsAll scraped leads across runs, filterable by tier, recency, and job family
Seen LeadsDeduplication ledger — every JD link the scraper has ever seen
SourcesJob board configuration — add, edit, pause, or delete board sources

Trigger a run

  1. Go to Admin → Hiring Signals.

  2. Click + New Run in the top-right corner.

  3. Choose a run mode:

    Scheduled (today's families) Runs the same four job families that the automated daily job would run for today's day of the week (Monday–Thursday schedule, Africa/Lagos timezone). Use this to manually fire the daily job outside its normal schedule.

    Manual (select families) Pick one or more of the 16 job families yourself. Optionally restrict to specific board sources — leave unselected to use all active sources.

    Paste URLs Paste one or more job description URLs directly (one per line). The scraper will extract lead details from those specific pages rather than performing a broad search.

    Careers page Paste one or more company careers page URLs (e.g. https://flutterwave.com/ng/careers). The scraper will enumerate every open role listed on each page, extract and qualify each lead, and sync results to Google Sheets — exactly like any other run. Use this when you want a full snapshot of all open roles at specific companies.

  4. Click Start run.

  5. A confirmation screen appears. Close the dialog and switch to the Runs tab — the new run will appear at the top with status Running.

info

Runs happen in the background. Scraping typically takes 2–5 minutes for a standard set of four families. Qualification (AI scoring) runs immediately after. Refresh the Runs tab to check progress.


Review a run

  1. In the Runs tab, click View on any completed run.

  2. A side panel opens showing:

    • Run metadata: status, type, families scraped, total leads found, sheet sync state
    • Summary stats: unique companies, BUILD NOW role count, median score
    • Full leads table for that run
  3. Leads in the table show tier badges:

    • Tier 1 (score 16–21) — immediate outreach candidates
    • Tier 2 (score 11–15) — nurture list
    • Tier 3 (score 7–10) — parked for later
  4. Click Scoring legend (top of the panel) to see the D1–D7 rubric that determines each score.

  5. Click any JD ↗ link to open the original job posting.


Download the Signals Lite export

From the run detail panel, click Download Signals Lite XLSX.

The export contains:

  • LEAD_ID — sequential identifier (NG-MATCH-0001, NG-MATCH-0002 …)
  • Company, role, family, industry, seniority, company type
  • Score and tier with colour coding
  • Content angle — a one-sentence signal summary for each lead

A second LEGEND sheet inside the workbook explains every column and scoring dimension.

You can also download a filtered export from the Leads tab: set your filters, then click Export XLSX.


Sync a run to Google Sheets

After a run completes, the scraper automatically attempts to write results to the team's Google Sheet:

  • Hot and Warm leadsDaily Matching tab (inserted above the WEEKLY MATCHING SUMMARY row)
  • Cold leadsArchive tab
  • All leadsSEEN_LEADS tab (also updates the dedup ledger in the app)

If sync failed, the Sheet column in the Runs table will show instead of . Open the run detail and click Sync to Google Sheet to retry.


Review leads across all runs

  1. Click the Leads tab.
  2. Use the dropdowns to filter by:
    • Tier (Tier 1 / Tier 2 / Tier 3)
    • Recency (Hot ≤7 days / Warm 8–21 days / Cold 22–30 days)
    • Family — type any part of a family name to filter
  3. Click any row to open a detail panel on the right showing the full scoring breakdown (D1–D7 pip indicators, content angle, assessment suggestion).
  4. Click Export XLSX to download the filtered set.

Manage the deduplication ledger

The Seen Leads tab lists every JD link the scraper has recorded, preventing duplicates across future runs.

To search: Type a company name or URL fragment in the search box. Results update after a short delay.

To remove an entry (so the scraper can re-surface that lead):

  1. Find the row.
  2. Click Remove on the right.
  3. The entry is deleted immediately. The next run that encounters the same JD link will treat it as new.
caution

Removing an entry does not delete the lead from past runs — it only clears the dedup record. The lead will reappear in the next run that finds it.


Configure job board sources

The Sources tab lists all boards the scraper uses.

ActionHow
Add a new boardClick + Add source, fill in the name, type, base URL (optional), and priority
Pause a boardClick Pause — the board stays configured but is skipped on future runs
Re-activateClick Activate
Edit detailsClick Edit
Delete permanentlyClick Delete (confirmation required)

Priority — lower numbers are tried first. Set fallback sources to a higher priority number and tick Fallback source so they are only used when the primary boards return fewer than 12 leads for a family.

Source type options:

  • Job board — a board like Jobberman or MyJobBag; the scraper uses the search template to form queries
  • Manual URL — a direct JD link, used in URL-paste runs
  • LinkedIn — LinkedIn job search (handled like a board but note LinkedIn blocks aggressive scraping)

Automated daily schedule

The scraper runs automatically Monday through Thursday at a scheduled time (Africa/Lagos timezone). Each day's run covers a different set of four job families:

DayFamilies
MondaySoftware Engineering, Product Management, Data & Analytics, UX & Design
TuesdaySales & Business Development, Marketing & Growth, Customer Success, Finance & Accounting
WednesdayPeople Ops & HR, Legal & Compliance, Ops & Logistics, Project and Programme Management
ThursdayDevOps & Infrastructure, Cybersecurity & InfoSec, QA & Testing, Technical Support

If the automated run fails or needs to be repeated for any day, trigger a Scheduled manual run from the New Run dialog — it will use the same four families for today.


See also