← ClaudeAtlas

upwork-proposallisted

Write a short, targeted Upwork proposal from a job description and the user's resume, humanized for natural tone.
suxrobGM/jobpilot · ★ 20 · AI & Automation · score 84
Install: claude install-skill suxrobGM/jobpilot
# Upwork Proposal Generator Write a concise, winning Upwork proposal that directly addresses the client's needs. Clients skim proposals on mobile, between meetings — if it takes more than ~30 seconds to read, it's gone. Optimize every line for a fast skim. ## Setup Follow `../shared/setup.md`. Then `Read` the resume at `data.primaryResumeSourceAbsolutePath` for full context (identity, skills, experience, projects, research). ## Step 1: Resolve the Input The argument is either a **proposal id** (an integer, when launched from the JobPilot UI) or a raw **job description** (manual use). Detect which: - **Integer id** → fetch the draft row and use its stored job details as the JD: ```bash curl -fsS "$JOBPILOT_API/api/upwork/proposals/$ARG" ``` Use `data.jobDescription` as the posting, plus `data.jobTitle` / `data.clientName` / `data.jobUrl` for context. Remember the id — you will `PATCH` the result back to it in Step 7. - **Anything else** → treat the argument itself as the job description. There is no row yet; you will `POST` a new one in Step 7. ## Step 2: Analyze the JD Identify: what the client needs built/fixed, required tech and skills, scope and timeline clues, pain points/challenges, and any specific questions the client asks. Pull out one concrete detail unique to _this_ posting — you'll reference it in the hook so the client can tell the proposal isn't a mass send. ## Step 3: Select ONE Matching Case Study Pick the SINGLE most relevant project from