Upwork Screening Pipeline
Scrapes the job board, throws away the ones that were never a fit, and drafts proposals only for the rest.
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.
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.