🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Indeed to Google Sheets, job fit scored with OpenAI

Lisa Granqvist Partner Workflow Automation Expert

You find a promising role on Indeed, open it, skim it, and realize it’s not even close. Then you do it again. And again. After a week, you’ve “job searched” for hours but barely moved forward.

Job seekers feel it first, but career coaches supporting clients and recruiting assistants doing early screening run into the same wall. This Indeed job scoring automation takes the raw feed and turns it into a simple YES/NO shortlist you can act on.

You’ll see how the workflow pulls listings into Google Sheets, waits for Bright Data to finish the scrape, then has OpenAI score each job for fit based on your prompt.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Indeed to Google Sheets, job fit scored with OpenAI

The Problem: Indeed Job Search Turns Into Endless Sorting

Indeed is great at volume. That’s also the problem. You search “Growth Marketer” in a city, set “Last 24 hours,” and still get a flood of roles that look relevant until you read the details: wrong seniority, missing key skills, onsite when you need remote, or a totally different function hiding behind a familiar title. The real cost isn’t just time. It’s the mental drain of making dozens of tiny decisions, plus the opportunities you miss because you’re buried in tabs instead of applying.

It adds up fast. Here’s where it breaks down in real life.

  • You end up rereading the same requirements across listings because nothing is standardized on the page.
  • Copying titles, links, and companies into a tracker is slow, and mistakes creep in when you’re tired.
  • “Quick scans” turn into 30-minute spirals, then you have nothing concrete to show for it.
  • Even when you find good roles, you’re not confident they’re the best use of your application time.

The Solution: Scrape, Track, and Score Listings Automatically

This workflow starts with a simple form where you enter what you actually want: job location (city or region), a keyword (role or skills), and a two-letter country code. n8n sends that request to Bright Data to scrape Indeed based on your filters, then waits while Bright Data generates a snapshot. Once results are ready, the workflow pulls the job data back as JSON, appends the listings into a Google Sheets template, and processes each row through an OpenAI-powered fit check. The final output is a sheet where every job is labeled with a clear “YES” or “NO” based on your criteria, so you spend your energy on applications and outreach instead of sorting.

The workflow kicks off from the form, submits a Bright Data scrape, then loops until the snapshot is complete. After that, it writes the jobs into Google Sheets and runs each one through an LLM prompt that decides if the role matches what you’re looking for.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you scan about 40 new Indeed listings per day for “Growth Marketer” in one city. Manually, even a fast skim plus copying the good ones into a tracker can take about 2 minutes per listing, which is roughly 80 minutes a day. With this workflow, you spend maybe 2 minutes filling the form, wait while Bright Data generates the snapshot, and then you review the Google Sheet in about 10 minutes because each role already has a YES/NO fit label. That’s around an hour back on a normal day.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Bright Data to scrape Indeed listings via dataset snapshots.
  • Google Sheets to store, filter, and track your jobs.
  • OpenAI API key (get it from your OpenAI API dashboard).

Skill level: Intermediate. You’ll connect accounts, add API keys, and adjust a prompt to match your background.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Form intake trigger. You submit the role keyword, location, and country code. That single form replaces a bunch of manual search fiddling.

Snapshot request and waiting. n8n sends the request to Bright Data, then pauses and checks snapshot progress until the scrape is done. This is the part people usually hate doing by hand.

Sheet writing and row-by-row evaluation. The workflow retrieves the JSON results, appends them into Google Sheets, then splits the data so each job can be analyzed individually. OpenAI reads the job details and applies your criteria to output a simple YES or NO.

Fit status updated in your tracker. The sheet gets updated with the decision, which means you can filter the view to “YES” and move straight into action.

You can easily modify the scoring prompt to match your role level or must-have skills based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Trigger

Set up the intake form that starts the workflow and collects search parameters.

  1. Add and open Form Intake Trigger.
  2. Set Form Title to Linkedin High Intent Prospects And Job Post Hunt.
  3. Set Form Description to This form lets you customize your job search / prospecting by choosing: Location (city or region) Job title or keywords Country code .
  4. Add required fields labeled Job Location, Keyword, and Country (2 letters) with example placeholders like example: new york, example: CMO, AI architect, and example: US,UK,IL.

Step 2: Connect Bright Data Requests

Trigger the Bright Data dataset, poll for completion, and retrieve results based on the snapshot status.

  1. Open Submit Bright Data Request and set URL to https://api.brightdata.com/datasets/v3/trigger with Method POST and Specify Body set to json.
  2. Set JSON Body to =[ { "country": "{{ $json['Country (2 letters)'] }}", "domain": "indeed.com", "keyword_search": "{{ $json.Keyword }}", "location": "{{ $json['Job Location'] }}", "date_posted": "Last 24 hours", "posted_by": "" } ].
  3. In Submit Bright Data Request, set query parameters: dataset_id to [YOUR_ID], include_errors to true, type to discover_new, discover_by to keyword, and uncompressed_webhook to true.
  4. Add a header in Submit Bright Data Request: Authorization = Bearer [CONFIGURE_YOUR_TOKEN].
  5. Configure Pause for Snapshot Poll with Unit minutes and Amount 1.
  6. Set Check Snapshot Progress URL to =https://api.brightdata.com/datasets/v3/progress/{{ $('Submit Bright Data Request').item.json.snapshot_id }} and add the same Authorization header.
  7. In Snapshot Status Branch, set the condition to Left Value ={{ $json.status }} equals Right Value running.
  8. Configure Retrieve Snapshot Results with URL =https://api.brightdata.com/datasets/v3/snapshot/{{ $('Submit Bright Data Request').item.json.snapshot_id }}, set query format to json, and add the same Authorization header.

