DEV Community

Cover image for The first OpenClaw workflow I’d steal is a job agent that checks listings 2x a week and never auto-applies
Lars Winstand
Lars Winstand

Posted on • Originally published at standardcompute.com

The first OpenClaw workflow I’d steal is a job agent that checks listings 2x a week and never auto-applies

I’ve seen a lot of agent demos that look incredible right up until you ask one boring question:

“Would I trust this with something that actually matters?”

Usually the answer is no.

An agent ordering lunch is cute. An agent booking a flight is fine. An agent “running your life” is mostly a benchmark for how quickly a demo can drift into nonsense.

But while digging through OpenClaw use cases, I found one workflow that felt immediately real.

A user on r/openclaw shared a supervised job-search agent setup that got 103 upvotes because it solved an actual problem without pretending AI should do the whole thing for you:

  • run job search twice a week
  • find fresh listings
  • rank the top 5 matches
  • tailor the resume for each role
  • draft cover letters
  • keep the final submit step manual

That last bullet is the whole point.

The best job-search agent is not an auto-apply cannon.

It’s a selective pipeline that watches the market, does the repetitive work, and hands a human a shortlist worth reviewing.

The Reddit setup was boring in the best way

The original poster said they were a former data scientist, out of work for about 1 year after 10 years in the field. They ran OpenClaw on a Mac mini, gave it:

  • a resume
  • a GitHub profile
  • a markdown file describing the roles they actually wanted

Then OpenClaw searched twice a week, picked the top 5 matches, tailored the resume, and drafted boilerplate cover letters.

And crucially: it did not auto-submit.

That’s what made it believable.

A lot of job automation optimizes for volume. More tabs. More applications. More browser sessions. More “look how autonomous this is.”

That sounds good until you’ve been on the hiring side.

You can smell spray-and-pray applications instantly.

This OpenClaw workflow did the opposite:

  • narrow the target
  • rank by fit
  • rewrite only for plausible roles
  • keep a human in the loop before anything irreversible happens

That’s not less sophisticated.

That’s more sophisticated.

The real advantage is recency, not autonomy

The most useful part of an always-on job agent is not that it can click buttons.

It’s that it can notice good roles early.

That matters more than people admit.

If you’ve job hunted seriously, you know the first few days after a posting goes live are often the best window. The Reddit poster said the eventual role was found 1 day after it was posted, and the process led to an offer in about 1 month.

That tracks.

Humans are bad at sustained vigilance.

We’re good at:

  • interviews
  • judgment
  • deciding whether a role feels right

We’re bad at:

  • checking 14 job sources every morning
  • staying consistent for 6 weeks
  • rewriting the same materials over and over without losing our minds

That’s exactly where an agent helps.

Why job search is a great agent use case

This is one of the cleanest real-world agent workflows because the task is:

  • repetitive
  • time-sensitive
  • open-ended
  • mostly text-based
  • easy to supervise

A good job-search agent can:

  • monitor target boards on a schedule
  • score new roles against your criteria
  • summarize why a role is or isn’t a fit
  • tailor resume bullets to the job description
  • draft a first-pass cover letter
  • produce a review queue instead of a mess

That’s not sci-fi.

That’s admin work.

And unlike a lot of flashy browser-agent demos, this doesn’t break the second one CSS selector changes.

You probably don’t need browser automation for the most useful part

This was the part I think more developers should pay attention to.

A practical job-search agent does not need to start with LinkedIn scraping and headless browser gymnastics.

A lot of the best value comes earlier in the pipeline: discovery, filtering, ranking, and drafting.

For that, structured APIs beat brittle UI automation.

Start with Greenhouse and Lever

If I were building this, I’d start with Greenhouse and Lever immediately.

Greenhouse Job Board API

Greenhouse exposes public listings as JSON and supports applications through an official endpoint.

Example:

GET https://boards-api.greenhouse.io/v1/boards/{board_token}/jobs?content=true
POST https://boards-api.greenhouse.io/v1/boards/{board_token}/jobs/{id}
Enter fullscreen mode Exit fullscreen mode

Lever Postings API

Lever also exposes published jobs through a REST API and supports programmatic workflows around listings.

That means your architecture can look more like a normal data pipeline and less like a flaky browser bot.

