Score new Upwork job posts and draft cover letters with AI

Scans new Upwork job posts, scores each one for fit, and writes a personalized cover letter for the best matches.

How the work actually flows

It branches. Exactly one path is taken; runs once per one per new job post.

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

flowchart TD trig(["scheduled job search pull"]):::trigtime s0[["pull new job posts"]]:::mi s1["filter out seen jobs"]:::task s2["score job fit with AI"]:::task trig --> s0 s0 --> s1 s1 --> s2 gx{"× job scores well enough"}:::gate s2 --> gx p00["draft personalized cover letter"]:::task gx -->|"strong fit"| p00 p10["skip cover letter"]:::task gx -->|"weak fit"| p10 jn{"○ log to sheet"}:::gate p00 --> jn p10 --> jn jn --> out out[/"scored leads with cover letters logged"/]:::out pay{{"focuses effort on strong-fit jobs only"}}:::pay 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 itemOne path onlyPaths rejoinResultPayoff
Build size
Advanced

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

Business functions
Spreadsheet & Database OpsFile & Cloud Storage
Connects
ClaudeGoogle SheetsUpwork

The problem it solves

Scrolling through Upwork listings every day looking for jobs that actually fit your skills eats up time you'd rather spend working. By the time you write a thoughtful cover letter for a promising post, someone else has already applied.

Who it fits

Freelancers and agencies who bid on Upwork jobs regularly and want to focus only on strong-fit opportunities.

How it works

  1. New job posts are pulled in from your chosen Upwork search feeds on a regular schedule
  2. Jobs you've already seen are filtered out using your Google Sheets tracker
  3. AI reviews each new job and scores how well it fits your skills
  4. For the best-scoring jobs, AI drafts a personalized cover letter
  5. Every scored job, along with its cover letter and application link, is logged to Google Sheets
What you get

Strong-fit Upwork jobs with a cover letter ready

Get new Upwork jobs scored for fit and a personalized cover letter drafted for your best matches, logged neatly in Sheets.

What you get

An updated Google Sheet with scored job leads and ready-to-send cover letters for the strongest matches.

What you need

An Anthropic Claude API key and a Google Sheets 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