Quick overview
This workflow runs daily, captures fully rendered careers pages with Snapshot Site, uses an OpenAI chat model to extract structured job-offer fields, and writes the results to Google Sheets while logging any extraction errors to a separate sheet.
How it works
- Runs every day at 9:00 AM on a schedule.
- Reads a list of careers-page URLs from the “Job Sources” tab in Google Sheets and processes them one at a time.
- Uses Snapshot Site to fetch the fully rendered HTML for each URL and routes any API errors to an error log flow.
- Cleans the captured HTML by removing scripts/styles and trimming the content before sending it to OpenAI for extraction.
- Uses an OpenAI chat model to extract a structured array of job offers (title, company, location, salary, application URL, and more) from the cleaned HTML.
- Splits the extracted jobs into individual items and appends or updates rows in the “Job Offers” tab in Google Sheets, deduplicating by applicationUrl.
- Appends any extraction errors (URL, message, timestamp) to the “Extraction Errors” tab in Google Sheets and continues processing the remaining sources.
Setup
- Install the community node
n8n-nodes-snapshot-site and add Snapshot Site credentials.
- Add Google Sheets credentials and set the target spreadsheet in the read/write Google Sheets nodes.
- Add an OpenAI (or compatible) chat model credential for the Information Extractor’s language model.
- Create three Google Sheets tabs named “Job Sources”, “Job Offers”, and “Extraction Errors”, and ensure the “Job Sources” tab includes a
url column.
- Ensure the “Job Offers” tab has an
applicationUrl column for deduplication (and any other columns you want to store), then adjust the schedule time if needed.