How to Build an Upwork Proposal Drafter in n8n (Without Getting Your Account Flagged)
A good Upwork proposal takes 20 to 30 minutes to write. An n8n workflow can cut that to a few minutes of review, as long as a human still reads and sends every one. This is the build, the cost and the line you should not cross.
Cutting a 25-minute proposal to 3 minutes
A freelance developer documented on this site (builtwithagents.ai/strategy/n8n-upwork-proposal-autopilot-30-to-3-minutes) built an n8n agent that takes a pasted job description and produces an architecture diagram, a proposal document and the application text. He reports going from 20 to 30 minutes per proposal to about 2 to 3 minutes of review. That is a self-reported figure, but the mechanism is believable: most of the time in a proposal goes to reading the job closely and typing a first draft, and both are things a model does fast.
The part worth copying is the review step. The part worth skipping is the automatic submission that other builders on this site brag about. This guide builds the drafter, not the bot.
Why drafting is fine and auto-sending is not
Upwork's help center has an article on using bots and automation properly. As summarized from that article, Upwork treats scripts, programs and browser extensions that act faster than a human as bots, does not make exceptions for tools that automate interactions with the site, and says unauthorized use can lead to warnings, restrictions or bans. Its terms also say you may not use a robot, spider or scraper on the site without written permission. I could not load the full help article directly, so read it yourself before you build anything that touches the site, and check the current Terms of Service.
The safe design follows from that. The workflow never logs into Upwork, never scrapes it and never clicks Submit. You paste the job text in (or forward a job alert email you already received), the workflow returns a score and a draft, and you read it, change it and send it by hand. If you want true automation against the platform, Upwork's own route is an approved API key, and that comes with its own rules against spamming proposals.
There is also a business reason to stay human. Two other builders documented here, one with a 47-node n8n bidding bot that reports tripling income and one with an Upwork agent called Lancer that reports over $20,000 in monthly recurring revenue, are self-reported results. Clients can tell when a proposal was written without reading their post. A draft you edit beats a bid that an unwatched bot places at 3 am.
What you need
You need an n8n account (Cloud or self-hosted), an API key for an AI model provider such as OpenAI or Anthropic, an email address to receive drafts, and a text file of your own material: your pitch, three or four past projects with real outcomes, your rate range and the kinds of jobs you refuse. That last file is what separates a useful draft from generic filler, so spend time on it.
What it costs
As of October 2026, n8n's pricing page lists Cloud Starter at 20 euros a month billed annually with 2,500 executions, and Pro at 50 euros a month billed annually with 10,000 executions. A free trial is available. One execution is one full run of a workflow, so one proposal draft is one execution. Even 100 drafts a month fits on Starter. Self-hosting n8n is free but you maintain the server.
The model cost is small. OpenAI's pricing page lists its cheapest text models at $0.05 to $0.25 per million input tokens and $0.40 to $2.00 per million output tokens. A job post, your profile notes and a 250-word draft add up to a few thousand tokens, so a draft costs a fraction of a cent. Your real cost is Upwork connects and your time reviewing.
Step by step
Step 1: Write your proposal brief
Create one document with your pitch in three sentences, three to four past projects each with a concrete result, your preferred job types, jobs you refuse (for example fixed-price under $500 or anything with unpaid test work), and your tone rules. Keep it under 600 words. You will paste this into the prompt, so every sentence should be something you would say to a client.
Step 2: Create the entry point
In n8n, start a new workflow with an n8n Form Trigger node. Add one long text field called Job post and one optional field called Notes for anything you noticed. The form gives you a URL you can bookmark. Copy a job from Upwork, paste it in and submit. If you want less friction, add a Gmail Trigger on a label that catches Upwork job alert emails you already receive, which keeps the workflow off Upwork itself.
Step 3: Score the job before drafting
Add a Basic LLM Chain node with your model attached. In the prompt, paste your brief and ask the model to return JSON with four fields: fit score from 1 to 10, the three most important things the client says they need, any red flags (vague scope, unrealistic budget, requests for free work), and a yes or no on whether it is worth a connect. Add an IF node after it that routes anything below a 6 to a short note instead of a draft. Most of your time savings come from not writing proposals for jobs you should skip.
Step 4: Draft the proposal
For jobs that pass, add a second Basic LLM Chain. Tell the model to open with the client's specific problem in your words, to reference one past project from your brief only if it truly matches, to propose a first step instead of a sales pitch, to stay under 200 words, and to end with one question about the job that shows you read it. Ban the filler you hate, such as saying you are excited to apply. Tell it never to invent experience that is not in the brief.
Step 5: Send yourself the draft
Add a Send Email node (or Telegram) addressed to you. Put the score, the red flags and the draft in the body, with the job text below it so you can check the facts. Do not add any node that posts to Upwork.
Step 6: Edit and send by hand
Open Upwork yourself, read the job again, change the draft until it sounds like you, and submit. Aim for the draft to be 70 percent right. If you are changing nothing, the prompt is too generic or you are not reading carefully enough.
Step 7: Log the outcome
Add a Google Sheets node that appends the job title, score and date. Add a column you fill in by hand: replied, interviewed or hired. After 30 proposals, look for which scores actually led to replies and adjust the cutoff. The scoring is a guess until your own data tests it.
A worked example
Say a freelance automation builder sends 12 proposals a week at 25 minutes each, five hours total. With the drafter she reviews about 20 jobs a week, the scoring step discards eight, and she sends the other 12 after about 5 minutes each, one hour in all. That frees four hours a week. Her n8n and model cost is about 20 euros a month plus pennies, so the real spending is connects, which she was paying anyway. The saved four hours are only worth something if she spends them on delivery or on better targeting, so she blocks that time in her calendar. These numbers are illustrative.
When this is a bad idea
If you win most of what you bid on, you do not need this. Your constraint is not proposal speed. If you are new and have no past projects to put in the brief, the model will produce confident generic text, which is worse than nothing. And if you are tempted to remove the review step to send more, remember what the downside looks like: a restricted account is a much bigger loss than a missed proposal.
Frequently Asked Questions
Is it allowed to use AI to write Upwork proposals?▾
Writing or polishing a proposal with an AI tool and sending it yourself is a different thing from using a bot. Upwork's help center restricts bots and automated tools that interact with the site, and its terms bar scrapers, so keep the AI step off the platform and send each proposal by hand. Check the current terms, since policies change.
Can n8n auto-submit proposals on Upwork?▾
Technically someone can build it, and several builders on this site did. But Upwork says unauthorized automation can lead to warnings, restrictions or bans, and it says it cannot approve exceptions for tools that automate interactions with the site. The only sanctioned route is an approved API key with its own limits.
How much does it cost to run?▾
As of October 2026, n8n Cloud Starter is 20 euros a month billed annually for 2,500 executions, and the AI model cost per draft is a fraction of a cent. Upwork connects are the real expense.
Do I need to know how to code?▾
No. The build uses form, LLM, IF, email and Google Sheets nodes. You will need to be comfortable pasting prompts and testing a workflow.
Which AI model should I use?▾
A small, cheap model is enough for scoring. Use a stronger one for the draft if the writing sounds flat. Test both on five real jobs from your history and compare.
Will clients know the proposal came from AI?▾
They will know if it is generic. A draft that cites their specific problem, uses your real projects and has been edited by you reads as human because it mostly is.