Option What it’s good at
Greenhouse Job Board API Public JSON listings, official application endpoint, stable source for monitoring and draft prep
Lever Postings API Published job listings via REST API, structured discovery, realistic source for selective application workflows
Headless browser auto-apply on LinkedIn or Indeed Wider theoretical coverage, but brittle selectors, CAPTCHA issues, UI churn, and much higher risk

That’s why I think the winning version of this workflow starts with Greenhouse and Lever, not Selenium heroics.

A simple architecture I’d actually build

Here’s the version I’d trust enough to run for weeks.

scheduler
  -> fetch job listings from Greenhouse + Lever
  -> normalize postings
  -> dedupe by company/title/url
  -> score against candidate profile
  -> shortlist top N
  -> generate tailored resume bullets
  -> draft cover letter
  -> send review packet to human
  -> human decides whether to apply
Enter fullscreen mode Exit fullscreen mode

If you want to prototype this fast, the stack is pretty boring:

  • OpenClaw for the agent workflow
  • cron or GitHub Actions for scheduling
  • Python or TypeScript for fetch/normalize/scoring glue
  • SQLite or Postgres for dedupe and history
  • Claude, GPT-5, or both for ranking and drafting
  • email, Slack, or Telegram for review delivery

That’s a real system. Not a conference demo.

Example: fetch Greenhouse jobs in Python

A basic collector is trivial.

import requests

BOARD_TOKEN = "your-company"
url = f"https://boards-api.greenhouse.io/v1/boards/{BOARD_TOKEN}/jobs?content=true"

resp = requests.get(url, timeout=30)
resp.raise_for_status()

jobs = resp.json().get("jobs", [])

for job in jobs:
    print({
        "id": job.get("id"),
        "title": job.get("title"),
        "location": (job.get("location") or {}).get("name"),
        "updated_at": job.get("updated_at"),
        "absolute_url": job.get("absolute_url")
    })
Enter fullscreen mode Exit fullscreen mode

Normalize that output into your own schema and score against a candidate profile.

Example candidate profile as markdown

This is the part most people skip, and it’s why their agent outputs garbage.

Give the system a constrained profile.

# Target Role Profile

## Role targets
- Senior Data Scientist
- Applied ML Engineer
- AI Engineer

## Strong preferences
- Remote in US
- Series B+ or profitable company
- Product teams shipping LLM features
- Python-heavy stack

## Hard no
- Onsite only
- Contract-only roles
- Generic "AI evangelist" jobs
- Roles requiring active security clearance

## Salary floor
- $180k base

## Signals of strong fit
- Production ML systems
- Evaluation pipelines
- Agents or workflow automation
- Strong writing / stakeholder communication
Enter fullscreen mode Exit fullscreen mode

That one file will improve results more than most prompt tweaking.

Why I would not fully automate final apply

Because this is where “autonomous” becomes “reckless.”

The original poster made the right call by keeping final submission manual.

I would do the same for three reasons.

1. Job applications are social signals

A resume can be technically aligned and still feel wrong.

A cover letter can mention every keyword and still read like AI sludge.

This is where humans catch:

  • weird tone
  • overfitting to keywords
  • incorrect claims
  • missing context about why the company actually matters

2. Browser auto-apply is brittle

If your workflow depends on clicking through dynamic UI flows across LinkedIn, Indeed, and random ATS pages, you are signing up for:

  • broken selectors
  • CAPTCHA fights
  • anti-bot systems
  • account restrictions
  • constant maintenance

That can still be worth it in some cases, but it should not be your starting point.

3. The final click is the cheapest human step

This is the key tradeoff.

The expensive part is not clicking “Submit.”

The expensive part is:

  • finding relevant jobs consistently
  • reading them
  • comparing them to your background
  • rewriting resume bullets
  • drafting customized materials

Let the agent do that.

Keep the last irreversible action human.

The hidden villain is token anxiety

This is where a lot of agent workflows quietly stop being practical.

A supervised job-search agent sounds cheap until you count the actual loop:

  1. read new job descriptions
  2. compare each role against resume, GitHub, and role criteria
  3. score and rank candidates
  4. rewrite resume bullets for top matches
  5. draft cover letters
  6. repeat for weeks or months

That burns tokens fast.

Especially if you use frontier models for writing quality.

And this is where per-token pricing starts changing behavior in bad ways.

People don’t just spend less.

They make the workflow worse.