⚠️ Common Pitfall: Replace [YOUR_ID] and [CONFIGURE_YOUR_TOKEN] in the Bright Data nodes; the workflow will fail without a valid dataset ID and token.

Step 3: Set Up Processing and AI Evaluation

Split incoming job fields and evaluate fit using an LLM.

  1. In Split Job Fields, set Field to Split Out to company_name, job_title, description_text.
  2. Open LLM Fit Evaluation and set Prompt Type to define.
  3. Set Text in LLM Fit Evaluation to =Read the following job post: Company Name {{ $json.company_name }}, job Title: {{ $json.job_title }}, And job description {{ $json.description_text }}, and tell me if you think I'm a good fit. Answer only YES or NO. I'm looking for roles in Pfizer.
  4. Ensure OpenAI Chat Engine is connected to LLM Fit Evaluation as the language model and set Model to gpt-4o-mini.
  5. Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine (LLM credentials are added to the parent node, not LLM Fit Evaluation).

Step 4: Configure Output to Google Sheets

Write job records to the sheet and update the fit decision.

  1. Open Append Job Records Sheet and set Operation to append.
  2. Select the target document in Document ID as [YOUR_ID] and Sheet Name as gid=0 (input).
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Job Records Sheet.
  4. Open Update Fit Column and set Operation to update with Matching Columns set to company_name.
  5. In Update Fit Column set column mappings: AM I a Fit? = ={{ $json.text }} and company_name = ={{ $('Split Job Fields').item.json.company_name }}.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Fit Column.

Tip: The flow is Retrieve Snapshot ResultsAppend Job Records SheetSplit Job FieldsLLM Fit EvaluationUpdate Fit Column, so confirm your sheet has a company_name column to match updates correctly.

Step 5: Test and Activate Your Workflow

Validate the end-to-end flow and then enable the workflow for production use.

  1. Click Execute Workflow and submit the form from Form Intake Trigger with sample values.
  2. Confirm that Submit Bright Data Request returns a snapshot_id and that Snapshot Status Branch loops through Pause for Snapshot Poll while status is running.
  3. Verify that Retrieve Snapshot Results returns job data and Append Job Records Sheet appends rows to the spreadsheet.
  4. Check that LLM Fit Evaluation produces YES or NO and Update Fit Column updates the AM I a Fit? column.
  5. When everything works as expected, toggle the workflow Active to run it in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Bright Data credentials can expire or need specific permissions. If things break, check your Bright Data API token and dataset access in the Bright Data dashboard first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Indeed job scoring automation?

About 30–60 minutes once your Bright Data dataset and keys are ready.

Do I need coding skills to automate Indeed job scoring?

No. You’ll paste in API keys and adjust a few fields in n8n.

Is n8n free to use for this Indeed job scoring workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs (often just a few dollars a month for personal use) and Bright Data scraping costs based on how much you pull.

Where can I host n8n to run this Indeed job scoring automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Indeed job scoring automation for “only remote roles”?

Yes, but do it in two places for best results. First, tighten your Bright Data inputs (for example, location choices and “Last 24 hours” freshness) so you scrape fewer irrelevant posts. Then adjust the LLM Fit Evaluation prompt so “remote only” is a hard requirement and onsite/hybrid gets an automatic NO. You can also add extra columns in Google Sheets (like “must-have skills”) and reference them in the prompt so the scoring reflects your real deal-breakers.

Why is my Bright Data connection failing in this workflow?

Usually it’s an invalid or expired API key, or the dataset/snapshot endpoint doesn’t match your Bright Data setup. Regenerate the token in Bright Data, update the credential in n8n, and re-run the form submission. If it works sometimes and fails other times, rate limits and snapshot timing are common culprits, so increasing the wait and reducing scrape size helps.

How many job listings can this Indeed job scoring automation handle?

Practically, it depends on your n8n plan and your Bright Data/OpenAI budgets, but hundreds of listings per run is normal if you keep filters tight.

Is this Indeed job scoring automation better than using Zapier or Make?

Often, yes, because this flow needs looping (polling the snapshot), branching (only proceed when it’s ready), and row-by-row processing, which is where Zapier and Make can get expensive or awkward. n8n also gives you the self-hosted option, so executions aren’t metered the same way. If you only want “new listing → add row to sheet,” Zapier is fine. If you want a real shortlist with consistent scoring logic, n8n is the more comfortable fit. Talk to an automation expert if you want help choosing.

Once this is running, your job search stops being a browser endurance test. The workflow sorts the noise, and you get to focus on the roles that actually deserve your time.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal