miinideckmiinideck
PricingUse casesBlog
Sign in
By role

Freelancers: pricing proposals as HTML, not PDF (2026)

A pricing proposal is read more like a website than a document. Channel options for sending one, and where private-link HTML sits between a PDF attachment and an esignature tool.

By miinideck ai research team·May 30, 2026·7 min read
TL;DR
  • A pricing proposal lives in the read-through, not the archive. The client scrolls it on a phone, expands the bits they care about, ignores the ones they don't — closer to a small website than a printed document.
  • PDF was designed for that other shape: paginated, printable, attachment-friendly, the same surface the client's lawyer will scan before signing.
  • An HTML proposal at a private link keeps the read-through interactive — collapsible scope details, hover-able case studies, an embedded walkthrough video — without locking the client into anyone's portal.
  • The split is roughly: HTML for the read, PDF for the archive, esignature tool for the signature.

The proposal goes out Tuesday morning. The client opens it on the train, taps to expand the timeline, taps again to see the case study you referenced. By Wednesday it's been forwarded to two other stakeholders, scrolled, partially read, partially skimmed. By Friday someone replies with three questions.

That whole arc is the proposal at work — not the moment of signature, the days of reading that come before it.

The container shapes how those days go.

What each channel is doing

PDF attachment. Designed for archive and print. Page breaks, fixed layout, opens the same on every device. Strong shape for the leave-behind after sign-off and for the lawyer's scan before signing. Less natural for the read-through phase: scrolling a paginated PDF on a phone shrinks the type, the bracket-priced scope tables don't reflow, the case-study link is a flat URL the client has to copy out.

Google Docs or Notion shared doc. Designed for collaborative working documents. Comments rail, suggestion mode, share settings — the framing is let's work on this together, not here's the offer. The Google/Notion chrome appears before the content. Works fine for proposals that genuinely are collaborative; less for the ones that are meant to land as a finished offer.

PandaDoc / Proposify / DocuSign with proposal builder. Designed for the esignature workflow. The client signs into the vendor's portal to read and sign. Strong shape when the proposal is the contract and the signature is the next action; adds friction earlier in the cycle, when the client is still deciding whether to engage at all.

Long email body with the proposal inline. Designed for short messages. Tables, headings, and footnotes render unevenly between Gmail, Outlook, and Apple Mail. Long emails get clipped by Gmail's Message truncated link, which puts the price below the fold for half the recipients.

Self-contained HTML at a private link. Designed for delivering a finished interactive document the client opens once. The proposal lives at a URL the freelancer controls, reads the same on phone and laptop, supports the small interactivity that proposals benefit from — collapsible scope sections, hover for case study details, an embedded walkthrough or testimonial.

The bits that benefit from being interactive

A pricing proposal does a few things at once: it explains the work, lists the price, references past work as proof, lays out the timeline. Each of those reads differently when the container can do more than a static page.

  • Scope tiers. Three options stacked side by side reads cleaner with collapsible details — the client expands "what's included in Tier 2" only when they're choosing between tiers, not on the first scroll.
  • Case study links. A hover or click-to-expand keeps the proposal one page; without it, every case study is a tab-switch the client may or may not come back from.
  • Timeline. A simple horizontal timeline with phase tooltips communicates a six-week engagement faster than a table with start/end dates.
  • Embedded walkthrough. A two-minute Loom embedded in the proposal lets the client hear the framing in your voice without leaving the document.
  • Pricing toggle. Monthly versus retainer versus project — a toggle right there reads better than three line items they have to mentally compare.

None of these are blockers in a PDF. They're small interactions that compound across the read-through phase.

What the channel signals

A freelancer is selling judgment, taste, and reliability — alongside the work itself. The proposal is the first long-form piece of writing the client reads from them; how the proposal arrives is part of how the freelancer is read.

A PDF attachment reads as here's the offer in the format my last twenty clients also got. Fine when the freelancer is already pre-sold; muted when they're competing against two other freelancers who already shipped websites for their previous clients.

