John Sabo
← All work

Freelance proposal pipeline

Upwork Proposal Pipeline Active daily

internal pipeline

An active pipeline for freelancing work. It searches Upwork, gates jobs on money and client quality, ranks the survivors by expected value per connect, then drafts and submits.

What it is

Freelance platforms reward speed, which is exactly why most proposals are bad. This pipeline goes the other way: it reads everything, keeps almost nothing and spends the platform's limited connects only on jobs that pass a client-quality gate and rank high on expected value.

Proposals get drafted against the actual posting and submitted through the platform's own flows. A Postgres ledger tracks every API call against rate limits. A circuit breaker backs off the moment the platform signals a restriction.

The funnel: everything is read, almost everything is dropped
The funnel: everything is read, almost everything is dropped
The funnel: everything is read, almost everything is dropped

Under the hood

What was hard

Staying inside the platform's tolerance. The pipeline does everything a careful freelancer does, just faster. The design that keeps it welcome is boring on purpose: paced calls, a ledger, an honest backoff. The strategy pivot came from the same discipline: fewer, better proposals beat more, worse ones. The funnel data said so.

Daily
active
EV
ranked per connect
1
ledger for limits

Stack

Python Playwright PostgreSQL MCP

Working on something like this?

One sentence about the problem is enough.

john@johnsabo.org