All work
Automation Lead generation 2026 private

Upwork Screening Pipeline

Scrapes the job board, throws away the ones that were never a fit, and drafts proposals only for the rest.

Pipeline diagram: scrape, then one batched screening call, then draft proposals for what survives

The problem

Applying on a freelance job board is a volume game with a nasty shape: the writing is the expensive part, and most of the jobs you write for were never going to be a fit.

Filtering by keyword does not work — the postings that match your keywords are the ones everyone else has already applied to, and the ones worth having rarely describe themselves the way you would.

What I built

A three-stage pipeline. Scrape the board into a batch. Run one batched judgement pass over roughly forty jobs at a time that marks each one apply, maybe or skip against a written target profile. Then generate proposals for what survives.

The ordering is the whole design. Screening happens before generation, so an off-target job costs a fraction of a cent instead of a full proposal. One batched call handles forty jobs; forty individual calls would cost more and read no better.

Every stage is a deterministic script with the judgement isolated to one step — the scraper does not think, the generator does not decide, and the screening pass is the only place a model gets an opinion.

Python Apify Playwright Claude API Batched screening

The shape of it

What changed

Cost per applied-to job fell by roughly the proportion of jobs that get screened out, which is most of them. The more useful outcome was that the proposals got better, because they were only ever written for jobs that actually fit.

Stages
3
Jobs per screening call
~40
Then write
Skip first

Next project

World Cup Sweepstake App

A 100+ player sweepstake that would have been a spreadsheet nightmare, run as a live app instead.

The easiest next step

Want something like this for your workflow?

Tell me what you are doing by hand right now. That is genuinely enough to start from.