Get notified of matching Upwork jobs with a proposal drafted

Monitors Upwork for jobs matching your skills and sends you a ready-to-edit AI proposal in Slack for each one.

How the work actually flows

It branches. Exactly one path is taken; runs once per each new matching upwork job.

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

flowchart TD trig(["checks Upwork every minute"]):::trigtime s0[["score job against skills"]]:::mi s1["skip already-seen jobs"]:::task s2["draft tailored AI proposal"]:::task s3["save and notify in Slack"]:::task trig --> s0 s1 --> s2 s2 --> s3 gx{"× does job qualify"}:::gate s0 --> gx p00["drop the job"]:::task gx -->|"weak or seen match"| p00 p10["continue to proposal"]:::task gx -->|"strong new match"| p10 p00 --> s1 p10 --> s1 out[/"proposal ready for qualified jobs"/]:::out pay{{"first-mover advantage on new jobs"}}:::pay s3 --> 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 itemOne path onlyResultPayoff
Build size
Standard

A mid-size build with several tools working together.

Business functions
Messaging & NotificationsSpreadsheet & Database OpsHR & Recruiting
Connects
UpworkOpenAIAirtableSlack

The problem it solves

You need to catch new Upwork jobs fast to beat other freelancers to the punch, but refreshing the feed all day isn't realistic. Then every job you do find still needs its own custom proposal, which eats into the time you could spend on paid work.

Who it fits

A freelancer or agency that wants first-mover advantage on new Upwork job postings without watching the feed all day.

How it works

  1. New Upwork job postings matching your search are checked every minute
  2. Each listing is scored against your skill set, and weak matches are dropped
  3. Jobs you've already seen are automatically skipped
  4. AI writes a tailored proposal referencing the specific job details
  5. The job and proposal are saved to Airtable and sent to you in Slack, ready to review and submit
What you get

Proposals ready to edit instead of written from scratch

Matching Upwork jobs land in Slack the moment they're posted, each with a tailored draft proposal ready for you to send.

What you get

A Slack notification with a ready-to-edit proposal for every qualified new Upwork job, logged in Airtable.

What you need

An Upwork job feed via Vollna, an OpenAI API key, an Airtable account, and a Slack workspace.

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