How to Write Upwork Proposals With AI Without Sounding Generic

David IyaDavid Iya August 24, 2026 8 min read
A home office desk at dusk with a laptop showing an AI chat interface next to a printed job listing with a highlighter and a coffee mug
Original image, Upwork Income Club

The Short Answer

You write Upwork proposals with AI without sounding generic by never sending the first draft. Use Claude Code to produce a rough draft from the client's actual job post and whatever research you have gathered, then run a second pass where you manually strip out stock phrases - 'I am confident I can help,' 'I would love the opportunity,' 'perfect fit' - and replace them with a specific, checkable detail about the client's job. The AI's job is speed. Your job is making sure nothing generic survives to the send button.

This is not a workaround for a rule against AI use - Upwork's terms do not prohibit it. It is a fix for the actual problem, which is that an unedited AI draft reads like every other unedited AI draft a client has already scrolled past that week.

Why an Unedited AI Draft Reads the Same as Everyone Else's

Ask any general-purpose AI tool to write an Upwork proposal with no other input and it reaches for the same handful of moves nearly every time: a confident opening that restates the job title back at the client, a paragraph of vague qualifications, and a closing that says something like 'I look forward to discussing this further.' None of that is wrong exactly - it is just interchangeable. A client who has read forty proposals this week has read that shape forty times.

The tell is not that a proposal 'sounds like AI' in some detectable technical sense. It is that it contains nothing the client could not have written themselves by imagining a competent freelancer. A generic proposal could be sent to any client posting any similar job with the company name swapped in. A specific proposal could only have been written for this exact posting.

The Draft-and-Strip Method

The framework we teach inside Upwork Income Club for this exact problem is the Draft-and-Strip Method: let AI produce a fast first draft from real inputs, then run a dedicated pass whose only job is removing genericness. Two separate steps, done in that order, every time. Skipping straight to editing without a real draft is slow. Sending the draft without the strip pass is what produces the proposals clients scroll past.

  1. Draft: Claude Code writes a rough version from the client's actual job post, your research, and your usual proposal structure - fast, unpolished, meant to be cut apart.
  2. Strip: you go line by line and remove anything that would still be true if you deleted the client's name and pasted it into a different job post.
  3. Replace: every line you strip gets replaced with something specific - a detail from the job post, a fact from your research, a real number from your own work.

The method works because it separates two skills that most freelancers try to do at once - writing fast and writing specifically - and does not let AI touch the second one unsupervised.

Step 1 - Feed Claude Code the Job Post, Not a Template

The single biggest cause of a generic draft is a generic prompt. Asking Claude Code to 'write me an Upwork proposal for a graphic design job' with nothing else gives it nothing to be specific about, so it fills the gap with the same stock phrasing everyone else's generic prompt produces. The fix is feeding it real material before you ask for a single sentence of proposal text.

  • Paste the full job post, including the screening questions - they usually reveal what the client actually cares about.
  • Include whatever you already know about the client's business from your own research. If you have not done that research yet, [researching the client with Claude Code first](/blog/how-to-research-upwork-client-with-claude-code) is the step that comes before this one, and it is where the specific details in step 3 come from.
  • Give it one or two of your own past proposals that got a reply, so it has your actual voice to draft in rather than a generic 'professional freelancer' voice.
  • Tell it plainly what you do not want: no 'I am confident,' no restating the job title back, no closing with 'looking forward to hearing from you.' Naming the clichΓ©s up front cuts a lot of the strip work later.

Step 2 - Ask for Three Angles, Not One Draft

A single AI draft tends to anchor you. You read it, it sounds fine, and the edits you make are small ones around the edges instead of a real rewrite. Asking Claude Code for three different opening angles on the same job - one that leads with a specific observation about the client's business, one that leads with a relevant result from your own work, one that leads with a direct question about the project - gives you real material to choose from instead of one draft to lightly polish.

Pick the angle that is hardest to imagine another freelancer sending, then build the rest of the proposal around it using the five-section structure covered in [the Upwork proposal that gets replies](/blog/upwork-proposal-that-gets-replies): hook, proof of understanding, evidence, offer, next step. The AI supplies raw options for the hook. You decide which one earns the client's attention.

Step 3 - Run the Specificity Strip

This is the step most freelancers skip, and it is the one that actually matters. Go through the draft line by line and ask one question of every sentence: could this sentence survive if I deleted the client's specific details and pasted it into a different job post? If yes, it gets cut or rewritten with something specific.

Generic lines and what replaces them

