Automated Job-Role Curation System

Automated job role curation across job boards — LinkedIn live; Indeed and direct ATS feeds next. Ingests roles into Airtable, classifies them into target archetypes for placement clients, and surfaces fresh fits to the placement team daily.

Popular

Playbooks

What It Does

This is a job role curation pipeline that pulls live job postings from multiple job boards, classifies them into the three archetypes our placement team targets — Product Management, Strategy, and Business Operations — and surfaces a daily digest of fits. Make.com sits in the middle connecting Apify, Airtable, and Gmail, triggering each stage automatically. The point isn't a scraper. It's curation. The placement team starts every morning with a tagged, filtered list of fresh roles, not a fresh search.

Tech Stack

Tool

Role

Apify

Job board scrapers (LinkedIn Actor live; Indeed, Greenhouse, Lever, Ashby next)

Airtable

Working dataset — Companies, Roles, Search Queries config, Runs Log

Make.com

Automation layer — orchestrates scrape, upsert, classify, digest

IML expressions

Inline classifier embedded in the Make scenario, no separate LLM step

Gmail

Daily digest delivery to the placement team

How It Works

Stage 1: Configurable Search Queries

Each search target lives as a row in Airtable's Search Queries table — keywords, location, time window, count target, schedule, active flag. When the placement team picks up a new client targeting, say, PM roles in DC, a coach adds a config row and the scrape is live in 30 seconds. No code changes needed.

Stage 2: Multi-Source Scraping

Apify pulls jobs from the LinkedIn Jobs Actor on the daily schedule. The Make scenario template is source-agnostic — adding Indeed, Greenhouse, or Lever is a swap of the Actor ID plus field-mapping. The downstream pipeline is identical.

Stage 3: Self-Classifying Ingest

Roles flow into Airtable with archetype and confidence stamped at the moment of ingest. Instead of running a separate LLM scenario per role (slow and expensive), the classification logic is a cascading IML expression embedded in the Airtable Create module. Priority order — business operations checked before operations, strategy before strategist — keeps the noise out.

Stage 4: Daily Digest

A second Make scenario runs every morning, queries Airtable for the past 3 days of roles in target archetypes, sorts by First Seen descending, and sends the top 15 via Gmail to the placement team. Filter on the email module skips quiet days.

Source Coverage

Source

Status

Adapter

LinkedIn Jobs

Live

Apify Actor (hKByXkMQaC5Qt9UMN)

Indeed

Planned

Apify Indeed Scraper — same pipeline, swap Actor ID

Greenhouse

Planned

Direct API per company (board.greenhouse.io/{slug})

Lever

Planned

Direct API per company

Ashby

Planned

Direct API per company

Direct ATS pulls are the highest-leverage next layer — they catch roles before they get cross-posted to LinkedIn or Indeed.

The Classifier

The single move that turned the system from scraper into curation was embedding the classifier into the ingest itself. No second pass, no human triage:

{{if(indexOf(lower(title); "product manager") > -1; "Product Management";
  if(indexOf(lower(title); "corporate development") > -1; "Strategy";
  if(indexOf(lower(title); "business operations") > -1; "Business Ops";
  if(indexOf(lower(title); "strategy") > -1; "Strategy";
  if(indexOf(lower(title); "operations") > -1; "Business Ops";
  "Unclassified")))))}}
{{if(indexOf(lower(title); "product manager") > -1; "Product Management";
  if(indexOf(lower(title); "corporate development") > -1; "Strategy";
  if(indexOf(lower(title); "business operations") > -1; "Business Ops";
  if(indexOf(lower(title); "strategy") > -1; "Strategy";
  if(indexOf(lower(title); "operations") > -1; "Business Ops";
  "Unclassified")))))}}
{{if(indexOf(lower(title); "product manager") > -1; "Product Management";
  if(indexOf(lower(title); "corporate development") > -1; "Strategy";
  if(indexOf(lower(title); "business operations") > -1; "Business Ops";
  if(indexOf(lower(title); "strategy") > -1; "Strategy";
  if(indexOf(lower(title); "operations") > -1; "Business Ops";
  "Unclassified")))))}}

11 cascading keyword checks, priority-ordered. Confidence scores between 0.1 (Unclassified, non-ICP) and 0.95 (clean Corp Dev match). Every role the placement team sees is pre-tagged.

Build Breakdown

Total setup: roughly 6 hours over one afternoon.

Component

Time

Airtable schema (Companies, Roles, Search Queries, Runs Log, Staging)

1 hr

Make scenario: daily scraper, Companies upsert, Roles create

1.5 hr

IML classifier expression and cascade priority order

1 hr

Ad-hoc search support (Search Queries config table)

30 min

Daily Digest scenario (Airtable query + Gmail)

1 hr

Test fires, debugging, backfill of 1,033 historical roles

1 hr

Outcomes

  • 1,033 roles curated across PM / Strategy / Business Ops / Unclassified on day one

  • Daily auto-scrape live, ~100 newly tagged roles every morning

  • Coach-friendly ad-hoc search, ~30 seconds to spin up a new vertical for a new client target

  • Runs Log for full audit trail across every scrape (manual, ad-hoc, scheduled)

Why It Matters

This is foundational infrastructure for the placement side of the business. Every hour saved on role sourcing is an hour the team gets back for client work, hiring-manager outreach, and interview prep — the parts that actually drive placements. The next system on top of this is a client-match layer: for each active client, surface today's roles that fit their target archetype, seniority, comp, and geography. Same Airtable, same data, new view.

All rights reserved © 2026