clawdbot-workspace/upwork-pipeline/PIPELINE-INSTRUCTIONS.md
2026-02-16 23:01:00 -05:00

2.3 KiB

Upwork Auto-Apply Pipeline Instructions

Trigger

This pipeline runs when Clawdbot receives the wake event upwork-email-check. It fires every 2 minutes during 8AM-11PM ET.

Step 1: Check Gmail

gog gmail search "from:donotreply@upwork.com subject:\"New job\" is:unread" --max 10 --account jake@localbosses.org --json

Step 2: For each unread email

  1. Read the email: gog gmail get <MSG_ID> --account jake@localbosses.org
  2. Extract: job URL, rate/budget, title, skills
  3. Pre-filter based on email content:
    • SKIP if hourly max < $50 (Jake's rule)
    • SKIP if fixed price < $1,000
    • SKIP if no rate info and description looks low-budget

Step 3: Scrape full job details (for jobs that pass pre-filter)

Use browser automation to visit the Upwork job page and extract:

  • Full description
  • Client history (total spent, hire rate, reviews)
  • Number of proposals already
  • Required skills
  • Client location

Step 4: Score the job (0-100)

Scoring factors:

  • Budget/rate alignment (higher = better) — 30 pts
  • Client quality (spend history, reviews, hire rate) — 25 pts
  • Skill match (MCP, Claude, AI automation, full-stack) — 25 pts
  • Competition (fewer proposals = better) — 10 pts
  • Project clarity (well-written = better) — 10 pts

Apply threshold: score >= 60

Step 5: Build deliverables (for high-scoring jobs)

Spawn a sub-agent to:

  1. Create a tailored wireframe/mockup/demo relevant to the job
  2. Deploy to Cloudflare Pages at {job-slug}.portfolio.mcpengage.com
  3. Take screenshots of the deployed pages

Step 6: Write proposal

Template components:

  • Hook: Reference specific details from their job post
  • Proof: Link to the deployed demo/wireframe
  • Experience: Relevant portfolio pieces
  • Approach: Brief technical plan
  • CTA: Clear next step

Step 7: Submit via browser

Use Upwork browser automation to:

  1. Click "Submit a Proposal"
  2. Fill in cover letter
  3. Attach screenshots
  4. Set rate ($50+/hr or appropriate for fixed)
  5. Submit

Step 8: Report

Post to Discord #pipeline:

  • Job title + URL
  • Score
  • Rate/budget
  • Proposal summary
  • Demo link
  • Status (submitted/skipped/failed)

Processed tracking

File: upwork-pipeline/processed.json — array of processed email message IDs Always mark emails as processed even if skipped (to avoid reprocessing)