Score new Upwork job listings and draft proposals automatically

New Upwork jobs are automatically scored for fit and quality, with a draft proposal ready for the best ones.

How the work actually flows

It branches. Exactly one path is taken; runs once per each job listing.

Pattern: Exclusive Choice (4) · Simple Merge (5) · Multiple Instances without Synchronization (12)

flowchart TD trig(["scheduled check for new listings"]):::trigtime s0["filter out duplicate jobs"]:::task s1[["score each job for fit"]]:::mi s2[("log results and send summary")]:::store trig --> s0 s0 -->|"one per each job listing"| s1 gx{"× does job score well enough"}:::gate s1 --> gx p00["draft proposal"]:::task gx -->|"high score"| p00 p10["no action"]:::task gx -->|"low score"| p10 jn{"○ before logging results"}:::gate p00 --> jn p10 --> jn jn --> s2 out[/"scored jobs with draft proposals"/]:::out pay{{"less time spent screening listings"}}:::pay s2 --> out out --> pay classDef task fill:#e7f6fe,stroke:#34b8f0,color:#2c2a29 classDef svc fill:#f6f8fa,stroke:#7c8795,color:#2c2a29 classDef mi fill:#e7f6fe,stroke:#0079a8,color:#2c2a29,stroke-width:2px classDef human fill:#fff,stroke:#0079a8,color:#0079a8 classDef store fill:#f6f8fa,stroke:#0079a8,color:#2c2a29 classDef trig fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold classDef trigtime fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold classDef trigdata fill:#8ad4f5,stroke:#0079a8,color:#06314c,font-weight:bold classDef gate fill:#fff,stroke:#e8a23d,color:#6b4708,font-weight:bold classDef out fill:#1f9d6b,stroke:#167a53,color:#fff,font-weight:bold classDef pay fill:#06314c,stroke:#021f33,color:#fff
Starts itA stepRuns once per itemA record or sheetOne path onlyPaths rejoinResultPayoff
Build size
Advanced

A larger build with multiple systems, AI reasoning, and custom rules.

Business functions
Messaging & NotificationsSpreadsheet & Database Ops
Connects
ApifyOpenAIGoogle SheetsTelegram

The problem it solves

Scrolling through Upwork listings looking for good-fit jobs eats up hours you could spend on billable work. Many postings are a poor match, low budget, or from unreliable clients, but you will not know until you read each one closely. Writing a fresh proposal for every promising listing takes even more time.

Who it fits

Freelancers, consultants, and agencies who actively bid on Upwork jobs.

How it works

  1. New Upwork job listings are checked on a regular schedule
  2. Duplicate jobs already reviewed are filtered out
  3. AI scores each job on fit, client quality, and budget
  4. A draft proposal is written for jobs that score well
  5. Results are logged to Google Sheets with a summary sent to Telegram
What you get

Proposal drafts ready for a final read before sending

New Upwork jobs get scored for fit and quality automatically, with a draft proposal written for the best ones and a summary sent to Telegram.

What you get

A scored list of job opportunities, a ready-to-edit proposal for top matches, and a Telegram summary.

What you need

An Apify account, an OpenAI API key, a Google Sheets account, and a Telegram account.

We can build this. But should you?

The hard question is not how to build it. It is whether this is the right thing to build first.

That is what a Fractional Chief AI Officer figures out with you, before anyone writes a line of code.

Let's Talk Strategy

Related automations

Back to the AI Playbook