Quick overview
This workflow runs on a schedule (or manually) to scrape target companies’ career pages via Apify, identify roles matching your keywords, generate a compliant outreach first line with OpenAI, then store results in Google Sheets and post a Slack digest when new matching roles appear.
How it works
- Runs every Monday at 8am (or when started manually) and loads your target company URLs, role keywords, and offer context.
- Validates the inputs and reads prior results from a Google Sheets tab to detect previously seen roles.
- Uses an Apify actor to find each company’s careers/ATS page and collect job listings that match the configured keywords.
- Groups jobs by company, compares them to the saved role IDs, and skips AI generation when nothing has changed.
- For companies with matches, calls an OpenAI chat model to decide whether the roles are relevant and to draft a single outreach first line citing specific job posts.
- Rejects drafts that include unsupported claims, numbers, links, or missing citations, then writes one upserted row per company back to Google Sheets.
- Builds a Slack digest for companies with a usable first line and at least one newly detected matching role, and posts it to the configured channel.
Setup
- Add credentials for Apify, OpenAI, Google Sheets OAuth2, and Slack.
- Create a Google Sheet with a tab named “Hiring leads”, then set the spreadsheet in both Google Sheets steps and ensure updates match on the companyDomain column.
- Update the target Slack channel in the Slack step (for example, #hiring-signals) and ensure the bot/app can post there.
- In the targets configuration, set your company URL list, roleKeywords, whatYouOffer, and any optional filters like location, postedWithinDays, maxJobsPerCompany, and maxChargeUsd.