Last updated on Mar 19, 2026

The Winning Proposal Structure

A 5-part framework that works consistently — with a full worked example.

The 5-part structure

Proposals that get replies follow a consistent arc. Not because there's a magic formula, but because this structure answers the three questions every client is asking — in the right order. For the background on those questions, see Proposal Fundamentals.

Part 1: The hook (2–3 sentences)

Reference something specific from the job post — a detail, a goal, a constraint they mentioned. This is the only part of the proposal the client sees in the list view before clicking. It must be about them, not you.

Version Example opener
Weak "Hi, I'm a React developer with 7 years of experience and a proven track record of delivering high-quality results."
Strong "I noticed you're rebuilding your checkout flow in React and want it done before your Q2 launch — I've done exactly this for two SaaS companies in the past year, including one with the same Stripe integration you mentioned."

The strong opener works because it names their specific situation (checkout flow, Q2 launch), references a detail they included (Stripe), and signals relevant experience — all in two sentences.

Part 2: The plan (3–4 bullet points)

Show them briefly how you'd approach the work. This isn't a full spec — it's enough to prove you've thought about it. A freelancer with a plan is less risky than one who says "just tell me what you need."

  • Week 1: Discovery call + scope confirmation in writing
  • Week 2–3: Build and internal QA
  • Week 4: Client review round + revisions
  • Week 5: Final handover with documentation

Adjust this to your niche. A content writer might say "Day 1: outline for approval — Day 3: first draft — Day 5: revisions and final." The point is to show a process, not to lock in every detail upfront.

Part 3: Proof (1–2 sentences + attachment)

One relevant result with a number. Numbers make proof concrete. "I have experience with similar projects" is not proof. "I rebuilt the payment flow for a fintech client — their checkout completion rate improved by 18%" is proof.

Attach one relevant portfolio piece. Not five — one. The most relevant thing you have. If it's not perfectly on-topic, note the connection explicitly: "This is a different product category but the same architectural challenge you're describing."

Part 4: Deliverables and timeline (1–2 sentences)

Be specific. "I can deliver a working prototype in 10 days and the final build in 3 weeks, with a 2-week QA buffer built in." That's more trustworthy than "I can finish this quickly" or "delivery time depends on scope." Specificity signals that you've actually thought about the work.

Part 5: The CTA (1 sentence)

"Let me know if you have questions" is too passive — it puts all action on the client. Instead, make it easy for them to take a specific next step.

  • "Happy to do a 15-minute call this week to confirm scope before we start."
  • "What's the one thing that matters most to you on this project?"
  • "I can send you the relevant case study from a similar project — want me to?"

A question at the end invites a reply. A statement that ends with "looking forward to hearing from you" does not.

Full worked example

Here's a realistic job post followed by a proposal applying all 5 parts:

Job post

Rebuild checkout flow — React + Stripe

We're a SaaS company with a 3-year-old checkout built on an outdated React codebase.
It doesn't work properly on mobile and we're losing conversions. We need it rebuilt
from scratch using React 18 + Stripe Elements, with a clean handover including
documentation. Must be done by end of April (we have a big campaign launching May 1).

Budget: $3,000–5,000
Looking for someone with Stripe experience who can work independently.

Proposal applying the 5-part structure

Your checkout is leaking conversions on mobile — I've fixed this exact problem for two
SaaS companies. One was also on an aging React codebase with Stripe; after rebuilding
with React 18 + Stripe Elements, their mobile checkout completion rate went from 51%
to 74%.

Here's how I'd approach this:
- Week 1: Audit the existing flow, agree on component structure, set up dev environment
- Week 2–3: Build and test the new checkout across devices (iPhone, Android, tablet)
- Week 4: QA round with your team + accessibility check
- End of April: Final handover with documented component library

I'm attaching the case study from the fintech rebuild — same stack, different product.

I can have a prototype live in 2 weeks and the final build done by April 25, which gives
you a buffer before May 1.

Would it help to do a 20-minute call this week to confirm scope and make sure I've
understood the existing codebase's constraints?
What this proposal does right Hook references mobile + Stripe + React 18 (all from the post). Plan is specific to their situation. Proof includes a number (51% to 74%). Timeline matches their deadline with a buffer. CTA invites a specific next step.

Answering screening questions

Upwork lets clients add up to 5 screening questions to a job post. Treat these seriously — clients who add questions are specifically watching to see who answers them. Ignoring a question or burying it at the end of a long proposal is an immediate red flag.

Answer screening questions honestly and briefly. If a question is already answered in your proposal, you can say "covered above" rather than repeating yourself — but only if it's genuinely covered, not just adjacent to it.

For a post with the question "Have you worked with Stripe's PaymentIntents API?": don't write two paragraphs about your payment experience. Answer in one sentence — "Yes, I used PaymentIntents on the fintech rebuild I mentioned — happy to walk through how I structured it on a call." That's it.

Length check The worked example above is approximately 200 words — within the 150–250 word sweet spot. If you find yourself significantly over 300 words, cut the plan or proof section first. The hook and CTA are the least cuttable parts.

For common reasons proposals fail despite having a good structure, see Why Proposals Fail. For how to build a reusable template around this structure, see Proposal Templates.