Learn-skills.dev upwork-apply

Scrape Upwork jobs and generate personalized proposals with cover letters. Use when user asks to find Upwork jobs, create Upwork proposals, or apply to Upwork listings.

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aiagentwithdhruv/skills/upwork-apply" ~/.claude/skills/neversight-learn-skills-dev-upwork-apply && rm -rf "$T"
manifest: data/skills-md/aiagentwithdhruv/skills/upwork-apply/SKILL.md
source content

Upwork Job Scraping & Proposal Generation

Goal

Scrape Upwork job listings and generate personalized proposals with compelling cover letters.

Scripts

  • ./scripts/upwork_apify_scraper.py
    - Scrape Upwork jobs via Apify
  • ./scripts/upwork_proposal_generator.py
    - Generate proposals with Claude
  • ./scripts/update_sheet.py
    - Save to Google Sheets

Process

1. Scrape Jobs

python3 ./scripts/upwork_apify_scraper.py \
  --query "AI automation" \
  --limit 50 \
  --output .tmp/upwork_jobs.json

2. Generate Proposals

python3 ./scripts/upwork_proposal_generator.py \
  --jobs .tmp/upwork_jobs.json \
  --output .tmp/proposals.json

Uses Claude Opus 4.5 for high-quality, personalized cover letters.

3. Save to Sheet

python3 ./scripts/update_sheet.py .tmp/proposals.json --title "Upwork Proposals"

Output

Google Sheet with:

  • Job details (title, description, budget, client info)
  • Generated proposal/cover letter
  • Application link

Environment

APIFY_API_TOKEN=your_token
ANTHROPIC_API_KEY=your_key

Schema

Inputs

NameTypeRequiredDescription
query
stringYesSearch query (e.g., 'AI automation')
limit
integerNoMax job listings (default: 50)

Outputs

NameTypeDescription
sheet_url
stringGoogle Sheet with job details + generated proposals

Credentials

NameSource
APIFY_API_TOKEN
.env
ANTHROPIC_API_KEY
.env

Cost

Apify credits + Claude API