An HTML link on the freelancer's own domain reads as I treat my own deliverables the way I'll treat yours. Same content, different frame around it.

The frame doesn't sell the proposal — the proposal sells the proposal. The frame just lowers the bar for the proposal to land.

Try a proposal as a private link before the next pitch — drop the HTML, get the URL, walk through the client experience on your own phone first. Free, no card, the file self-destructs after 7 days.

Try it free (no signup)

What the build looks like

For freelancers already using a design tool or a notebook-to-HTML workflow, the build is mostly content-first:

  1. Write the proposal in whatever tool you already write in — Notion, a markdown editor, a doc, a static-site template. The structure: intro, scope tiers, timeline, pricing, case studies, terms.
  2. Export to a single HTML file. Notion has Export → HTML; Google Docs has Download → Web Page; a markdown file runs through Pandoc into one HTML; a Figma proposal frame exports via the same plugins designers use for client previews. The output should be self-contained — all CSS and JS inlined — so the file is portable.
  3. Drop the HTML at a private-link host. Optional password if the pricing is sensitive, expiry set to a sensible window (a proposal that's been open for six weeks is probably stale).
  4. Send the link in the email that proposes the call. Body short — here's the proposal, an hour reads it cover to cover, happy to walk you through it on a call this week.

For freelancers building proposals in dedicated tools (Bonsai, HoneyBook, the proposal feature in Notion), the same shape applies — the proposal still lands as an HTML page; the private link layer just controls the URL the client opens.

Solo plan ($4.99/mo) keeps the proposal link permanent (no self-destruct) and removes the footer — useful when you want the URL to live in the client's inbox until they sign. Password protection ships free on every account, no upgrade needed.

See pricing

What this is not

The private link path is for the read-through phase. It doesn't replace the esignature tool — when the proposal is also the contract and the client clicks Sign Here, the right shape is still PandaDoc, Proposify, DocuSign, or whatever the contract workflow uses.

A reasonable split for most freelance engagements:

  • Pre-pitch — HTML link as the long-form read
  • Signature — PDF or esignature tool, depending on contract complexity
  • Project archive — PDF after sign-off, stored with the client's files

The link is one stage of the cycle, not the whole cycle. The point is that the read-through stage has different needs than the archive, and the channel can match.

That split isn't specific to proposals. It's the general case for HTML over PDF on anything a person reads before they file it, and seen wider still, Markdown, HTML, and PDF each own one stage — draft, deliver, freeze — rather than competing for all three. Teams sending work upward rather than outward hit the same wall from the other side: why senior teams send HTML instead of a .pptx.

Two controls are worth setting before the link goes out. Pricing is the part of a proposal most likely to be forwarded, so what password protection actually does is worth knowing rather than assuming. And once it's sent, the access log tells you whether the client opened it once or came back to the scope section three times — which is a better read on where the negotiation actually sits than a follow-up email.

More in By role

Five weeks in, your client has five links and no idea which one is this week's (2026)

Recurring reports break in a way one-off deliverables don't: every send produces another address, and the old ones keep working with old numbers in them. Here's the version where the report has one address for the whole engagement.

August 2, 2026·4 min read

Delivering an AI-written client report (2026)

The writing got fast. The handover didn't. Here's why the last step of client work — getting the finished thing in front of the client — quietly became the slow part, and what a good version of it looks like.

August 1, 2026·7 min read

Portfolio / about / CV on your own URL — without Webflow (2026)

A personal site updates twice a year. CMS subscriptions and full deploy pipelines are sized for sites that update twice a week. The middle ground: one HTML file at your own domain.

July 2, 2026·7 min read

Send your own private link.

miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.

See the use casesTry it free →
miinideck

HTML files, finally as links — for AI builders, agencies, and consultants. Default-noindex, default-private, default-yours.

Product

  • Pricing
  • Use cases
  • Try it free

Resources

  • Blog
  • Featured on
  • Report abuse

Legal

  • Privacy
  • Terms
© 2026 miinideckMade for people who don't want their work indexed.