What the AI draftedWhat replaces it
I am confident I can help you achieve your goals.Cut entirely - it adds nothing a client couldn't assume on their own.
I have extensive experience in this field.Name the specific type of project and what happened: 'I built a similar checkout flow for a subscription box brand last quarter, and the main issue was the same one your post describes.'
I noticed you are looking for a [job title].Replace with the one detail from the job post or your research that a generic reader would miss - the gap in the client's site, the pattern in their past hires, the ambiguity in the brief.
I would love the opportunity to work with you.Replace with a specific next step: a question about scope, or a concrete first move you would make.
Please let me know if you have any questions.Replace with a direct, low-friction call to action tied to the actual job, not a generic sign-off.

What to Never Let AI Decide

AI is fast at producing sentences. It has no information about your actual capacity, your real experience, or what number you can commit to, so three decisions have to stay entirely yours no matter how good the draft reads.

  • Your price. Claude Code does not know your costs, your pipeline, or what this specific client's budget signals are worth to you. Set the number yourself using the negotiation logic in [how to negotiate your rate on Upwork](/blog/how-to-negotiate-your-rate-on-upwork).
  • Your timeline. Never let a draft commit to a delivery date you have not checked against your actual schedule. An AI-generated 'I can deliver this by Friday' that you did not verify is a promise you made to yourself by accident.
  • Any claim about experience. If the draft says you have worked with a type of client or platform you have not, cut it before it becomes a claim you have to defend in an interview or, worse, on the job.

The rule of thumb: AI can draft anything that describes the work. Only you can commit to anything that promises the work.

How This Fits Into Your Full Proposal Workflow

Drafting is one piece of a three-step pipeline, and it only works well when the other two pieces are in place. Research comes first - [pointing Claude Code at the client's public footprint](/blog/how-to-research-upwork-client-with-claude-code) before you write a word gives step 1 above something real to work with. Structure comes from the proven proposal shape in [the Upwork proposal that gets replies](/blog/upwork-proposal-that-gets-replies), which the Draft-and-Strip Method fills in rather than replaces. And once you land the job, the same discipline of reviewing every AI-assisted output before it reaches the client continues into the actual delivery, covered in [how freelancers use Claude Code to deliver Upwork projects faster](/blog/claude-code-for-upwork-freelancers).

Free Upwork growth tips, straight to your inbox

Short, practical drops on proposals, niches, client scripts, and rates. No spam, unsubscribe anytime.

Frequently asked questions

Will clients know if I used AI to write my Upwork proposal?

They cannot detect it with certainty, and Upwork's terms do not require you to disclose it. What clients do notice is genericness - a proposal that could have been sent to any similar job post. The Draft-and-Strip Method addresses the actual signal clients respond to, not a hidden AI fingerprint.

Is it against Upwork's rules to write proposals with AI?

No. Upwork's platform terms do not prohibit using AI tools to help draft proposals. The proposal still has to represent you honestly - do not let a draft claim experience or commitments that are not true.

How much of the proposal should I let AI write versus write myself?

Let AI produce the first draft and generate alternate angles, since that is where its speed helps most. Keep the strip-and-replace edit, the final price, the timeline, and any experience claims entirely in your own hands. Roughly: AI drafts the words, you decide what survives.

What exactly is the Draft-and-Strip Method?

It is a two-step process taught inside Upwork Income Club: first, Claude Code drafts a rough proposal from the real job post and your research. Second, you go line by line and strip out any sentence that would still make sense pasted into a different job post, replacing it with something specific. The draft gets you speed. The strip pass gets you a proposal that reads like it was written for one client, not a category of clients.

Can I reuse the same AI draft for multiple similar job posts?

You can reuse a structure or a proven opening angle, but you cannot reuse the specific details - that defeats the entire point of the strip pass. Rerun step 1 with the new job post's actual text each time, even if the job type is one you have bid on many times before.

Last reviewed by David Iya on August 24, 2026

David Iya

Written by

David Iya

Forbes 30 Under 30 Β· Y Combinator

Keep reading

ConnectsProposals

How Many Connects Does It Take to Win a Job on Upwork?

There is no fixed number of Connects that wins a job - what matters is your reply rate and hire rate, not how many you spend. This post shows you the real math behind the question, how to estimate your own cost-per-job, and how to lower it fast without buying more Connects.

David Iya 8 min
Read article
ProposalsGetting Hired

How to Follow Up on an Upwork Proposal (Without Looking Desperate)

Most freelancers send a proposal, hear nothing, and assume the job is gone. It is usually not gone. Clients get busy, forget to reply, and close jobs without ever messaging the candidates they actually liked. One well-timed follow-up sent the right way can be the only thing standing between you and an interview. Here is exactly when to send it, what to say, and when to move on.

David Iya 7 min
Read article

Ready to build it yourself?

Join Upwork Income Club, the #1 community for building income on upwork, for $9/month.

← Back to the blog