They shorten prompts.
They skip useful passes.
They stop re-running ranking.
They avoid deeper tailoring.
They under-automate the exact tasks that matter.

That’s token anxiety in practice.

Not just “my bill might be high.”

More like: “I know this extra pass would improve output, but I’m going to avoid it because I can feel the meter running.”

For agentic workflows, that’s poison.

This is why flat-rate compute makes more sense for agent workflows

Job search is an unusually clear example of why predictable pricing matters.

You don’t know if a search lasts:

  • 2 weeks
  • 2 months
  • 4 months

And you don’t know how many jobs need evaluation before one is worth pursuing.

That uncertainty is exactly why per-token billing feels bad for long-running automations.

If you’re building agents that need to stay on, re-check sources, rewrite outputs, and iterate without someone watching a token dashboard, flat monthly pricing is just a better fit.

That’s the appeal of Standard Compute.

It’s a drop-in OpenAI API replacement with unlimited AI compute at a predictable monthly price, so you can run agent workflows without worrying that every extra ranking pass or resume rewrite is quietly inflating the bill.

For this kind of use case, that matters a lot more than people think.

Because the best version of the workflow is not the cheapest-looking prompt chain.

It’s the one you’ll actually let run.

Which models I’d use for each step

I would not use one model for everything.

That’s the wrong optimization.

Use the right model for the right stage.

My practical split

  • Claude Sonnet for extraction, ranking, summarization, and requirement matching
  • GPT-5 for structured scoring and rubric-based evaluation
  • Claude Opus for final resume tailoring and cover-letter drafting when tone matters most
  • local Llama or Qwen variants for private experiments or cheap pre-filtering

The expensive model should only touch the shortlist.

Don’t spend premium model budget on jobs that fail the first filter.

That’s true whether you’re paying per token or routing across models behind a unified API.

A concrete scoring pipeline

If I were implementing this, I’d separate filtering from writing.

Step 1: cheap scoring pass

{
  "title_match": 0.9,
  "location_match": 1.0,
  "salary_match": 0.7,
  "domain_match": 0.8,
  "skills_match": 0.85,
  "overall_fit": 0.84,
  "reasons": [
    "Strong Python + ML systems overlap",
    "Remote role matches preference",
    "LLM product experience is relevant"
  ],
  "risks": [
    "Salary not explicitly listed",
    "Role leans more platform than research"
  ]
}
Enter fullscreen mode Exit fullscreen mode

Step 2: shortlist only top 5 or top 10

Step 3: expensive writing pass

Generate:

  • tailored resume bullets
  • cover letter draft
  • quick rationale for why this role made the cut

That split keeps the workflow sane.

Example cron setup for a twice-weekly run

If the original Reddit workflow ran twice a week, that’s a good default.

# Every Monday and Thursday at 8:00 AM
0 8 * * 1,4 /usr/bin/python3 /opt/job-agent/run.py >> /var/log/job-agent.log 2>&1
Enter fullscreen mode Exit fullscreen mode

That’s enough to catch fresh roles without creating noise fatigue.

If the market is moving fast, run daily.

If your criteria are narrow, twice a week is probably ideal.

The version I’d copy tomorrow

If I were building this for myself, I’d do exactly this:

  1. create a markdown candidate profile with real constraints
  2. ingest jobs from Greenhouse and Lever first
  3. schedule discovery daily or twice weekly
  4. dedupe and store posting history
  5. score all new jobs with a cheaper model
  6. shortlist top 5 or top 10
  7. use a stronger model for resume tailoring and cover-letter drafts
  8. send everything to a human review queue
  9. keep final submission manual

That is not a compromise.

That is the product.

The point is not to remove the human.

The point is to remove:

  • dead time
  • missed postings
  • repetitive rewriting
  • the constant background stress of checking job boards manually

The OpenClaw story worked because it respected that boundary.

It used the agent for what agents are actually good at:

  • staying awake
  • reading too much
  • filtering chaos into a shortlist

Everything after that still belonged to a person.

And honestly, that’s the first OpenClaw workflow I’ve seen that I’d steal immediately.

If you’re building agent workflows like this, the next thing I’d fix is pricing. Once an automation is useful, it tends to run more often, touch more context, and do more rewriting than you expected. That’s where a flat-rate API setup becomes less of a nice-to-have and more of an architectural decision.

Top comments (0)