Updated August 27, 2026 · 9 min read · Written by ProposalAI

How to Write the First Two Lines of an Upwork Proposal

Clients often decide whether to expand your proposal from a short preview. Here is how to use those two lines: name the work, skip the biography, and avoid openings that fit every job.

The preview is a different document

Think of the first two lines as a separate deliverable. They have to work even if the client never opens the rest. That is not an excuse to stuff keywords. It is a reason to lead with a specific observation.

A useful test: cover the rest of the letter. Could those two lines only have been written for this post? If they could also open a logo-design job, they are not done.

What belongs in line one

Line one is usually the greeting plus the hook. Options that tend to work:

  • A decision: “Hi — I would fix the webhook retries before adding new Stripe events.”
  • A restated constraint: “Hi Sam — you need the app to keep working while we migrate the user table, so I would dual-write for a week rather than a hard cutover.”
  • A named artifact: “Hi — I looked at the Figma file you linked; the spacing tokens in the checkout are inconsistent with the rest of the kit, and I would lock those first.”

What does not belong: years of experience, a list of tools, or “I am excited.”

What belongs in line two

Line two should make the hook believable. One of:

  • The closest project, in one clause
  • The risk you would handle first
  • A question so specific it proves you read the attachments

Example pair:

“Hi — I would keep your current Next.js app router and only extract the billing UI into a shared package.

I did a similar split for a SaaS team that could not pause releases during a Stripe upgrade; the first PR was the package boundary, not a redesign.”

Openings to retire

  • “I came across your job posting and found it interesting.”
  • “Please accept my proposal for the [job title] role.”
  • “I have 7+ years of experience in web development, mobile, AI, and blockchain.”
  • “Hire me and you will not regret it.”

They waste the preview and they are easy to generate, which means the client has seen them all day.

Match the client’s tone without mimicking slang

If the post is blunt (“Need this fixed today, no agencies”), your opening should be blunt too. If the post is careful and detailed, a joke in line one can feel off. Mirror formality, not memes.

When the post is vague

Some posts are two sentences: “Need a website. Budget open.” You cannot fake a specific hook. In that case, make the specificity *your clarifying question*:

“Hi — before I estimate, I need to know whether this is a marketing site on WordPress or a logged-in app. I have shipped both; the first week of work is completely different.”

That is still more useful than “I can build any website.”

After you generate a draft

The [free generator](/signup) often produces a decent structure and a weak first line. Rewrite the opening last, with the job post still on screen. See [how to write a strong opening](/help/how-to-write-a-strong-opening) for the in-app flow.

If you want a full letter that starts from a real Node API situation, read the [Node.js example](/examples/nodejs-development).

Advertisement

Related reading