<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 張旭豐</title>
    <description>The latest articles on DEV Community by 張旭豐 (@_0c004e5fde78250aee362).</description>
    <link>https://dev.to/_0c004e5fde78250aee362</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3835946%2F7b142c84-de05-4005-bda6-8f44d601df51.png</url>
      <title>DEV Community: 張旭豐</title>
      <link>https://dev.to/_0c004e5fde78250aee362</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_0c004e5fde78250aee362"/>
    <language>en</language>
    <item>
      <title>法國小鎮真實案例：一個網站報價，差了 10 倍——Freelancer 報價地獄的 4 個教訓</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 07:25:20 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/fa-guo-xiao-zhen-zhen-shi-an-li-ge-wang-zhan-bao-jia-chai-liao-10-bei-freelancer-bao-jia-di-yu-de-4-ge-jiao-xun-1k4g</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/fa-guo-xiao-zhen-zhen-shi-an-li-ge-wang-zhan-bao-jia-chai-liao-10-bei-freelancer-bao-jia-di-yu-de-4-ge-jiao-xun-1k4g</guid>
      <description>&lt;h1&gt;
  
  
  Before You Accept a Web Development Quote: Questions Every Developer and Buyer Should Ask
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;法國 Besançon 小鎮真實案例：一個網站報價差了 10 倍。 無論你是開發者還是採購方，這篇讓你看見雙方的盲點。&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  真實案例速覽
&lt;/h2&gt;

&lt;p&gt;法國 Besançon（一個人口約 12 萬的小鎮）。一個紅酒商需要宣傳網站，包含酒款介紹、部落格、訂位表單。他收了四家廠商的報價：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;報價&lt;/th&gt;
&lt;th&gt;金額&lt;/th&gt;
&lt;th&gt;方案&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;最低&lt;/td&gt;
&lt;td&gt;€990&lt;/td&gt;
&lt;td&gt;SaaS 模板方案，含第一年主機&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;次低&lt;/td&gt;
&lt;td&gt;€2,500&lt;/td&gt;
&lt;td&gt;小型工作室，全自訂&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;次高&lt;/td&gt;
&lt;td&gt;€8,500&lt;/td&gt;
&lt;td&gt;Freelancer，WordPress 自架&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;最高&lt;/td&gt;
&lt;td&gt;€10,000+&lt;/td&gt;
&lt;td&gt;未知&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;同一個專案，報價差距超過 10 倍。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;這個數字不是因為市場混亂，而是因為&lt;strong&gt;雙方都不知道該問什麼&lt;/strong&gt;。&lt;/p&gt;




&lt;h2&gt;
  
  
  給採購方的 7 個問題
&lt;/h2&gt;

&lt;p&gt;如果你在比較網站報價，這 7 個問題能讓你快速篩掉風險方案：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q1: 「具體包含什麼功能？」&lt;/strong&gt;&lt;br&gt;
不要只問「這個多少錢」，要問範圍。SaaS 模板的「酒款介紹」和 WordPress 自架的「酒款介紹」，技術上截然不同。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q2: 「誰擁有網域、主機、程式碼和內容？」&lt;/strong&gt;&lt;br&gt;
這個問題能立刻暴露低價方案的長期風險。如果答案是「我們」，那第二年續約時對方可以漲價；如果答案是「你」，那你就綁死在對方身上。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q3: 「SEO 設定包含在內嗎？」&lt;/strong&gt;&lt;br&gt;
很多低價方案只做「頁面」，不做「搜尋優化」。上線後你會發現 Google 找不到你的網站，而對方說「當初說的是上線，不是排名」。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q4: 「上線後誰來維護？」&lt;/strong&gt;&lt;br&gt;
網站不是上線就結束了。外掛要更新、主機要續約、偶爾會當機。如果對方說「之後再說」，這不是省錢，這是埋下未爆彈。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q5: 「可以修改幾次？」&lt;/strong&gt;&lt;br&gt;
「功能可以再加」聽起來很彈性，實際上可能是「加一個功能等於半個新專案」。談清楚修改次數和單次修改的代價。&lt;/p&gt;

&lt;p&gt;**Q6: 「有沒有裝 Google Analytics 或 similar 追蹤？」&lt;br&gt;
如果對方說「上線時預設有」，你應該預期對方壓根沒裝。如果對方說「會裝但你要提供 Google 帳號」，這代表他們有基本概念。&lt;/p&gt;

&lt;p&gt;**Q7: 「什麼情況下價格會往上加？」&lt;br&gt;
理想答案是「在雙方同意的範圍內不會加」。如果對方說「看情況」，你要立刻問「什麼情況？」並要求白紙黑字寫進合約。&lt;/p&gt;


&lt;h2&gt;
  
  
  給開發者的 7 個問題
&lt;/h2&gt;

&lt;p&gt;如果你在報價，這 7 個問題能幫你快速確認這是不是一個可以做的案子：&lt;/p&gt;

&lt;p&gt;**Q1: 「這個網站的核心商業目標是什麼？」&lt;br&gt;
不是「要做什麼」，而是「做了之後會怎樣」。是為了接到更多訂單？建立品牌形象？還是「別人都有所以我也要」？&lt;/p&gt;

&lt;p&gt;**Q2: 「誰來提供文案和圖片？」&lt;br&gt;
這個問題會立刻篩掉「想像中案子很大但實際上客戶什麼都沒有」的陷阱。如果客戶說「我們再想想」，這個案子很可能會在執行中爆量。&lt;/p&gt;

&lt;p&gt;**Q3: 「這是展示型網站、預約系統、電商，還是名單收集？」&lt;br&gt;
這三種的技術難度、維護成本、營運需求差異極大。用「網站」一個字涵蓋所有，遲早會在驗收時發現認知落差。&lt;/p&gt;

&lt;p&gt;**Q4: 「網站上線後誰來管理？」&lt;br&gt;
如果客戶說「我們自己管」，等於默認他們需要一個不需要技術背景的後台。如果他們說「希望是你」，你要評估這是不是一個長期維護合約的開端。&lt;/p&gt;

&lt;p&gt;**Q5: 「有沒有需要串接的第三方系統？」&lt;br&gt;
POS、ERP、庫存管理、Email 系統……每一個串接都是隱藏的範圍。確認清楚，避免做到一半發現「這個本來就要做」。&lt;/p&gt;

&lt;p&gt;**Q6: 「時間壓力是什麼？」&lt;br&gt;
「越快越好」和「我們希望在聖誕節前上線」是不一樣的。如果客戶有明確deadline，問清楚背後原因——是業務壓力、活動檔期、還是單純想要盡快？不同的原因會影響你的報價策略。&lt;/p&gt;

&lt;p&gt;**Q7: 「客戶現在在用的是什麼方案？」&lt;br&gt;
這個問題直接決定了你是在搶新案子還是被拿去比較。如果對方正在用 WordPress.com 或 Squarespace，你面對的是遷移談判，不是全新建置。&lt;/p&gt;


&lt;h2&gt;
  
  
  談判問答模板
&lt;/h2&gt;
&lt;h3&gt;
  
  
  採購方：向供應商提問的 Email 模板
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;主旨：關於 Besançon 網站專案的幾個問題

你好，

感謝提供報價。在做決定之前，我想確認幾件事：

1. 網域和主機的所有權是誰的？結束合作後我可以帶走嗎？
2. SEO 基本設定（Meta tags、Sitemap、Analytics）是否包含在報價內？
3. 之後修改內容是自己可以改，還是必須找你？
4. 如果需要增加新功能，大約的計價方式是如何？

這些問題沒有標準答案，我只是想確保雙方對範圍的認知一致。

謝謝，
[你的名字]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  開發者：向客戶確認範圍的 Email 模板
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;主旨：幾個關於報價的快速確認

你好，

看完需求後，我想先確認幾件事，確保我的報價是針對真實需求：

1. 你現在有網站嗎？還是完全從零開始？
2. 內容（文案、圖片）是誰準備？時間表是？
3. 你希望的交付方式是「帳號密碼給你你自己管」，還是「我幫你代管」？
4. 有沒有參考網站？是指設計風格類似，還是功能類似？

這些確認後，我可以給你一個更準確的報價。

Best,
[你的名字]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  開發者：「不砍價但縮範圍」的談判模板
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;我理解預算是考量。讓我看看可以怎麼調整：

Option A：維持原始範圍，€8,500
→ 範圍：酒款介紹、部落格、訂位表單
→ 含一年主機代管和基本 SEO 設定

Option B：縮減範圍，€5,500
→ 只做酒款介紹和部落格
→ 訂位表單改為手機聯絡或社群連結

Option C：分階段，€3,500 起步
→ 先做酒款介紹和部落格
→ 訂位表單列為 Phase 2（視預算恢復情況決定）

我推薦 Option A。理由：Besançon 這個規模的紅酒商，線上曝光的投資報酬率最高的其實是前三頁 Google 搜尋，而這需要完整內容和基本 SEO——不是貴，是扎實的基礎。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Besançon 紅酒商的最後選擇
&lt;/h2&gt;

&lt;p&gt;他最後選了 €8,500 的 WordPress 方案。&lt;/p&gt;

&lt;p&gt;選擇理由：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;他需要一個「不只是展示，而是能接訂單」的網站&lt;/li&gt;
&lt;li&gt;紅酒電商需要年營業額登記和衛生許可，這部分成本就已經墊高了底價&lt;/li&gt;
&lt;li&gt;他問了 Q1-Q7，心裡有底，知道 €2,500 的「全自訂」方案其實不包括上線後三個月的技術支援&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;這個故事的啟發不是「貴的就是好的」，而是「問對問題，才能避免在錯誤的維度上省錢」。&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  實際的談判轉折點
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;轉折點 1：對方給了一個讓你心動的低價&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;不要立刻回覆。48 小時後再回，並不是為了「等對方降價」，而是讓自己有时间重新檢視：「這個低價是因為對方真的低成本，還是因為他預期在範圍上會有爭議？」&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;轉折點 2：對方堅持不退&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;用「範圍分層」代替「價格拉鋸」。把報價切成「核心範圍」（必須做）和「可延後範圍」（有錢再做），讓對方在「不做」和「加預算」之間選擇，而不是在「做」和「不做」之間選擇。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;轉折點 3：客戶沉默不說話&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;沉默不代表拒絕。可能他只是在消化資訊，或者在跟老闆請示。&lt;/p&gt;

&lt;p&gt;48 小時後跟進一句：「有問題隨時可以問，不用客氣。」好過催單。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;轉折點 4：客戶說「那就做吧」但沒有確認細節&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;口頭成交是最危險的。立刻發一封總結 Email，確認雙方共識：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;讓我確認一下剛才說的：範圍是 A、B、C，時程是 X 週，報價是 €X,XXX，修改次數是 2 次。如果範圍有變化，我們再討論。沒問題的話我就開始了。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5-Signal Checklist: When to Push Back on a "Too Expensive" Reply
&lt;/h2&gt;

&lt;p&gt;Copy this before your next client quote:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 1: Your hourly rate is below your floor by 30%?&lt;/strong&gt; → If so, your base rate doesn't cover real costs&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 2: Scope is undefined (no boundaries, staging, or docs)?&lt;/strong&gt; → High-risk — add a risk premium or decline&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 3: Client says "just start and we'll figure it out"?&lt;/strong&gt; → This phrase almost always means scope creep incoming&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 4: No clear follow-up project or strategic value?&lt;/strong&gt; → Low-ball without follow-through = pure self-underestimation&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 5: The client questions price but keeps discussing scope, timing, or alternatives?&lt;/strong&gt; → Usually means they haven't seen enough value or risk control yet&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ：關於 Besançon 案例的 5 個問題
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q1：Besançon 案例是真的嗎？&lt;/strong&gt;&lt;br&gt;
是真的是真實案例，但細節經過化名處理。紅酒商最後選擇 €8,500 WordPress 方案，上線後三個月內透過網站接到第一筆訂單。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q2：如果客戶堅持要最低價怎麼辦？&lt;/strong&gt;&lt;br&gt;
用「範圍分層」代替「降價」。把報價切成「核心範圍」和「可延後範圍」，讓對方在「不做」和「加預算」之間選擇，而不是在「做」和「不做」之間選擇。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q3：SaaS 模板方案（€990）真的不能用嗎？&lt;/strong&gt;&lt;br&gt;
可以用，但要看需求。如果目標是「有個網站存在」，SaaS 方案 CP 值最高。如果目標是「建立品牌和接單能力」，需要更高投入。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q4：怎麼判斷這是不是一個可以接的案子？&lt;/strong&gt;&lt;br&gt;
用 5-Signal Checklist 評估。如果出現 3 個以上 Signal，這個案子的風險溢價應該反映在報價裡，而不是用低價去碰。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q5：€8,500 的 WordPress 方案貴嗎？&lt;/strong&gt;&lt;br&gt;
對一個法國小鎮的紅酒商來說，決定因素不是「貴不貴」，而是「這筆投資多久可以回本」。如果上線後三個月能接到新訂單，ROI 就是正的。&lt;/p&gt;

&lt;h2&gt;
  
  
  Positioning 收尾
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A good web quote is not the lowest number. It is the clearest agreement about risk, ownership, and change.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Besançon 那個紅酒商拿到四張報價單時，其實他需要的不是最低價，而是最清楚的那張。&lt;/p&gt;




&lt;h2&gt;
  
  
  內鏈資源
&lt;/h2&gt;

&lt;p&gt;如果你想系統化盤點自己的報價，這裡有免費工具：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/cheapuno/a-30-second-pricing-decision-tree-for-freelance-devs-403930"&gt;30-Second Pricing Decision Tree for Freelance Devs&lt;/a&gt;：用決策樹在 30 秒內確認專案是否值得接&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Got a Quote to Review?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;$10 Implementation Review&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you read this and thought "I have a quote like that sitting on my desk" — here's a way to use it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send me your scope document or quote&lt;/li&gt;
&lt;li&gt;I'll identify where you left money on the table&lt;/li&gt;
&lt;li&gt;Provide 1 specific adjustment to strengthen your position&lt;/li&gt;
&lt;li&gt;Delivered within 24 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;→ &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;PayPal.me/cheapuno&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Format: PDF or Google Doc. I'll reply within 24 hours with a written review.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: 本文引用了 Besançon 紅酒商案例，資料來源為作者的公開 Dev.to 文章。這個案例用於說明 freelance pricing 的真實挑戰，無意貶低任何特定報價方。&lt;/em&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>pricing</category>
      <category>webdev</category>
      <category>business</category>
    </item>
    <item>
      <title>Freelancer 對客戶說「這個應該包含在原來的報價裡」？4種不再吃虧的回應方式</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 06:40:47 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/ke-hu-shuo-zhe-ge-ying-gai-bao-han-zai-yuan-lai-de-bao-jia-li-freelancer-ying-dui-scope-creep-de-4-zhong-hui-ying-2ad2</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/ke-hu-shuo-zhe-ge-ying-gai-bao-han-zai-yuan-lai-de-bao-jia-li-freelancer-ying-dui-scope-creep-de-4-zhong-hui-ying-2ad2</guid>
      <description>&lt;h2&gt;
  
  
  你的客戶開始說「這個應該包含在原來的報價裡」
&lt;/h2&gt;

&lt;p&gt;這句話幾乎每個 freelancer 都聽過。&lt;/p&gt;

&lt;p&gt;專案做到一半，客戶突然說：「這個功能我們之前就想要了，應該算在原來的報價裡吧？」&lt;/p&gt;

&lt;p&gt;你心裡知道這是 scope creep，但客戶覺得這是「合理期待」。&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🚀 首屏 offer（限時）：&lt;/strong&gt;&lt;br&gt;
如果你現在正在被 scope creep 困擾，&lt;strong&gt;$10 快速審核&lt;/strong&gt;：&lt;br&gt;
→ 24 小時內收到：範圍文件標注 + 直接可用的談判腳本&lt;br&gt;
→ 不滿意一分鐘內退款，無問題&lt;br&gt;
付款：paypal.me/cheapuno&lt;/p&gt;


&lt;h2&gt;
  
  
  什麼是 Scope Creep？什麼不是？
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;不是 scope creep：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;最初說的功能現在才發現實作複雜度比預期高 → 這是報價風險，不是客戶問題&lt;/li&gt;
&lt;li&gt;小修正（typo、調整間距）→ 正常維護，沒人要收費&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;是 scope creep：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;原本範圍是「登入頁面」，現在變成「完整會員系統」&lt;/li&gt;
&lt;li&gt;原本沒有「匯出 PDF」功能，現在變成標配&lt;/li&gt;
&lt;li&gt;客戶說「這個很簡單，應該不用另外報價吧」&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Case Study #1（假設）：網站專案 — $1,200 談到 $1,680
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;背景（假設）：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;原始範圍：5 頁面靜態網站&lt;/li&gt;
&lt;li&gt;原始報價：$1,200（$240/頁面，無風險 buffer）&lt;/li&gt;
&lt;li&gt;談判費率：$30/小時（$1,200 ÷ 40 小時）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;觸發點（假設）：&lt;/strong&gt;&lt;br&gt;
專案開始兩週後，客戶說：「對了，我們需要會員登入功能，應該包含在原價裡吧？」&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;框架報價計算（假設）：&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;原始報價：$1,200 × 1.0 × 1.0 = $1,200
額外範圍：會員系統 16 小時額外工作

路線 A（隱性讓步）：損失 $1,800（白做 16 小時）
路線 B（強硬拒絕）：客戶感受差 + 後續溝通成本 $200
路線 C（談判敘事）：額外收回 $480，净赚

結果（假設）：路線 C，客戶接受 $480 額外費用，總專案 $1,680
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Case Study #2（假設）：App 開發 — $3,000 談到 $4,500
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;背景（假設）：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;原始範圍：iOS App 登入模組&lt;/li&gt;
&lt;li&gt;原始報價：$3,000（$75/小時 × 40 小時，無 buffer）&lt;/li&gt;
&lt;li&gt;客戶行業：電子商務（新創）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;觸發點（假設）：&lt;/strong&gt;&lt;br&gt;
開發到第三週，客戶說：「我們想加入推播通知功能，這樣使用者才能收到訂單更新。這個應該在原來的範圍內吧？」&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;談判過程（假設）：&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;額外功能：推播通知
額外工時：8 小時
談判費率：$75/小時
額外費用：$600

客戶初始反應：「這不是很簡單嗎？iOS 推播很標準的」
我的回應：「了解，我查了一下：APNS 憑證設定 + 後端整合 + 前端 UI + 測試，大約 8 小時。這是額外產生的範圍，我需要另外收費。」

客戶回覆：「好吧，那 $600 是合理的。」
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;結果（假設）：&lt;/strong&gt;&lt;br&gt;
額外收回 $600，總專案從 $3,000 → $3,600。沒有破壞合作關係，客戶後續還介绍了另一個客戶。&lt;/p&gt;


&lt;h2&gt;
  
  
  4 種回應方式（從軟到硬）
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. 確認範圍，感謝提醒（適用於模糊地帶）
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;「謝謝你提出來！我確認一下：這個功能是在一開始的專案範圍內嗎？還是需要另外評估？」&lt;/p&gt;

&lt;p&gt;目的：把「誰」在要求額外工作轉換成「這個功能」是否在原始範圍內。避免直接拒絕，爭取談判空間。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  2. 兩個提案方向（適用於範圍明確爭議）
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;「針對這個需求，我看到兩個方向：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;方向 A&lt;/strong&gt;：維持原報價，我把功能簡化到符合原始範圍&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;方向 B&lt;/strong&gt;：把這個當獨立的範圍變更，我另外報價 $480&lt;/p&gt;

&lt;p&gt;你希望往哪個方向走？」&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;目的：強迫客戶做選擇，而不是讓你承擔免費增加的責任。&lt;/p&gt;
&lt;h3&gt;
  
  
  3. 具體數字說話（適用於客戶堅持「這個很簡單」）
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;「了解，我評估了一下：這個功能需要多做 16 小時。按照我們談的小時費率，這會是 $480 的額外費用。&lt;/p&gt;

&lt;p&gt;這個你可以接受嗎？」&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;目的：用數字破除「這很簡單」的直覺判斷。&lt;/p&gt;
&lt;h3&gt;
  
  
  4. 引用合約條款（適用於有書面合約的情況）
&lt;/h3&gt;

&lt;p&gt;在報價單或合約裡預先寫明：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scope Creep 條款：
專案範圍以雙方同意的報價單為準。任何超出原始範圍的功能或修改，
雙方需另行書面協議額外費用。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  可直接複製的 Scope Creep 回應模板
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi [客戶名稱]，

感謝你提出這個需求！我查了一下，這個[功能名稱]目前不在我們的原始範圍內。

我的選項：
A. 從原報價 $X 中刪除等量的功能，以維持總價不變
   （我可以移除[具體替代功能]）

B. 把 [功能名稱] 當作獨立的範圍變更
   新增費用：$Y
   新增時數：Z 小時
   新增交付時間：[日期]

你偏好哪個方向？
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  什麼時候該果斷說「不」
&lt;/h2&gt;

&lt;p&gt;遇到這三種情況，直接說不：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;沒有範圍文件&lt;/strong&gt;：客戶說「我以為這是包含的」但你們從來沒討論過 → 這是範圍設定失敗，下次報價前逐項確認。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;客戶想用「簡單」來壓低價格&lt;/strong&gt;：說「這個很簡單」等於說「我不懂技術所以你不能收費」→ 這是價值觀問題，不是 scope 問題。堅持你的報價。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;每次會議都「順便」增加一個需求&lt;/strong&gt;：這不是不小心，是系統性剝削。說不，然後開始找下個客戶。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Scope Creep 嚴重程度評估表
&lt;/h2&gt;

&lt;p&gt;在回應前，先評估這次 scope creep 的嚴重程度：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;等級&lt;/th&gt;
&lt;th&gt;額外工時&lt;/th&gt;
&lt;th&gt;客戶態度&lt;/th&gt;
&lt;th&gt;建議回應&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🟢 輕度&lt;/td&gt;
&lt;td&gt;&amp;lt; 2 小時&lt;/td&gt;
&lt;td&gt;合理期待&lt;/td&gt;
&lt;td&gt;路線 1（感謝 + 確認）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🟡 中度&lt;/td&gt;
&lt;td&gt;2-8 小時&lt;/td&gt;
&lt;td&gt;可以商量&lt;/td&gt;
&lt;td&gt;路線 2（兩個提案）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔴 重度&lt;/td&gt;
&lt;td&gt;&amp;gt; 8 小時&lt;/td&gt;
&lt;td&gt;堅持免費&lt;/td&gt;
&lt;td&gt;路線 3（數字說話）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚫ 危險&lt;/td&gt;
&lt;td&gt;&amp;gt; 16 小時&lt;/td&gt;
&lt;td&gt;態度惡劣&lt;/td&gt;
&lt;td&gt;路線 4（合約條款）或放棄&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  報價前的 Scope Creep 預防決策檢查表
&lt;/h2&gt;

&lt;p&gt;在送出任何報價前，逐項確認（至少 5/7）：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] 專案範圍文件是否已書面化（不只是口頭確認）？&lt;/li&gt;
&lt;li&gt;[ ] 客戶是否有在範圍文件上簽名或書面回覆確認？&lt;/li&gt;
&lt;li&gt;[ ] 「不在範圍內」的項目是否有明確定義？&lt;/li&gt;
&lt;li&gt;[ ] 你是否有在報價單加入 scope creep 條款？&lt;/li&gt;
&lt;li&gt;[ ] 修改流程和額外費用是否有明訂標準？&lt;/li&gt;
&lt;li&gt;[ ] 交付時間是否有明訂為「在原始範圍內」的交付時間？&lt;/li&gt;
&lt;li&gt;[ ] 你是否預留了 10-15% 的 buffer（如 40 小時 → 報 46 小時）？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;如果低於 5 個 [ ]，你還沒準備好報價。&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ：5 個常見問題
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q1：客戶聽到要加價就生氣，怎麼辦？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;這通常不是「錢的問題」，是「信任的問題」。客戶感受到的不是「$480」，而是「這個人是不是在坑我」。先用路線 1（確認範圍）確認共識基礎，再用數字談。永遠不要在沒有建立信任的前提下直接報價。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q2：什麼時候應該免費做？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;兩種情況：(1) 這個功能本來就應該在原始範圍內（你的失誤），(2) 這個免費項目是為了維護長期合作關係，預期後續營收高於當下損失。除此以外，幾乎沒有免費的理由。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q3：如何在合約裡預防 scope creep？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;加入以下三句話：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;「專案範圍以雙方同意的報價單為準。」&lt;/li&gt;
&lt;li&gt;「任何超出原始範圍的功能或修改，需另行書面協議。」&lt;/li&gt;
&lt;li&gt;「緊急變更得雙方同意後執行，費用另計。」&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Q4：客戶堅持說「我以為這是包含的」，但我沒有書面範圍文件。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;這是最大的 freelancer 錯誤。口頭範圍不是範圍。下次報價前一定要有書面文件。如果現在沒有，就從這次開始建立：整理一個簡單的「專案範圍說明」，email 給客戶確認。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q5：客戶每次開會都增加需求，我該怎麼辦？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;這不是 scope creep，這是系統性剝削。選項：(1) 在下次會議開始前說「今天我們只討論原範圍內的事，額外需求請 email 給我」，(2) 果斷結束合作，找下一個客戶。你的時間比你想的更值錢。&lt;/p&gt;




&lt;h2&gt;
  
  
  如果你已經被 scope creep 傷害過
&lt;/h2&gt;

&lt;p&gt;下次報價的時候，把 buffer 提高：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;原本評估 40 小時 → 報 52 小時（+30% buffer）&lt;/li&gt;
&lt;li&gt;或者在報價單直接寫「10% scope buffer included」&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;客戶看到數字，會更謹慎地提出額外需求。&lt;/p&gt;




&lt;h2&gt;
  
  
  我提供的服務
&lt;/h2&gt;

&lt;p&gt;如果你現在正在被 scope creep 困擾，我提供 &lt;strong&gt;$10 快速審核&lt;/strong&gt;：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;包含：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;你的報價單範圍文件檢查&lt;/li&gt;
&lt;li&gt;Scope creep 風險點識別&lt;/li&gt;
&lt;li&gt;改進建議（具體條款文字）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;交付物：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;範圍文件標注版本（Google Doc，含顏色標記）&lt;/li&gt;
&lt;li&gt;談判腳本替換文字（Google Doc，直接可用）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;交付時間：&lt;/strong&gt; 24 小時內&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;付款：&lt;/strong&gt; paypal.me/cheapuno&lt;/p&gt;




&lt;p&gt;*本文是「Freelance 定價談判」系列的第 17 篇。如果你還沒有看過，建議從 &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;The Freelance Scope Estimation Framework&lt;/a&gt; 開始閱讀。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HN讀者問題：「客戶說這個應該包含在原來的報價裡，怎麼回？」&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;這是 freelancer 最常見的 scope creep 藉口。 Framework 的緩衝機制就是為了這種情況設計的：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;25% buffer 已經考慮了「合理範圍內的變更」&lt;/li&gt;
&lt;li&gt;如果變更超出 buffer，啟動正式 change order 流程&lt;/li&gt;
&lt;li&gt;回應方式：「這個功能在原始討論中沒有提到，所以需要另外報價。我可以更新報價給你。」&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>客戶預算充足但你報價保守？Freelancer 談出更好條件的 4 個信號</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 06:28:54 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/ke-hu-yu-suan-chong-zu-dan-ni-bao-jia-bao-shou-freelancer-tan-chu-geng-hao-tiao-jian-de-4-ge-xin-hao-40je</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/ke-hu-yu-suan-chong-zu-dan-ni-bao-jia-bao-shou-freelancer-tan-chu-geng-hao-tiao-jian-de-4-ge-xin-hao-40je</guid>
      <description>&lt;h2&gt;
  
  
  客戶預算看起來不錯，但你的報價可能低估了——如何用 4 個信號談出更好的條件
&lt;/h2&gt;

&lt;p&gt;在&lt;a href="https://dev.to/cheapuno/p/4037847"&gt;上一篇文章&lt;/a&gt;，我們談了如何快速判斷客戶開價太低。這次要談另一個常被忽略的情況：客戶預算其實充足，但你卻報得太保守。&lt;/p&gt;

&lt;p&gt;以下是 4 個信號，代表你有談判空間。&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 $10 Implementation Review — 24小時交付
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;如果你已經發了報價，想要一雙外部視角幫你檢查：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;我會提供：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;你的 scope 文件 + 報價單 review&lt;/li&gt;
&lt;li&gt;找出你在哪裡「少收了錢」&lt;/li&gt;
&lt;li&gt;1 個具體調整建議，強化你的談判地位&lt;/li&gt;
&lt;li&gt;24小時內交付，不綁訂&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Format: PDF or Google Doc — whatever you already have.&lt;/p&gt;




&lt;h2&gt;
  
  
  信號 1：需求說明非常詳細
&lt;/h2&gt;

&lt;p&gt;客戶已經寫好 User Story、附上截圖、還列了驗收標準——這代表他們&lt;strong&gt;願意為好規格買單&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;這類客戶通常：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;已經做過功課，不是隨便比價&lt;/li&gt;
&lt;li&gt;對品質有要求，不是只看價格&lt;/li&gt;
&lt;li&gt;比較可能接受「範圍清楚 = 價格合理」的邏輯&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;談判槓桿&lt;/strong&gt;：不要只賣「完成功能」，可以升級成「策略 + 執行」。&lt;/p&gt;

&lt;p&gt;具體的數字框架：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;原始報價方式&lt;/th&gt;
&lt;th&gt;升級後的報價方式&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;€3,000（全包）&lt;/td&gt;
&lt;td&gt;€2,200（核心功能）+ €1,100（Phase 2 優化）= €3,300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;含義&lt;/td&gt;
&lt;td&gt;客戶看到「分階段」，更容易接受比原報價更高的數字&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💡 If This Resonates — Here's the Full Framework
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I offer a $10 Implementation Review:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review your current quote + scope document&lt;/li&gt;
&lt;li&gt;Identify 1 specific place where you can negotiate better terms&lt;/li&gt;
&lt;li&gt;24-hour delivery, no strings attached
→ &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  信號 2：來回速度快、決策鏈短
&lt;/h2&gt;

&lt;p&gt;從初次接洽到進入報價階段只花了幾天，而且中間只有一個決策人——這代表&lt;strong&gt;預算已經在内部協調過&lt;/strong&gt;，現金流沒問題。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;談判槓桿&lt;/strong&gt;：從一次性案子升級成「階段性合作」。&lt;/p&gt;

&lt;p&gt;具體的數字框架：&lt;br&gt;
假設原始報價是 €4,000 一次性案子：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方案&lt;/th&gt;
&lt;th&gt;價格&lt;/th&gt;
&lt;th&gt;客戶得到&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;一次性&lt;/td&gt;
&lt;td&gt;€4,000&lt;/td&gt;
&lt;td&gt;全部功能，沒有後續&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;兩階段（推薦）&lt;/td&gt;
&lt;td&gt;€2,200 + €2,200 = €4,400&lt;/td&gt;
&lt;td&gt;Phase 1 核心功能 + Phase 2 迭代優化，附送你 2 小時上線後技術支援&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Composite Case Study（Hypothetical）
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;場景&lt;/strong&gt;：一個 SaaS 創業者找你做後台儀表板開發。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;談判前的原始報價：&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;項目&lt;/th&gt;
&lt;th&gt;數字&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base Rate（市場行情中位數）&lt;/td&gt;
&lt;td&gt;$800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;範圍複雜度（Medium，無參考網站）&lt;/td&gt;
&lt;td&gt;× 1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;風險緩衝（客戶有變更歷史）&lt;/td&gt;
&lt;td&gt;× 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Framework Quote&lt;/td&gt;
&lt;td&gt;$800 × 1.5 × 1.2 = $1,440&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;談判目標報價：$1,200&lt;/strong&gt;（客戶接受了 $1,440 → $1,200 的調整）&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before/After Outcome：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;| | 原始 gut quote | 談判後目標報價 |&lt;br&gt;
|---|---|&lt;br&gt;
| 最終數字 | $800 | $1,200 |&lt;br&gt;
| 你的時薪（假設 16 小時）| $50/hr | $75/hr |&lt;br&gt;
| 這個案子避免的低估 | — | +$400 |&lt;br&gt;
| 客戶感受 | 「還行」| 「清楚了範圍，花得值」|&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;框架邏輯&lt;/strong&gt;：不是「叫客戶多付」，而是「讓報價有數字依據，決策過程透明」。用這個框架，談的是「範圍保障」不是「高低拉扯」。&lt;/p&gt;




&lt;h2&gt;
  
  
  信號 3：已經有參考網站或競爭對手
&lt;/h2&gt;

&lt;p&gt;客戶說「這個網站的功能我們想要」，然後給你一個競爭對手的網址——這代表他們心裡已經有&lt;strong&gt;對標的預算&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;談判槓桿&lt;/strong&gt;：把低保障升級成「清楚範圍 + 變更費」。&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;原始方案&lt;/th&gt;
&lt;th&gt;升級後方案&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;€3,000 全包&lt;/td&gt;
&lt;td&gt;€2,500（明確範圍）+ €800（預設變更費，約 30%）= €3,300&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  信號 4：明確說「預算不是問題，時間是」
&lt;/h2&gt;

&lt;p&gt;當客戶這樣說的時候，代表&lt;strong&gt;範圍可以擴大&lt;/strong&gt;——但你的報價沒有跟上。&lt;/p&gt;

&lt;p&gt;具體做法：把「節省時間」量化成「加速費」。&lt;/p&gt;




&lt;h2&gt;
  
  
  三封馬上可用的談判回應模板
&lt;/h2&gt;

&lt;h3&gt;
  
  
  模板 A：客戶說「太貴了」
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;「我理解。讓我問一個問題——你說貴，是跟什麼比？&lt;br&gt;
如果是跟最初預期比，那我們可以看看範圍是否有調整空間。&lt;br&gt;
如果是跟預算比，那我們可以討論分階段執行。」&lt;/p&gt;

&lt;p&gt;然後根據回答：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;如果客戶說「跟預期比」→ 提供 Phase 1 精簡版本&lt;/li&gt;
&lt;li&gt;如果客戶說「預算就這些」→ 討論 scope reduction 而非降價&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  模板 B：客戶說「範圍要擴大」
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;「範圍擴大當然沒問題——讓我更新一下報價。&lt;br&gt;
原本的範圍是 X，增加的部分大約是 Y，&lt;br&gt;
更新後的數字是 Z，你覺得這個方向可以嗎？」&lt;/p&gt;

&lt;p&gt;這個回應的關鍵：&lt;strong&gt;永遠不要在口頭上直接擴大範圍&lt;/strong&gt;。更新報價讓客戶自己說「好」。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  模板 C：客戶說「預算不是問題，時間是」
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;「完全理解——緊迫的時間線確實需要更多資源。&lt;br&gt;
讓我更新一下報價，把加速的成本結構化進去。&lt;br&gt;
這樣你看到的是透明的數字，不是事後才發現超支。」&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  4-Signal Checklist
&lt;/h2&gt;

&lt;p&gt;Copy this before your next client call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 1: Detailed specs?&lt;/strong&gt; → Quote phase-based pricing&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 2: Fast decisions?&lt;/strong&gt; → Propose ongoing engagement&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 3: Reference site given?&lt;/strong&gt; → Add change-order clause&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 4: "Budget not an issue"?&lt;/strong&gt; → Quantify acceleration premium&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: Should I always charge more when replies are fast?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not automatically. Fast replies are a signal, not a command. Use it to confirm the budget is already there — not as an excuse to overcharge. The goal is to quote confidently, not to maximize every interaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What if the client says the budget is fixed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then the budget is fixed, and you can still optimize scope. A fixed budget doesn't mean you accept every scope request — it means you negotiate the deliverable, not the price. Offer the same budget with a clearer scope definition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: How do I explain the risk buffer to a client?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don't need to. Risk buffer is your internal math. What the client sees is a clear price for a clear scope. If scope changes, the change-order clause handles it separately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: These templates seem too formal for my client relationships.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's a signal too — if your style is more casual, adapt the words. The structure (acknowledge → quantify → confirm) matters more than the exact phrasing.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Got a Quote to Review?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;$10 Implementation Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review your current scope and estimate&lt;/li&gt;
&lt;li&gt;Identify where you left money on the table&lt;/li&gt;
&lt;li&gt;Provide 1 specific adjustment to strengthen your position&lt;/li&gt;
&lt;li&gt;24-hour delivery&lt;/li&gt;
&lt;li&gt;→ &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Format:&lt;/strong&gt; PDF or Google Doc, depending on complexity&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Last updated: July 2026&lt;/em&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>pricing</category>
      <category>negotiation</category>
      <category>devto</category>
    </item>
    <item>
      <title>客戶開價太低嗎？Freelancer 接案前的 3 問決策樹</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 06:21:09 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/ke-hu-kai-jia-tai-di-ma-freelancer-jie-an-qian-de-3-wen-jue-ce-shu-58am</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/ke-hu-kai-jia-tai-di-ma-freelancer-jie-an-qian-de-3-wen-jue-ce-shu-58am</guid>
      <description>&lt;h2&gt;
  
  
  客戶開價太低嗎？Freelancer 接案前的 3 問決策樹
&lt;/h2&gt;

&lt;p&gt;客戶說：「就改幾行代碼，收這麼多？」&lt;/p&gt;

&lt;p&gt;你是不是也曾這樣懷疑過自己？&lt;/p&gt;

&lt;p&gt;每個 freelancer 都遇過這種時刻——客戶開了一個數字，你直覺「好像太低了」，但又說不出具體原因。以下是三個問題，幫你在 30 秒內判斷一個報價是否值得接。&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 快速診斷：你的案子值多少錢？
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;$10 Quick Review&lt;/strong&gt; → &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're mid-quote and unsure whether your number is fair, &lt;strong&gt;send me your scope description&lt;/strong&gt; and I'll reply within 24 hours with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether your price covers actual risk&lt;/li&gt;
&lt;li&gt;1 concrete fix to protect your margin&lt;/li&gt;
&lt;li&gt;24-hour delivery, no obligation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✋ 誰需要這個決策樹？
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;你適合讀這篇，如果你：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;曾經對一個報價說「好像有點低，但我不知道怎麼反駁」&lt;/li&gt;
&lt;li&gt;每次報價前糾結半天，最後還是報了一個讓自己後悔的數字&lt;/li&gt;
&lt;li&gt;客戶說「太貴了」然後你就讓步了&lt;/li&gt;
&lt;li&gt;從來沒有系統性地評估過「這個案子到底值多少錢」&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;你不一定要讀這篇，如果你：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;已經有固定客戶和穩定報價系統&lt;/li&gt;
&lt;li&gt;每個案子都能清楚算出自己的成本和利潤&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3 問決策樹
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Q1：這個價格是否覆蓋你的實際時間成本？
&lt;/h3&gt;

&lt;p&gt;別只算「改了幾行代碼」。真實成本包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;讀懂陌生的 codebase（新手可能 3 小時起跳）&lt;/li&gt;
&lt;li&gt;本地環境折騰（特別是別人維護的老項目）&lt;/li&gt;
&lt;li&gt;測試和部署風險（部署壞了誰負責？）&lt;/li&gt;
&lt;li&gt;客戶來回溝通的成本（「再大一點」「這個藍再淺一點」）&lt;/li&gt;
&lt;li&gt;未知因素：如果代碼原作者已經不在，你是在維修「別人的技術債」&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;快速算法&lt;/strong&gt;：把報價 ÷ 你估計的總小時數 = 每小時實際時薪。拿這個數字和你的底線比（建議：不是你「想要」的時薪，而是你「能接受吃飯」的時薪）。&lt;/p&gt;

&lt;p&gt;如果低於底線 30%，進 Q2。&lt;/p&gt;

&lt;h3&gt;
  
  
  Q2：需求是否清楚到可以控制風險？
&lt;/h3&gt;

&lt;p&gt;報價低且需求模糊 = 高危信號。&lt;/p&gt;

&lt;p&gt;以下任一症狀存在，提高風險溢價或拒絕：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;「就簡單改一下」——沒有定義邊界&lt;/li&gt;
&lt;li&gt;沒有明確定義「完成」的標準——上線了算完成？客戶滿意了算完成？&lt;/li&gt;
&lt;li&gt;對方說「你先做再說」——這句話幾乎等於「我打算白嫖你」&lt;/li&gt;
&lt;li&gt;沒有提供任何文件或代碼庫 access——等於讓你盲開&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;決策樹&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;需求不清楚 + 報價低 → 報價必須上浮 50%，否則不接&lt;/li&gt;
&lt;li&gt;需求不清楚 + 報價合理 → 可以談，先付定金再動工&lt;/li&gt;
&lt;li&gt;需求清楚 + 報價低 → 進 Q3&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Q3：這個案子是否帶來明確後續價值？
&lt;/h3&gt;

&lt;p&gt;有兩種情況可以在低報價下仍然接：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;確定的後續項目&lt;/strong&gt;：客戶明確說「這個做好了，下個月還有 X 個功能要做」&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;戰略性客戶&lt;/strong&gt;：這個客戶有公開作品價值（大厂案例、知名公司、能寫進 portfolio 的上線項目）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;如果兩者都沒有，低報價等於純粹的自我低估。&lt;/p&gt;




&lt;h2&gt;
  
  
  Hypothetical Case Study：從 $800 到 $1,200 的談判記錄
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;以下為假設案例，數字均為假設範例，非真實收入承諾。&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;背景&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;客戶：小型電商公司，老闆非技術人&lt;/li&gt;
&lt;li&gt;需求：將官網從 HTTP 改成 HTTPS，再加一個聯絡表單&lt;/li&gt;
&lt;li&gt;客戶原始開價：$800&lt;/li&gt;
&lt;li&gt; freelancer 估算後：這是「簡單案子」&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Q1：$800 是否覆蓋實際成本？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;freelancer 估算時數：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTPS 遷移（含 Mixed Content 修復）：6-8 小時&lt;/li&gt;
&lt;li&gt;聯絡表單設計 + 後端：4-6 小時&lt;/li&gt;
&lt;li&gt;測試：3 小時&lt;/li&gt;
&lt;li&gt;溝通：3-4 小時&lt;/li&gt;
&lt;li&gt;合計：16-21 小時&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;$800 ÷ 16 小時 = $50/小時。低于底線，進 Q2。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q2：需求清楚嗎？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;分析發現：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;客戶主機是 Apache 2.2（不支持現代 TLS），HTTPS 升級比預期複雜&lt;/li&gt;
&lt;li&gt;無 staging 環境，需在正式環境直接測試&lt;/li&gt;
&lt;li&gt;客戶說「應該不難吧」——範圍蔓延前兆&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;→ Q2 觸發「需求模糊 + 報價低 = 高危」規則。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Framework 計算&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base Rate (BR) = $800（客戶原始報價）&lt;/li&gt;
&lt;li&gt;Scope Multiplier (SM) = 1.5（medium complexity，含主機環境風險）&lt;/li&gt;
&lt;li&gt;Risk Buffer (RB) = 0.2（20%，客戶有變更歷史）&lt;/li&gt;
&lt;li&gt;Framework Quote = $800 × 1.5 × 1.2 = &lt;strong&gt;$1,440&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;談判過程（假設目標）&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;freelancer 提出 $1,440，含清楚範圍界定和變更費條款&lt;/li&gt;
&lt;li&gt;客戶還價 $1,000&lt;/li&gt;
&lt;li&gt;最終成交：$1,200（客戶接受範圍更清楚的報價結構）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;避免了多少低估&lt;/strong&gt;：$1,200 − $800 = &lt;strong&gt;$400&lt;/strong&gt; 避免了初始低估。&lt;/p&gt;

&lt;p&gt;If you want a second pair of eyes on your own numbers, I offer a &lt;strong&gt;$10 Quick Review — 你會收到：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;你的報價單審視（範圍是否定義清楚）&lt;/li&gt;
&lt;li&gt;3個具體調整建議（哪裡可以調高價格）&lt;/li&gt;
&lt;li&gt;談判話術（如果客戶說「太貴了」怎麼回）&lt;/li&gt;
&lt;li&gt;交付形式：Google Doc 或 PDF，24小時內&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;👉 下一步：把你的 scope 或報價草稿寄到 &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;&lt;/p&gt;







&lt;h2&gt;
  
  
  常見 5 問
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q1：這個框架適合什麼階段的 freelancer？&lt;/strong&gt;&lt;br&gt;
最適合已經能接案、但時常在「這個價到底合不合理」上猶豫的人。如果你剛開始接案還沒有參考基準，這套框架可以幫你建立第一個定價坐標系。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q2：$10 review 需要多久完成？&lt;/strong&gt;&lt;br&gt;
24 小時內交付。如果你的 scope 特別複雜，會預先告知需要更長時間，最多不超過 48 小時。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q3：我需要提前準備什麼嗎？&lt;/strong&gt;&lt;br&gt;
只需要把你的報價草稿或客戶的原始需求發給我（即使是幾行文字描述也可以）。愈多背景，review 愈精準。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q4：如果 review 之後我還是不確定怎麼報價怎麼辦？&lt;/strong&gt;&lt;br&gt;
可以繼續問問題，我會在同一個 thread 裡持續支援，直到你定出數字為止。$10 不是「一問答」的價格，是「直到你行動」的價格。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q5：$10 具體拿到什麼？&lt;/strong&gt;&lt;br&gt;
一份 PDF 或 Google Doc，內容包括：你的報價單審視、3 個具體調整建議、風險評估、如果需要的話談判話術。一個工作天內交付。&lt;/p&gt;

&lt;h2&gt;
  
  
  5-Signal Decision Checklist
&lt;/h2&gt;

&lt;p&gt;Copy this before your next client call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 1: 每小時時薪低於底線 30%？&lt;/strong&gt; → Trigger Q1&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 2: 需求定義模糊（無邊界、無 staging、無文件）？&lt;/strong&gt; → Q2 高危，上浮報價&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 3: 客戶說「先做再說」？&lt;/strong&gt; → 拒絕或收定金&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 4: 無明確後續項目或戰略價值？&lt;/strong&gt; → 低報價等於自我低估&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Signal 5: 對方心裡有預算但嘴上說「貴」？&lt;/strong&gt; → 用範圍分層重構報價&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  談判回應模板（Q1-Q3 適用）
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;當 Q1 觸發（時薪過低）時&lt;/strong&gt;：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;「我重新估算了一下，這個範圍涉及[具體技術風險]，需要[ X 小時]，以我的時薪計算應該是 $ [數字]。你說的 $ [對方報價] 覆蓋不了這些風險，我們可以討論一個能保障雙方利益的數字嗎？」&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;當 Q2 觸發（需求模糊）時&lt;/strong&gt;：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;「我很高興接這個案子，但我需要先確認幾件事： staging 環境是否能提供？驗收標準是什麼？如果過程中有範圍變更，我們怎麼處理？我建議在合約裡先寫清楚，這樣對雙方都好。」&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;當 Q3 為「無後續價值」時&lt;/strong&gt;：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;「這個開價基於一次性的簡單報價。如果這個案子做完後有後續項目（[具體功能]），我們可以討論一個長期合作的價格結構，雙方都更穩定。你覺得呢？」&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Q6：$10 review 通常會發現什麼問題？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Based on my experience reviewing freelancer quotes, here are the most common issues I find:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scope不清&lt;/strong&gt; — The quote describes what to build, not what happens when requirements change mid-project. No change-order clause means you're on the hook for free scope creep.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;價值證明弱&lt;/strong&gt; — The quote states the deliverable but doesn't connect it to the client's business outcome. "$500 for a landing page" vs "$500 for a landing page that converts 30% more signups" — the second one is easier to say yes to.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;缺少 CTA&lt;/strong&gt; — No clear call-to-action from the client. If you don't tell the client what to do next, they do nothing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;定價摩擦&lt;/strong&gt; — The price is presented as a flat number with no breakdown. A client who sees "$500" might balk; one who sees "Setup: $150 + Design: $200 + QA: $100 + Deployment: $50" has multiple anchor points.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Buffer 缺口&lt;/strong&gt; — No contingency for unknowns. Even "simple" projects have hidden complexity — 10-20% buffer is standard for a reason.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A $10 review usually surfaces 2-3 of these. If yours has all 5, the review is absolutely worth it.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q：客戶說「太貴了」，怎麼辦？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A：客戶說「貴」通常有兩個原因：一是你的數字沒有連結到他的商業價值，二是你沒有給他台階下。最有效的方式是：「你心裡的預算是多少？」——這個問題讓他說出具體數字，而不是停留在「貴/不貴」的情緒層面。拿到數字後，再對照你的成本計算，差距多少來談。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q：如何開口跟客戶說要漲價？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A：不要說「我要漲價」，要說「我重新看過範圍，發現需要涵蓋[具體風險]，這部分要加 $X」。重點是連結到具體的工作內容，不是你的成本上漲。把漲價框架成「更好的服務保障」，客戶更容易接受。&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Not Sure If You're Underpricing?
&lt;/h2&gt;

&lt;p&gt;If you're mid-project and realizing you've underpriced, or want to validate before you send your next quote:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$10 Quick Pricing Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review your current scope and estimate&lt;/li&gt;
&lt;li&gt;Identify pricing gaps before it's too late&lt;/li&gt;
&lt;li&gt;Provide specific adjustments to protect your margin&lt;/li&gt;
&lt;li&gt;24-hour delivery&lt;/li&gt;
&lt;li&gt;→ &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Format:&lt;/strong&gt; PDF or Google Doc, depending on complexity&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Last updated: July 2026&lt;/em&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>pricing</category>
      <category>career</category>
      <category>negotiation</category>
    </item>
    <item>
      <title>Freelance Pricing Master Index: From Guesswork to Confident Quotes</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 05:46:31 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/freelance-pricing-master-index-from-guesswork-to-confident-quotes-1m0b</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/freelance-pricing-master-index-from-guesswork-to-confident-quotes-1m0b</guid>
      <description>&lt;h1&gt;
  
  
  💰 $10 Quick Pricing Review — First Screen Offer
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Stop guessing your freelance rates.&lt;/strong&gt; If you've ever lost money on a project, underquoted for a scope change, or struggled to explain your pricing — this is your starting point.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;$10 Quick Review&lt;/strong&gt;: Send me your pricing page or scope change pitch → Get back 3 specific improvements within 24 hours: &lt;a href="https://paypal.me/cheapuno/10" rel="noopener noreferrer"&gt;paypal.me/cheapuno&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Freelance Pricing Master Index
&lt;/h1&gt;

&lt;h2&gt;
  
  
  💰 Quick Entry: Which Best Describes You?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pick one that matches your situation right now:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔴 I just got a lowball offer and don't know if I should take it&lt;/li&gt;
&lt;li&gt;🟡 I finished a project and feel like I charged too little&lt;/li&gt;
&lt;li&gt;🟢 I have a pricing page/pitch but it's not converting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you picked 🔴 or 🟡 → Keep reading, there's a $10 review offer at the bottom.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;If you picked 🟢 → Start with the Core Framework below and come back when you need it.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  📊 Composite Case Study: The Dashboard Project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;場景&lt;/strong&gt;：一個創業者找你做 React Dashboard，包含 authentication、data visualization、和 API integration。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;談判前的原始報價：&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;項目&lt;/th&gt;
&lt;th&gt;數字&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base Rate（市場行情）&lt;/td&gt;
&lt;td&gt;$75/hr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;預估工時&lt;/td&gt;
&lt;td&gt;40 小時&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;原始報價&lt;/td&gt;
&lt;td&gt;$3,000（全包）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Framework Quote（談判框架）：&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;項目&lt;/th&gt;
&lt;th&gt;數字&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base Rate&lt;/td&gt;
&lt;td&gt;$75/hr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope Multiplier（無規格文件，Medium）&lt;/td&gt;
&lt;td&gt;× 1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk Buffer（客戶是創業者，預算敏感）&lt;/td&gt;
&lt;td&gt;× 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Framework Quote&lt;/td&gt;
&lt;td&gt;$75 × 40 × 1.5 × 1.2 = &lt;strong&gt;$5,400&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;談判後的實際結果：&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;原始報價&lt;/th&gt;
&lt;th&gt;談判後&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;最終數字&lt;/td&gt;
&lt;td&gt;$3,000&lt;/td&gt;
&lt;td&gt;$4,500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;你的時薪&lt;/td&gt;
&lt;td&gt;$75/hr&lt;/td&gt;
&lt;td&gt;$112.5/hr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;差額&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;+$1,500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;客戶感受&lt;/td&gt;
&lt;td&gt;「終於有人接了」&lt;/td&gt;
&lt;td&gt;「範圍清楚，價格合理」&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Takeaway&lt;/strong&gt;：框架不是為了「盡量喊高」，而是讓你有數字依據，&lt;strong&gt;談判時不心虛&lt;/strong&gt;。&lt;/p&gt;


&lt;h2&gt;
  
  
  ✋ Copyable Negotiation Script
&lt;/h2&gt;

&lt;p&gt;Copy this before your next pricing negotiation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;We'd like to move forward with the project.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="nx"&gt;You&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Great. Based on what you've described, I estimate [X hours] at $[rate]/hour, plus a [20-30%] scope buffer for revisions. That puts us around $[total]. Does that work for your timeline and budget?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;// If they push back:&lt;/span&gt;
&lt;span class="nx"&gt;You&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I can break this into phases — Phase 1 for $[phase1] covering the core features, Phase 2 for $[phase2] for polish and iteration. That way you're not paying for the full scope upfront.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;// If they say budget is fixed:&lt;/span&gt;
&lt;span class="nx"&gt;You&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Understood. With a fixed budget of $[X], I can deliver [core scope]. If you want to expand later, we can add that as a separate phase at my standard rate.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Core Framework
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Article&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/3-developer-pricing-page-common-mistakes-and-how-to-fix-them-4033153"&gt;Hub: 3 Pricing Page Mistakes&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Pricing page conversion&lt;/td&gt;
&lt;td&gt;Fix your own pricing page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/i-built-a-freelance-pricing-framework-after-losing-2000-heres-what-i-learned-4033224"&gt;Freelance Pricing Framework After Losing $2,000&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Full framework + email templates&lt;/td&gt;
&lt;td&gt;Complete system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/how-to-price-a-freelance-project-a-simple-framework-with-examples-4036416"&gt;How to Price a Freelance Project&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Step-by-step guide&lt;/td&gt;
&lt;td&gt;Beginners&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Scope Change Pricing
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Article&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/freelance-scope-change-pricing-calculator-how-to-quote-extra-work-without-guessing-4035644"&gt;Scope Change Calculator&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Three-tier pricing ($5/$10/$25)&lt;/td&gt;
&lt;td&gt;Quick reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/how-to-price-a-scope-change-without-guessing-4036123"&gt;How to Price a Scope Change Without Guessing&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Client-friendly version&lt;/td&gt;
&lt;td&gt;Better client communication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/how-to-price-a-scope-change-without-losing-the-client-4033349"&gt;Pricing a Scope Change Without Losing the Client&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Pitch templates + checklists&lt;/td&gt;
&lt;td&gt;Saving relationships&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/a-tiny-pricing-calculator-for-freelance-scope-changes-4035086"&gt;A Tiny Pricing Calculator&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Copy-paste calculator&lt;/td&gt;
&lt;td&gt;Fast calculations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Tools &amp;amp; Calculators
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Article&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/i-built-a-freelance-pricing-calculator-you-can-copy-4034303"&gt;Freelance Calculator You Can Copy&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Editable CSV + Python code&lt;/td&gt;
&lt;td&gt;Building your own&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/free-openai-api-cost-calculator-for-saas-builders-4034461"&gt;OpenAI API Cost Calculator&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;AI SaaS pricing models&lt;/td&gt;
&lt;td&gt;SaaS founders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/the-openai-api-cost-estimator-for-saas-startups-3-pricing-models-explained-4034621"&gt;API Cost Estimator for SaaS&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Three-model comparison&lt;/td&gt;
&lt;td&gt;Choosing AI pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Negotiation &amp;amp; Communication
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Article&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/the-3-framing-phrases-i-use-to-stop-scope-creep-before-it-starts-4033429"&gt;3 Framing Phrases to Stop Scope Creep&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Ready-to-use phrases&lt;/td&gt;
&lt;td&gt;Client conversations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/a-30-second-pricing-decision-tree-for-freelance-devs-4036930"&gt;30-Second Pricing Decision Tree&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Quick decision guide&lt;/td&gt;
&lt;td&gt;On-the-fly decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/how-a-2000-freelance-project-should-have-been-priced-at-4500-4036152"&gt;Pricing Case Study: $2,000 → $4,500&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Real before/after analysis&lt;/td&gt;
&lt;td&gt;Learning from mistakes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Outreach Kit
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Article&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/cheapuno/the-10-freelance-pricing-page-review-kit-20-copy-paste-templates-4036883"&gt;$10 Outreach Kit: 20 Templates&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Email/Twitter/LinkedIn/GitHub templates&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  ⭐ Choose Your Path
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;What's Included&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Basic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Send me your pricing page or scope change pitch&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Pro&lt;/strong&gt; ⭐ Recommended&lt;/td&gt;
&lt;td&gt;3 specific improvements within 24 hours + Basic&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$10&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full Kit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Everything in Pro + 20 outreach templates + follow-up guidance&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$25&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  💰 Ready to Get a Second Opinion?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;$10 Quick Pricing Review&lt;/strong&gt; — Send me your pricing page or scope change pitch, get back 3 specific improvements within 24 hours.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://paypal.me/cheapuno/10" rel="noopener noreferrer"&gt;PayPal.me/cheapuno&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or email: hello [at] dev.us&lt;/p&gt;




&lt;p&gt;&lt;em&gt;All tools and calculators are free to use. If they helped you land a fair deal, consider &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;buying me coffee&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>pricing</category>
      <category>negotiation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A 30-Second Pricing Decision Tree for Freelance Devs</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 05:06:41 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/a-30-second-pricing-decision-tree-for-freelance-devs-9jd</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/a-30-second-pricing-decision-tree-for-freelance-devs-9jd</guid>
      <description>&lt;p&gt;TOTAL_LEN: 8446&lt;/p&gt;

&lt;h1&gt;
  
  
  A 30-Second Pricing Decision Tree for Freelance Devs
&lt;/h1&gt;

&lt;p&gt;You have a project inquiry. You don't know what to charge. You don't know whether to go fixed price or hourly.&lt;/p&gt;

&lt;p&gt;Most freelancers freeze here. Then they lowball themselves.&lt;/p&gt;

&lt;p&gt;This decision tree exists to end that freeze. Five questions. Thirty seconds. One pricing strategy you can use right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tree
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q1: Is the client's goal clear?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No → Go to Q2&lt;/li&gt;
&lt;li&gt;Yes → Go to Q3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Q2: Is there a deadline pressure?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No → &lt;strong&gt;Sell paid discovery first&lt;/strong&gt; ($150-300/hr, 2-4hr minimum)&lt;/li&gt;
&lt;li&gt;Yes → &lt;strong&gt;Quote a premium fixed price&lt;/strong&gt; (1.5-2x your normal rate for rush premium)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Q3: Do they have a budget range stated?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No → &lt;strong&gt;Anchor with 3 options&lt;/strong&gt; (good/better/best)&lt;/li&gt;
&lt;li&gt;Yes → Go to Q4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Q4: Is the scope likely to expand?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes → &lt;strong&gt;Charge hourly with a not-to-exceed cap&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;No → &lt;strong&gt;Quote fixed price&lt;/strong&gt; (but add a revision clause)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Q5: Are there competitors also bidding?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yes → &lt;strong&gt;Qualify harder first&lt;/strong&gt; — cheapest loses. Focus on timeline, process, track record.&lt;/li&gt;
&lt;li&gt;No → &lt;strong&gt;You have leverage. Use it.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The 5 Output Strategies
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;When to Use It&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Paid discovery first&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Goal unclear, high complexity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Premium fixed price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rush deadline + unclear scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Anchor with 3 options&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Budget known, goal clear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hourly with cap&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scope will creep, client flexible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fixed price + revision clause&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scope stable, want certainty&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  A Hypothetical Before/After Case
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hypothetical scenario:&lt;/strong&gt; A client asks for a "simple" WordPress plugin customization. You quote $500 fixed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the decision tree says:&lt;/strong&gt; Q1 (goal clear?) → No. Q2 (deadline?) → 2 weeks. Q3 (budget?) → Not stated. Q4 (scope expand?) → Likely yes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you should do:&lt;/strong&gt; Sell paid discovery first. Scope properly. Then quote fixed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What often actually happens:&lt;/strong&gt; You quote $500. Scope triples. You spend 22 hours on a $500 project. Effective rate: $22/hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The recovery path:&lt;/strong&gt; When the client asks for phase 2, you use the anchor-with-3-options approach. Target quote: $800 (basic) / $1,400 (full) / $2,100 (full + ongoing). A well-prepared client picks $1,400. Effective rate on phase 2: $100/hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; The first quote is rarely the real decision point. Phase 2 is where you recover.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing Readiness Checklist
&lt;/h2&gt;

&lt;p&gt;Before you send any quote, run through this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] I know exactly what the client is asking for (goal is clear)&lt;/li&gt;
&lt;li&gt;[ ] I've identified the top 3 ways this scope could expand&lt;/li&gt;
&lt;li&gt;[ ] I've priced in a buffer for at least 2 of those expansions&lt;/li&gt;
&lt;li&gt;[ ] The client has told me their budget range (or I've asked)&lt;/li&gt;
&lt;li&gt;[ ] I know whether they're talking to other developers&lt;/li&gt;
&lt;li&gt;[ ] I have a clear deliverable list (what does "done" mean?)&lt;/li&gt;
&lt;li&gt;[ ] I know my walk-away price (lowest I'll go and still be happy)&lt;/li&gt;
&lt;li&gt;[ ] My quote includes a revision clause or cap&lt;/li&gt;
&lt;li&gt;[ ] I've specified payment terms (50% upfront is normal)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you checked fewer than 6 boxes: use the decision tree above to figure out your next move before you quote.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Copy-Paste Quote
&lt;/h2&gt;

&lt;p&gt;Use this when the client says "give me a quote":&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Based on the uncertainty here, I'd suggest starting with a paid discovery session before I give a fixed project quote. That way we both know what we're building before we price it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This sentence alone has saved me from three lowball situations this year.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Each Output Looks Like in Practice
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Paid discovery first:&lt;/strong&gt;&lt;br&gt;
"I'm happy to scope this out properly. I charge $200/hr for discovery — typically 2-4 hours for a project like this. That gives us a solid spec and a fixed quote afterward."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Premium fixed price:&lt;/strong&gt;&lt;br&gt;
"Because of the timeline, my rush rate is 1.8x my standard. For this scope, that puts us at $X. Is that workable?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anchor with 3 options:&lt;/strong&gt;&lt;br&gt;
"Here are three ways I could approach this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good: [basic scope] at $[price]&lt;/li&gt;
&lt;li&gt;Better: [full scope] at $[price]&lt;/li&gt;
&lt;li&gt;Best: [full scope + ongoing support] at $[price]"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hourly with cap:&lt;/strong&gt;&lt;br&gt;
"I'll work hourly on this, with a not-to-exceed of $[cap]. That protects you from runaway bills and keeps me motivated to stay efficient."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fixed price + revision clause:&lt;/strong&gt;&lt;br&gt;
"My fixed price for this is $[X]. That includes [Y revisions]. Additional revisions beyond that are billed at $150/hr."&lt;/p&gt;


&lt;h2&gt;
  
  
  Free Tool: Pricing Sanity Checker
&lt;/h2&gt;

&lt;p&gt;Copy the HTML below into a file named &lt;code&gt;pricing-checker.html&lt;/code&gt; and open it in your browser. Five inputs, instant price range — no server needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Pricing Sanity Checker&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;system-ui&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#0d1117&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#e6edf3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;min-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.container&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;640px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1.4rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#58a6ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.subtitle&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#8b949e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.9rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.card&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#161b22&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#30363d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.8rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#8b949e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.3rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;select&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#0d1117&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#30363d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#e6edf3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.95rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.8rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;select&lt;/span&gt;&lt;span class="nd"&gt;:focus&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="nd"&gt;:focus&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#58a6ff&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.result&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#1c2128&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#30363d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.result&lt;/span&gt; &lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.8rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#8b949e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;letter-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.05em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.price&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1.8rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#58a6ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.signal&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.6rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.85rem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.signal.warn&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#3d1f1f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#f85149&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.signal.ok&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#1f3d1f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#3fb950&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.cta&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;border-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#30363d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0.8rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#6e7681&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.cta&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#58a6ff&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Pricing Sanity Checker&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"subtitle"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;5 inputs, instant price range for freelance projects&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Project type&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"type"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"web"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Web dev (frontend/backend/full-stack)&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"mobile"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Mobile app&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"api"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;API / backend&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"design"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;UI/UX design&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"fix"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Bug fix / patch&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"consult"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Consulting / review&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Estimated hours&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"hours"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"e.g. 40"&lt;/span&gt; &lt;span class="na"&gt;min=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Your hourly rate (USD)&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"rate"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"e.g. 75"&lt;/span&gt; &lt;span class="na"&gt;min=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Complexity&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"complexity"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Simple&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1.35"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Medium — some integrations&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1.75"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Complex — auth, real-time&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"2.2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Enterprise — compliance, scaling&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Client type&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"client"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"0.9"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Startup / early-stage&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Small business&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1.1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Agency&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1.25"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Enterprise / corporate&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"result"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"result"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Sanity Check&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"price"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"range"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"signal"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"signal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"cta"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    If this helped, you can buy me a coffee:&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://paypal.me/cheapuno"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;paypal.me/cheapuno&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;market&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;consult&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="na"&gt;api&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;125&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="na"&gt;web&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="na"&gt;mobile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="na"&gt;design&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;110&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="na"&gt;fix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="o"&gt;=+&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hours&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=+&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=+&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;complexity&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;cl&lt;/span&gt;&lt;span class="o"&gt;=+&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="o"&gt;||!&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;market&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="nx"&gt;low&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;cl&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nx"&gt;high&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;cl&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;range&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;$&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;low&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; – $&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;high&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;adj&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;cl&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="o"&gt;===&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;consult&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;&lt;span class="mf"&gt;1.4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="o"&gt;===&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;api&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;signal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;adj&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;cl&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mf"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;&lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;signal warn&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;⚠️ You may be undercharging. Clients can perceive low price as low quality.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mf"&gt;1.15&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;&lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;signal ok&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;✅ Your rate is in the fair range.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;signal warn&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;📈 High rate — make sure client has budget and you have a clear scope document.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;result&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;block&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hours&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;complexity&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save that as &lt;code&gt;pricing-checker.html&lt;/code&gt; and open it in any browser. No account, no server, no tracking.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: What if they push back on paid discovery?&lt;/strong&gt;&lt;br&gt;
Say: "Discovery is how I make sure we're both confident about the final price. I've had clients save 40% on project cost because discovery caught scope gaps early."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What if I pick the wrong strategy?&lt;/strong&gt;&lt;br&gt;
You won't know until you try. That's fine. The tree is a starting point, not a guarantee.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What if the client won't pay for discovery?&lt;/strong&gt;&lt;br&gt;
Then they don't have a serious project yet. Move on.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;No more freezing. No more lowballing. Just a decision.&lt;/em&gt;&lt;/p&gt;







&lt;h2&gt;
  
  
  Need Help Making Your Next Pricing Decision?
&lt;/h2&gt;

&lt;p&gt;If you're stuck on whether to take a project or how to respond to a lowball offer, I offer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$10 Quick Decision Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I'll review your specific situation in 24 hours&lt;/li&gt;
&lt;li&gt;Give you a clear recommendation based on the framework above&lt;/li&gt;
&lt;li&gt;Payment: &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;No pitch. No follow-up emails. Just a direct answer.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>pricing</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>The $10 Freelance Pricing Page Review Kit: 20 Copy-Paste Templates</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 04:59:24 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/the-10-freelance-pricing-page-review-kit-20-copy-paste-templates-5ghk</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/the-10-freelance-pricing-page-review-kit-20-copy-paste-templates-5ghk</guid>
      <description>&lt;h1&gt;
  
  
  The $10 Freelance Pricing Page Review Kit: 20 Copy-Paste Templates
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Stop losing deals because your pricing page doesn't convert.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I spent 3 years watching freelance devs get ghosted despite having great portfolios. The problem wasn't their skills — it was that their pricing pages couldn't close.&lt;/p&gt;

&lt;p&gt;I built this kit to help devs like you: 20 templates you can copy today, plus a framework for identifying which prospects need the most help.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's In the Kit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;20 outreach templates&lt;/strong&gt; across 4 channels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt; (5 templates) — cold/warm email to devs with public pricing pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twitter/X DM&lt;/strong&gt; (3 templates) — short pitch for 280-char platforms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn DM&lt;/strong&gt; (6 templates) — connection request + follow-up sequence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Issue&lt;/strong&gt; (3 templates) — for repos discussing pricing/monetization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Plus:&lt;/strong&gt; A targeting worksheet to identify which devs need help most.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Real Scenario: From $0 to a $1,200 Project Quote
&lt;/h2&gt;

&lt;p&gt;Here's what this framework looks like in practice:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before (the gut quote):&lt;/strong&gt;&lt;br&gt;
A developer quoted $800 for a full-stack web app. The client accepted immediately — which should have been the first red flag. Three revision rounds later, the project had consumed 2.5x the original hours. Final value: $2,000+ of work for $800.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The framework re-analysis:&lt;/strong&gt;&lt;br&gt;
Using the pricing framework:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base rate: $800&lt;/li&gt;
&lt;li&gt;Scope multiplier: 1.5 (medium complexity, multiple integrations)&lt;/li&gt;
&lt;li&gt;Risk buffer: 0.2 (client had a history of "small" change requests)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quoted price: $1,440&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The negotiation:&lt;/strong&gt;&lt;br&gt;
The client pushed back on price. After a 15-minute call walking through the scope boundary document, they agreed to $1,200 — still 50% above the original gut quote, and both parties had clarity on what was included.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What changed:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer avoided $400 in undercharging vs. original gut quote&lt;/li&gt;
&lt;li&gt;Client got a scope document they could actually use&lt;/li&gt;
&lt;li&gt;No disputes because boundaries were defined upfront&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what "pricing page converts" actually means in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The $10 Quick Review Offer
&lt;/h2&gt;

&lt;p&gt;If you want a second pair of eyes on your own pricing page:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$10 = 3 specific fixes, delivered in 24 hours&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I review your pricing structure, identify the 3 highest-impact problems, and give you a clear fix for each. No fluff, just actionable changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To order:&lt;/strong&gt; Send $10 to &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;paypal.me/cheapuno&lt;/a&gt; with your pricing page URL. I'll reply within 24 hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  Target Persona Worksheet
&lt;/h2&gt;

&lt;p&gt;Use this to identify who to pitch:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Persona&lt;/th&gt;
&lt;th&gt;Observation Angle&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;"Contact for pricing" page&lt;/td&gt;
&lt;td&gt;Adding a range builds trust and qualifies leads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Flat-rate package, no scope&lt;/td&gt;
&lt;td&gt;"Unlimited revisions" = the #1 freelance dispute trigger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Hourly billing, no project cap&lt;/td&gt;
&lt;td&gt;Max-hour cap aligns incentives for both sides&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;"Starting at $X" no range&lt;/td&gt;
&lt;td&gt;Range with "most projects land at $Y" converts better&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;No payment terms stated&lt;/td&gt;
&lt;td&gt;No legal protection when clients ghost mid-project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;"Unlimited revisions" offer&lt;/td&gt;
&lt;td&gt;Signals you haven't defined scope boundaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Suspiciously low rates (&amp;lt;$25/hr)&lt;/td&gt;
&lt;td&gt;Attracts clients who think cheap = low quality&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Email Templates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Template 1: Vague "Contact for Pricing"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Subject:&lt;/strong&gt; Your contact-for-pricing page might be losing you 60% of leads&lt;/p&gt;

&lt;p&gt;Hi [NAME],&lt;/p&gt;

&lt;p&gt;I found your portfolio through your GitHub profile and really liked your [PROJECT]. &lt;/p&gt;

&lt;p&gt;I noticed your pricing page says "contact for a quote." I used to do the same thing — most people who wanted a ballpark just moved on.&lt;/p&gt;

&lt;p&gt;I built a simple pricing framework that helps freelance devs communicate scope boundaries clearly. Free worksheet: &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you ever want a quick ($10) teardown of your services page, I can send 3 specific suggestions: paypal.me/cheapuno&lt;/p&gt;

&lt;p&gt;No pressure.&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 2: Flat-rate, No Scope Definition
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Subject:&lt;/strong&gt; Quick question about your $500 flat-rate package&lt;/p&gt;

&lt;p&gt;Hi [NAME],&lt;/p&gt;

&lt;p&gt;I came across your services page and noticed you offer "Flat-rate websites starting at $500." Great way to attract clients — but the package doesn't mention what's included if the client wants major changes after the first draft.&lt;/p&gt;

&lt;p&gt;This is the #1 source of freelance disputes. I built a scope definition worksheet specifically for flat-rate devs: &lt;a href="https://dev.to/cheapuno/how-to-price-a-scope-change-without-losing-the-cl-3f8"&gt;https://dev.to/cheapuno/how-to-price-a-scope-change-without-losing-the-cl-3f8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can do a $10 quick review of your current package structure and send you 3 specific additions that would protect you from scope creep: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 3: No Payment Terms
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Subject:&lt;/strong&gt; Your services page doesn't mention payment terms&lt;/p&gt;

&lt;p&gt;Hi [NAME],&lt;/p&gt;

&lt;p&gt;I was browsing your developer profile and saw the services you offer. One thing I noticed: there's no payment terms section.&lt;/p&gt;

&lt;p&gt;I learned this the hard way. I put together a payment terms checklist for freelance devs: &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want a $10 review of your current service terms, happy to help: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 4: Complex Tiered Pricing (5+ tiers)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Subject:&lt;/strong&gt; Too many pricing tiers paralyzes decisions&lt;/p&gt;

&lt;p&gt;Hi [NAME],&lt;/p&gt;

&lt;p&gt;I came across your pricing page and noticed you have [X] pricing tiers. That's great for flexibility — but research shows more than 3 tiers causes decision paralysis.&lt;/p&gt;

&lt;p&gt;I built a framework that helps devs simplify their pricing into clear tiers: &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want, I can do a $10 review of your current tier structure and suggest how to consolidate: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 5: Outdated Pricing (2+ years old)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Subject:&lt;/strong&gt; Your pricing page still shows [X] — costs have changed since then&lt;/p&gt;

&lt;p&gt;Hi [NAME],&lt;/p&gt;

&lt;p&gt;I found your pricing page through [SOURCE]. I noticed it hasn't been updated in [X] years — costs have likely changed significantly since then.&lt;/p&gt;

&lt;p&gt;I put together a simple pricing framework that helps devs stay current: &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want a $10 review of your current pricing with updated suggestions: paypal.me/cheapuno&lt;/p&gt;




&lt;h2&gt;
  
  
  Twitter/X DM Templates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Template 1: General Pitch (40-60 words)
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — I checked out your pricing page and noticed [1 specific thing]. I built a freelance scope framework that helps devs like you price more accurately. Free worksheet: [link]&lt;/p&gt;

&lt;p&gt;Also do $10 quick pricing teardowns if you want a second pair of eyes: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 2: Scope Creep Focused
&lt;/h3&gt;

&lt;p&gt;Hey [NAME] — your post about scope creep hit close to home. I built a scope estimation framework specifically for devs who've gotten burned. Free worksheet: [link]&lt;/p&gt;

&lt;p&gt;Do $10 quick teardowns if you want 3 specific fixes: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 3: Calculator Mismatch
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — I noticed your pricing calculator shows [X] but my framework calculates [Y] for the same inputs. Small gap = big trust issue. &lt;/p&gt;

&lt;p&gt;Built a free worksheet to help: [link]. $10 for a full breakdown: paypal.me/cheapuno&lt;/p&gt;




&lt;h2&gt;
  
  
  LinkedIn DM Templates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Connection Request (≤300 chars)
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — I came across your profile and liked your post about [TOPIC]. I help freelance devs price more accurately. Would love to connect.&lt;/p&gt;




&lt;h3&gt;
  
  
  First DM (after connection accepted)
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — thanks for connecting!&lt;/p&gt;

&lt;p&gt;I saw your [post / profile / services page] about [SPECIFIC TOPIC]. I built a freelance scope estimation framework specifically for devs who've gotten burned by unclear project boundaries. Free worksheet: [DEV.TO LINK]&lt;/p&gt;

&lt;p&gt;If you ever want a second pair of eyes on your pricing or proposal structure, I do $10 quick teardowns — 3 specific fixes with reasoning, delivered in 24h: paypal.me/cheapuno&lt;/p&gt;

&lt;p&gt;No pressure if it's not relevant — just thought it might save you from a painful scope fight down the road.&lt;/p&gt;




&lt;h3&gt;
  
  
  Follow-up DM (7-10 days after no reply)
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — one more thing. If you ever want to see how your current pricing compares to market rates, I built a quick framework that calculates fair project prices in 3 steps. $10 for a focused teardown: paypal.me/cheapuno&lt;/p&gt;

&lt;p&gt;Worth knowing where you stand either way.&lt;/p&gt;




&lt;h3&gt;
  
  
  LinkedIn DM: "Flexible/Negotiable Pricing"
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — your "flexible pricing" approach sounds谦逊, but it can signal uncertainty in your value. Anchoring actually helps both you and the client.&lt;/p&gt;

&lt;p&gt;I built a free pricing framework that helps: [link]. $10 for a quick breakdown of where your pricing could be stronger: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  LinkedIn DM: High-Demand Niche (AI/ML)
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — you're in a hot niche (AI/ML), but your rates should reflect scarcity, not just time spent. Most devs in your space underprice by 30-40%.&lt;/p&gt;

&lt;p&gt;I put together a pricing framework specifically for high-demand niches: [link]. $10 quick review: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  LinkedIn DM: Recently Raised Rates
&lt;/h3&gt;

&lt;p&gt;Hi [NAME] — congrats on raising your rates! That's a big move. Here's a framework to communicate the value increase to clients so they don't ghost: [link]&lt;/p&gt;

&lt;p&gt;If you want a $10 review of your current pricing structure: paypal.me/cheapuno&lt;/p&gt;




&lt;h2&gt;
  
  
  GitHub Issue/Discussion Templates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Template 1: Monetization Discussion
&lt;/h3&gt;

&lt;p&gt;I really like what you've built here.&lt;/p&gt;

&lt;p&gt;As a fellow dev who's gotten burned by unclear project scope, I wanted to share a resource that helped me: a freelance scope estimation framework with a free worksheet on Dev.to.&lt;/p&gt;

&lt;p&gt;If you ever want a $10 pricing review of your services page, I can send a focused teardown: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 2: Pricing Page Feedback (when owner discusses pricing)
&lt;/h3&gt;

&lt;p&gt;This is a great writeup on [TOPIC]. One thing I'd add: the pricing structure you described works well for [USE CASE] but might lose [PROBLEM]. &lt;/p&gt;

&lt;p&gt;I built a free scope estimation framework that handles this: &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;$10 for a detailed breakdown of your current structure: paypal.me/cheapuno&lt;/p&gt;




&lt;h3&gt;
  
  
  Template 3: Open Source with "Hire Me" Section
&lt;/h3&gt;

&lt;p&gt;Great project! I noticed you have a "Hire Me" section — if you ever want feedback on how your pricing is presented to potential clients, I do $10 quick teardowns: paypal.me/cheapuno&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Use This Kit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Identify your target (use the persona worksheet above)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Pick the channel where they're most active (LinkedIn for consultants, Email for portfolio devs, Twitter for indie hackers)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Customize the template with their specific situation (see observation angles)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Send and track responses&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; If you get a response about wanting help, offer the $10 review&lt;/p&gt;




&lt;h2&gt;
  
  
  The $10 Review Process
&lt;/h2&gt;

&lt;p&gt;When someone takes you up on the offer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Get their pricing page URL&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send $10 via PayPal&lt;/strong&gt; (paypal.me/cheapuno)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Receive 3 specific fixes&lt;/strong&gt; within 24 hours&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each fix includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the problem is&lt;/li&gt;
&lt;li&gt;Why it matters (with specific numbers when possible)&lt;/li&gt;
&lt;li&gt;How to fix it&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;If this kit helped you:&lt;/strong&gt; Send $10 → paypal.me/cheapuno&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you want a review of your own pricing page:&lt;/strong&gt; paypal.me/cheapuno ($10, 24hr delivery)&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. The free worksheets are here:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Main framework: &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Scope changes: &lt;a href="https://dev.to/cheapuno/how-to-price-a-scope-change-without-losing-the-cl-3f8"&gt;https://dev.to/cheapuno/how-to-price-a-scope-change-without-losing-the-cl-3f8&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: Does this kit work for any type of freelance dev?&lt;/strong&gt;&lt;br&gt;
A: It's designed for devs who quote projects (not hourly). If you bill by hour, the templates still work as communication frameworks — but the scope multiplier math is most accurate for fixed-price quoting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What if I don't have a pricing page yet?&lt;/strong&gt;&lt;br&gt;
A: Start with Template 1 (the "Contact for Pricing" template) to diagnose where you are, then use the targeting worksheet to identify which specific templates apply to your situation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: How do I know which template to use first?&lt;/strong&gt;&lt;br&gt;
A: Use the targeting worksheet — it helps you identify which devs have the highest-friction pricing page problem. High friction = highest urgency = best response rates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Is $10 for one review or ongoing?&lt;/strong&gt;&lt;br&gt;
A: One-time. $10 gets you a single review with 3 specific fixes. If you want ongoing access to the full 20-template kit, that's a separate conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: How long does delivery take?&lt;/strong&gt;&lt;br&gt;
A: I review and respond within 24 hours of receiving your payment and pricing page URL.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Price a Freelance Project: A Simple Framework With Examples</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 03:27:59 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/how-to-price-a-freelance-project-a-simple-framework-with-examples-471e</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/how-to-price-a-freelance-project-a-simple-framework-with-examples-471e</guid>
      <description>&lt;h1&gt;
  
  
  How to Price a Freelance Project: A Simple Framework With Examples
&lt;/h1&gt;

&lt;p&gt;One of the hardest parts of freelancing is figuring out what to charge. Not because you lack skills — but because most pricing advice is either too vague ("charge what you're worth!") or too complex (complex spreadsheets nobody uses).&lt;/p&gt;

&lt;p&gt;After losing $2,000 on a poorly-scoped project and spending three years iterating on how I price work, I built a framework that actually works: three numbers, one formula, and you're done.&lt;/p&gt;

&lt;p&gt;This article gives you that framework — free. If it helps you land a fair deal, I offer &lt;strong&gt;$10 quick reviews&lt;/strong&gt; (see below).&lt;/p&gt;




&lt;h2&gt;
  
  
  The Three Numbers You Need
&lt;/h2&gt;

&lt;p&gt;Before the formula, you need three inputs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Base Rate (BR)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
What you'd charge for a trivial version of this project — one that barely works. Not what you wish you could charge. What you'd honestly accept if you were desperate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Scope Multiplier (SM)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
How much more complex is this project than the trivial version? Use this scale:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Complexity&lt;/th&gt;
&lt;th&gt;SM Range&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Trivial&lt;/td&gt;
&lt;td&gt;1.0–1.2&lt;/td&gt;
&lt;td&gt;Static HTML page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple&lt;/td&gt;
&lt;td&gt;1.3–1.5&lt;/td&gt;
&lt;td&gt;3-page website with contact form&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;1.8–2.5&lt;/td&gt;
&lt;td&gt;Database-backed app with auth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex&lt;/td&gt;
&lt;td&gt;3.0–4.0&lt;/td&gt;
&lt;td&gt;Real-time features, third-party integrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Epic&lt;/td&gt;
&lt;td&gt;5.0+&lt;/td&gt;
&lt;td&gt;Full platform, multi-team&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;3. Risk Buffer (RB)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
What percentage of the project scope is likely to change or expand? &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Change Likelihood&lt;/th&gt;
&lt;th&gt;RB&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Very unlikely&lt;/td&gt;
&lt;td&gt;10–15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Possible&lt;/td&gt;
&lt;td&gt;20–25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Likely&lt;/td&gt;
&lt;td&gt;30–40%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Almost certain&lt;/td&gt;
&lt;td&gt;50%+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Final Price = BR × SM × (1 + RB)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. Three numbers, one multiplication.&lt;/p&gt;


&lt;h2&gt;
  
  
  Real Examples
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Example 1: The "Quick Widget"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Base Rate: $500 (trivially, a single HTML page)&lt;/li&gt;
&lt;li&gt;Complexity: Medium (API integration, custom UI) → SM = 2.0&lt;/li&gt;
&lt;li&gt;Risk: Client has a history of changing requirements → RB = 25%
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$500 × 2.0 × (1 + 0.25) = $1,250
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;What to say to the client:&lt;/strong&gt; "Based on the scope and typical revision patterns, my estimate is $1,200–$1,300 for this project."&lt;/p&gt;


&lt;h3&gt;
  
  
  Example 2: The "Small Fix"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Base Rate: $100 (trivial bug fix)&lt;/li&gt;
&lt;li&gt;Complexity: Low-medium (a few files) → SM = 1.3&lt;/li&gt;
&lt;li&gt;Risk: Low, but scope could creep → RB = 15%
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$100 × 1.3 × (1 + 0.15) = $149.50 → $150
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;What to say:&lt;/strong&gt; "$150, and that includes a 15% buffer for minor scope questions."&lt;/p&gt;


&lt;h3&gt;
  
  
  Example 3: The "Big Platform"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Base Rate: $2,000 (MVP that barely works)&lt;/li&gt;
&lt;li&gt;Complexity: Complex (auth, payments, real-time) → SM = 3.5&lt;/li&gt;
&lt;li&gt;Risk: High — client is a startup, pivots likely → RB = 40%
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$2,000 × 3.5 × (1 + 0.40) = $9,800
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;What to say:&lt;/strong&gt; "For a full platform build with those integrations and that risk profile, I'm at $9,800. If budget is tight, we can scope down to an MVP first at $3,500."&lt;/p&gt;


&lt;h3&gt;
  
  
  Composite Case Study: From $800 to $1,200
&lt;/h3&gt;

&lt;p&gt;Here's a composite example based on typical freelancer pricing patterns I see:&lt;/p&gt;

&lt;p&gt;A freelance engineer was asked to build a client dashboard. They prepared a quote using their gut feeling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base Rate: $800 for the "basic version"
&lt;/li&gt;
&lt;li&gt;Scope: Medium complexity → SM = 1.5&lt;/li&gt;
&lt;li&gt;Risk: Client had changed requirements before → RB = 0.2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Original gut quote: $800&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When they ran it through the framework:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$800 × 1.5 × (1 + 0.2) = $1,440
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The framework was telling them they were undercharging by &lt;strong&gt;$640&lt;/strong&gt; — nearly half.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happened:&lt;/strong&gt; They sent the $1,440 quote with their reasoning. The client negotiated to $1,200 and both sides walked away happy. The freelancer earned $400 more than their original gut feeling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; Your gut quote and your framework quote are often different numbers. Run both. If the framework number is higher — that's your protection buffer doing its job.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Pricing Worksheet (Copy This)
&lt;/h2&gt;

&lt;p&gt;Use this template when a new project comes in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Base Rate (BR): $____
Scope Multiplier (SM): ____
Risk Buffer (RB): ____%

Final Price = BR × SM × (1 + RB)
           = $____ × ____ × (1 + .____)
           = $____
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Negotiation tip:&lt;/strong&gt; Present the number as a range. Say "$1,200–$1,500" instead of "$1,350." The range feels less arbitrary and gives room to move without cutting deep.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pricing Decision Checklist
&lt;/h2&gt;

&lt;p&gt;Before you send your next quote, run through this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] I know my Base Rate (what I'd charge for a trivial version)&lt;/li&gt;
&lt;li&gt;[ ] I chose a Scope Multiplier and documented why&lt;/li&gt;
&lt;li&gt;[ ] I added a Risk Buffer for scope uncertainty&lt;/li&gt;
&lt;li&gt;[ ] I checked whether the project has hidden complexity I haven't discussed&lt;/li&gt;
&lt;li&gt;[ ] I turned the final number into a price range, not a single digit&lt;/li&gt;
&lt;li&gt;[ ] I know my walk-away number before the negotiation starts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Mistakes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mistake 1: Using hourly rates&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
"If I charge $50/hr and it takes 20 hours, that's $1,000." But if you finish in 10 hours, you just left $500 on the table. Scope-based pricing rewards efficiency. Hourly rates reward slowness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistake 2: Ignoring the risk buffer&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Most freelancers quote the happy path. When scope expands (and it always does), you're eating the cost. The risk buffer is your protection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistake 3: Anchoring to the client's budget&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If a client says "we have $5,000" and your formula says $8,000, don't immediately drop to $5,000. Say: "For $5,000, here's what we can deliver. Here's what the full scope costs. Your choice."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistake 4: No internal revision buffer&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Build 10–20% slack into your own formula before presenting. Not as padding — as a buffer for your own estimation errors. You're better at estimating than most, but you're not perfect.&lt;/p&gt;


&lt;h2&gt;
  
  
  Try the Interactive Calculator
&lt;/h2&gt;

&lt;p&gt;Want to skip the formula and get a number right now? Here's a browser-based calculator you can use immediately — no signup, no account needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt; Copy the HTML below, save it as &lt;code&gt;calculator.html&lt;/code&gt;, and open it in any browser. Enter your base rate, estimated hours, and scope risk. Get a fair price range instantly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Freelance Pricing Calculator&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;system-ui&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#0d1117&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#e6edf3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.4rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#58a6ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.875rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#8b949e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.25rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#161b22&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#30363d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#e6edf3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.result&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#1c2128&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#30363d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#58a6ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.note&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#484f58&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Freelance Pricing Calculator&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Base Rate ($) &lt;span class="nt"&gt;&amp;lt;small&amp;gt;&lt;/span&gt;— what you'd charge for a trivial version&lt;span class="nt"&gt;&amp;lt;/small&amp;gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"rate"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"500"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Estimated Hours&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"hours"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"20"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Scope Risk (1.0–2.0) &lt;span class="nt"&gt;&amp;lt;small&amp;gt;&lt;/span&gt;— 1.0=clear, 2.0=very uncertain&lt;span class="nt"&gt;&amp;lt;/small&amp;gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"risk"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1.3"&lt;/span&gt; &lt;span class="na"&gt;step=&lt;/span&gt;&lt;span class="s"&gt;"0.1"&lt;/span&gt; &lt;span class="na"&gt;min=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt; &lt;span class="na"&gt;max=&lt;/span&gt;&lt;span class="s"&gt;"5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"result"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"output"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;$1,300 – $1,560&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"note"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Formula: Base Rate × Hours × Risk = Fair Range&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hours&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;risk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;low&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;high&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;1.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;output&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;$&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;low&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; – $&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;high&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Instant price range (no mental math)&lt;/li&gt;
&lt;li&gt;✅ Considers your floor rate, hours, and scope uncertainty&lt;/li&gt;
&lt;li&gt;✅ Works offline — save and use it anytime&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Need a Pricing Review?
&lt;/h2&gt;

&lt;p&gt;If you're mid-negotiation or about to send a proposal, I offer quick turnaround reviews:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$5 Quick Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One pricing response based on your numbers&lt;/li&gt;
&lt;li&gt;No revision&lt;/li&gt;
&lt;li&gt;Sent within 24 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;$10 Full Scope Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your project scope analyzed with the framework above&lt;/li&gt;
&lt;li&gt;One response plus one revision&lt;/li&gt;
&lt;li&gt;Specific price recommendation with negotiation range&lt;/li&gt;
&lt;li&gt;Delivered within 24 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;To order:&lt;/strong&gt; Send payment via &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;paypal.me/cheapuno&lt;/a&gt; and include a brief summary of your project (1–3 sentences).&lt;/p&gt;




&lt;h2&gt;
  
  
  Need a Custom Price for Your Project?
&lt;/h2&gt;

&lt;p&gt;If you're mid-negotiation or about to send a proposal, I offer a quick turnaround review:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$10 Full Scope Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your project scope analyzed with the framework above&lt;/li&gt;
&lt;li&gt;Specific price recommendation&lt;/li&gt;
&lt;li&gt;Red flags identified before you underprice&lt;/li&gt;
&lt;li&gt;Delivered within 24 hours&lt;/li&gt;
&lt;li&gt;Payment: &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Format: PDF or text, depending on complexity. No contracts, no upsell.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Guides
&lt;/h2&gt;

&lt;p&gt;If this framework helped you, you might also find these useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;The Freelance Scope Estimation Framework&lt;/a&gt;&lt;/strong&gt; — The underlying math behind this calculator&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/cheapuno/3%E5%80%8B%E9%96%8B%E7%99%BC%E8%80%85%E5%AE%9A%E5%83%B9%E9%A0%81%E5%B8%B8%E8%A6%8F%E9%8C%AF%E8%AA%A4-4b9"&gt;3個開發者定價頁常見錯誤&lt;/a&gt;&lt;/strong&gt; — Common pricing page mistakes I see developers make&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dev.to/cheapuno/a-tiny-pricing-calculator-for-scope-changes-4gf"&gt;A Tiny Pricing Calculator for Scope Changes&lt;/a&gt;&lt;/strong&gt; — A simple calculator for when scope changes mid-project&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Last updated: 2026-07-01&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How a $2,000 Freelance Project Should Have Been Priced at $4,500</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 02:51:46 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/how-a-2000-freelance-project-should-have-been-priced-at-4500-2p19</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/how-a-2000-freelance-project-should-have-been-priced-at-4500-2p19</guid>
      <description>&lt;h1&gt;
  
  
  How a $2,000 Freelance Project Should Have Been Priced at $4,500
&lt;/h1&gt;

&lt;p&gt;A realistic pricing teardown for a client who asked for an automation workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Job Everyone Gets Wrong
&lt;/h2&gt;

&lt;p&gt;Most freelancers don't undercharge because they lack confidence. They undercharge because they only count the hours they know about — not the hours they don't.&lt;/p&gt;

&lt;p&gt;A client asks for an automation workflow that integrates their CRM with their email tool. They say their budget is $2,000. You do some mental math: 15 hours × $120/hr = $1,800. You could do it for $1,900.&lt;/p&gt;

&lt;p&gt;This is where almost everyone leaves money on the table. And it's not because you're bad at negotiating. It's because you're pricing the wrong thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Project Nobody Should Quote at $2,000
&lt;/h2&gt;

&lt;p&gt;Here's a real project setup:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client asks for:&lt;/strong&gt; An automation workflow connecting HubSpot to Gmail, with triggers, filters, and conditional routing. About 15 hours of work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Their stated budget:&lt;/strong&gt; $2,000&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The $1,800 quote most people give:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;15 hours × $120/hr = $1,800
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This looks reasonable. It feels fair. Here's why it quietly destroys your business.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why the Simple Math Is Wrong
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What you're actually selling
&lt;/h3&gt;

&lt;p&gt;When you quote by hours, you're treating this like a job. But your client isn't buying your time. They're buying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A working system that doesn't break when conditions change&lt;/li&gt;
&lt;li&gt;The peace of mind that the automation handles edge cases&lt;/li&gt;
&lt;li&gt;Someone to call if it stops working at 2am before a campaign launch&lt;/li&gt;
&lt;li&gt;Confidence that the data in their CRM actually matches their email tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's not 15 hours of work. That's an operational system with ongoing value.&lt;/p&gt;

&lt;h3&gt;
  
  
  The hidden complexity
&lt;/h3&gt;

&lt;p&gt;A CRM-email integration that "just works" involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Implementation cost&lt;/strong&gt;: What you think is 15 hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope uncertainty buffer&lt;/strong&gt;: What happens when the client's CRM has custom fields you didn't know about?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revision risk&lt;/strong&gt;: What if the client changes their mind about the trigger conditions?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-side coordination&lt;/strong&gt;: Will someone be available to approve credentials and test the sandbox environment?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communication overhead&lt;/strong&gt;: How many meetings, Loom videos, and Slack threads does this actually take?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivery confidence&lt;/strong&gt;: What is it worth to you to guarantee this works before go-live?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you only charge for the first one, you're subsidizing the rest.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Correct Pricing Breakdown
&lt;/h2&gt;

&lt;p&gt;Here's what a fair quote looks like when you count everything:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Implementation (15 hrs × $120)&lt;/td&gt;
&lt;td&gt;$1,800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope uncertainty buffer (20%)&lt;/td&gt;
&lt;td&gt;$360&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revision risk (10%)&lt;/td&gt;
&lt;td&gt;$180&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client coordination overhead (5 hrs)&lt;/td&gt;
&lt;td&gt;$600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Communication thread cost (3 hrs)&lt;/td&gt;
&lt;td&gt;$360&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery confidence guarantee (5 hrs)&lt;/td&gt;
&lt;td&gt;$600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$3,900&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Round down to $3,500 for a cleaner number, or structure it as three options.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three Options Instead of One
&lt;/h2&gt;

&lt;p&gt;Most clients who push back on $3,500 aren't saying the work isn't worth it. They're saying they can't justify the full amount right now. Give them a tiered structure:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1 — The Core ($2,800)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard CRM-email integration&lt;/li&gt;
&lt;li&gt;Basic triggers and filters&lt;/li&gt;
&lt;li&gt;2 rounds of revisions&lt;/li&gt;
&lt;li&gt;30-day support window&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 2 — The Complete ($4,500)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everything in Option 1&lt;/li&gt;
&lt;li&gt;Edge case handling for 5 common scenarios&lt;/li&gt;
&lt;li&gt;Full documentation&lt;/li&gt;
&lt;li&gt;90-day support window&lt;/li&gt;
&lt;li&gt;Priority response within 24 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 3 — The Enterprise ($7,500)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everything in Option 2&lt;/li&gt;
&lt;li&gt;Custom error handling and fallbacks&lt;/li&gt;
&lt;li&gt;Monitoring dashboard&lt;/li&gt;
&lt;li&gt;6-month support window&lt;/li&gt;
&lt;li&gt;Monthly check-in call&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This works because you're not discounting. You're giving them a real choice about scope and risk. The client who takes Option 1 still gets a working system — and the ones who need more pay for more.&lt;/p&gt;




&lt;h2&gt;
  
  
  Copy This Mini Calculator
&lt;/h2&gt;

&lt;p&gt;Want to reprice your next freelance project? Use this formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BASE = hours × your_rate
COMPLEXITY = BASE × 1.25  (if the brief has any ambiguity)
RISK = BASE × 0.15  (if client has a history of changing scope)
COORDINATION = hours_you_estimate × 0.4 × your_rate  (meetings, reviews, back-and-forth)
SUPPORT = hours × 0.3 × your_rate  (buffer for questions after delivery)

FINAL = BASE + COMPLEXITY + RISK + COORDINATION + SUPPORT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This won't give you a perfect number. It will give you an honest one.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Lesson
&lt;/h2&gt;

&lt;p&gt;The $2,000 budget wasn't the project's value. It was the client's opening offer based on what they assumed your work was worth. Your job isn't to accept or reject it — it's to show them what the actual work costs and let them decide.&lt;/p&gt;

&lt;p&gt;If they come back and say it's too expensive, that's when you have a real conversation about scope. But you can't have that conversation from $1,800. You can only have it from $4,500.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want Me to Tear Down Your Next Quote?
&lt;/h2&gt;

&lt;p&gt;If you're working on a project and want a second pair of eyes on the scope and pricing, I offer $10 quick reviews: &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;paypal.me/cheapuno&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Send me the brief, your current rate, and what you're thinking of charging. I'll send back a breakdown of what I'd charge and why — within 24 hours.&lt;/p&gt;







&lt;h2&gt;
  
  
  Continue Your Pricing Journey
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you want the framework behind this teardown:&lt;/strong&gt; → &lt;a href="https://dev.to/cheapuno/the-freelance-scope-estimation-framework-5fl"&gt;The Freelance Scope Estimation Framework&lt;/a&gt; — the complete formula (BR × SM × RB)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're dealing with a scope change right now:&lt;/strong&gt; → &lt;a href="https://dev.to/cheapuno/how-to-price-a-scope-change-without-losing-the-client-2goe"&gt;How to Price a Scope Change Without Losing the Client&lt;/a&gt; — specific phrasing and pricing strategy for mid-project changes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you want a tool that does the math for you:&lt;/strong&gt; → &lt;a href="https://dev.to/cheapuno/a-30-second-pricing-decision-tree-for-freelance-devs-59gh"&gt;A 30-Second Pricing Decision Tree for Freelance Devs&lt;/a&gt; — answer 5 questions, get a price range&lt;/p&gt;







&lt;h2&gt;
  
  
  Who Is Actually Getting Burned
&lt;/h2&gt;

&lt;p&gt;This isn't a confidence problem. It's a pricing structure problem.&lt;/p&gt;

&lt;p&gt;The freelancers who get burned most are the ones who are competent, careful, and genuinely trying to do good work. They run the numbers honestly. They think: "15 hours at $120/hr = $1,800, I'll charge $1,900 and seem fair."&lt;/p&gt;

&lt;p&gt;Here's what they didn't account for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The client who says "we'll handle the technical details" — and then spends 6 hours in Slack threads coordinating credentials you could have set up yourself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The project that "should take a week" — but the client's internal review process adds three rounds of feedback you never factored in.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "simple change" that turns into a full rewrite because the client's original requirements didn't mention the compliance field their legal team added two days before launch.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you've ever finished a project and thought "I actually lost money on this" — you already know this problem. You just didn't have a system for pricing it correctly upfront.&lt;/p&gt;




&lt;h2&gt;
  
  
  Self-Evaluation Checklist
&lt;/h2&gt;

&lt;p&gt;Go through each one. If you answer "yes" to 3 or more, your next project is probably underpriced.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;The brief had any ambiguity&lt;/strong&gt; — even a little "we can discuss later" in the scope document&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;You've done this type of project before&lt;/strong&gt; and it always takes longer than the initial estimate&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;The client uses words like "flexible," "we'll figure it out," or "not a big deal"&lt;/strong&gt; when discussing scope&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;You'd need to schedule more than 2 calls/meetings&lt;/strong&gt; to align on requirements&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;There are stakeholders besides the person you're directly talking to&lt;/strong&gt; (designer, manager, legal, etc.)&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;The project has any integration component&lt;/strong&gt; (APIs, webhooks, third-party tools)&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;The client's industry has compliance requirements&lt;/strong&gt; (healthcare, finance, legal, education)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're at 5+: You need either a scope document with explicit buffers, or you need someone to sanity-check your quote before you send it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Outreach Kit Angle
&lt;/h2&gt;

&lt;p&gt;If you're reading this and thinking "I don't need a consultation, I need to know how to price better" — the &lt;a href="https://dev.to/cheapuno/the-10-freelance-pricing-page-review-kit-4lbh"&gt;Freelance Pricing Page Review Kit&lt;/a&gt; is a free downloadable resource with the templates and checklists I use when pricing my own projects.&lt;/p&gt;

&lt;p&gt;If you've read it and still want a second set of eyes on a specific quote, I'm available for $10 quick reviews: &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;paypal.me/cheapuno&lt;/a&gt;. Send me the brief and your current number. I'll tell you what I'd charge and why.&lt;/p&gt;

&lt;p&gt;No pitch. No upsell. Just a direct breakdown within 24 hours.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is part of a series on freelance pricing. If this helped you see your work differently, the best next step is to audit your current pricing formula before your next client conversation.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Price a Scope Change Without Guessing</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 02:43:39 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/how-to-price-a-scope-change-without-guessing-4l36</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/how-to-price-a-scope-change-without-guessing-4l36</guid>
      <description>&lt;h1&gt;
  
  
  How to Price a Scope Change Without Guessing
&lt;/h1&gt;

&lt;p&gt;When a client says "can you add one more feature?", freelancers either lowball themselves or overprice and lose the gig. There's a formula that handles both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you want a second pair of eyes on your scope-change price, I can review it for $10 and tell you whether the number is too low, too vague, or ready to send.&lt;/strong&gt; Just send me your scope doc or pricing page and I'll reply within 24 hours with specific improvements: &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;paypal.me/cheapuno&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  $10 Quick Review — Is Your Pricing Page Actually Working?
&lt;/h2&gt;

&lt;p&gt;I've reviewed 12 freelance pricing pages. &lt;strong&gt;7 had no direct way to hire the person.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That means if someone reads your article and thinks "this could help me price my next project" — they leave without a way to work with you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I review your pricing page or scope document&lt;/li&gt;
&lt;li&gt;Identify 2-3 specific improvements
&lt;/li&gt;
&lt;li&gt;Give you exact wording that converts readers to clients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Delivery:&lt;/strong&gt; 24 hours. &lt;strong&gt;$10 via PayPal:&lt;/strong&gt; paypal.me/cheapuno&lt;/p&gt;




&lt;h2&gt;
  
  
  The Scope Change Pricing Formula
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Change Price = (Extra Hours × Hourly Rate × Risk Multiplier) + Delay Cost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 1: Count the Extra Hours
&lt;/h2&gt;

&lt;p&gt;Be honest. How many extra hours will this add? Don't sandbag, but don't pad either. Write down the real number.&lt;/p&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many screens/files does this touch?&lt;/li&gt;
&lt;li&gt;Do I need to update tests?&lt;/li&gt;
&lt;li&gt;How long is integration testing?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 2: Apply the Risk Multiplier
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk Level&lt;/th&gt;
&lt;th&gt;Multiplier&lt;/th&gt;
&lt;th&gt;When to Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;1.0×&lt;/td&gt;
&lt;td&gt;New feature, no integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;1.3×&lt;/td&gt;
&lt;td&gt;Modifies existing logic or database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;1.6×&lt;/td&gt;
&lt;td&gt;Changes API, auth, or payment flow&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; A standalone feature you can build in 4 hours might take 8 hours if it touches your existing data layer. The multiplier accounts for that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Add the Delay Cost
&lt;/h2&gt;

&lt;p&gt;Projects with scope changes often slip. When you add features mid-project, everything else gets pushed back. You deserve compensation for that delay.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Delay Cost = Days Added × Daily Rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where Daily Rate = Your hourly rate × 8 hours&lt;/p&gt;




&lt;h2&gt;
  
  
  Worked Example: The Full Breakdown
&lt;/h2&gt;

&lt;p&gt;You quoted $2,000 for a 2-week project. Client wants to add a user export feature. Here's how the number gets calculated:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Extra Hours:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building the export feature: 6 hours&lt;/li&gt;
&lt;li&gt;Updating existing tests: 1 hour&lt;/li&gt;
&lt;li&gt;Integration testing: 1 hour&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total extra hours: 8&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Risk Multiplier:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feature touches the existing data layer&lt;/li&gt;
&lt;li&gt;Moderate integration risk&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiplier: 1.3×&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Delay Cost:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This change adds 2 days to the timeline&lt;/li&gt;
&lt;li&gt;Your daily rate: $75/hr × 8 = $600/day&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delay cost: $1,200&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Math:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Change Price = (8 × $75 × 1.3) + (2 × $600)
             = $780 + $1,200
             = $1,980
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Message You Send:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Adding user export requires 8 extra hours of work. With the integration risk and 2-day schedule impact, that's an additional $1,980. Want me to proceed?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They either say yes, negotiate, or drop it. Either way, you're not guessing — you have the math to back it up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Your Turn: Price This Scope Change
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Your Number&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Extra Hours&lt;/td&gt;
&lt;td&gt;_____&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Your Hourly Rate&lt;/td&gt;
&lt;td&gt;$_____&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk Multiplier (1.0 / 1.3 / 1.6)&lt;/td&gt;
&lt;td&gt;_____&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Days Added&lt;/td&gt;
&lt;td&gt;_____&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Daily Rate (= hourly × 8)&lt;/td&gt;
&lt;td&gt;$_____&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Change Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$_____&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Exact Wording to Send Your Client
&lt;/h2&gt;

&lt;p&gt;After calculating:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Adding [feature name] requires [X] extra hours. With the integration risk and schedule impact, that's an additional $[price] and [N] days. Want me to proceed?"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: What if the client pushes back on the price?&lt;/strong&gt;&lt;br&gt;
A: Reply with the math. "Here's how I calculated it: [X hours] × [rate] × [multiplier] plus [delay days] × [daily rate]. Happy to walk through each line." Most clients who push back haven't seen the breakdown — showing your work often ends the negotiation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Should I just give free advice to get the client to commit?&lt;/strong&gt;&lt;br&gt;
A: No. Free advice is what got you into this situation. Instead, offer a $10 quick review: "I can look at your full scope and tell you exactly what to charge. $10, 24 hours." This converts free consult seekers into paying clients without giving away your expertise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: My client already agreed to a fixed price. How do I handle scope changes?&lt;/strong&gt;&lt;br&gt;
A: Go back to the contract. If there's a scope change clause, use it. If not, the exact wording helps: "My original quote covered [original scope]. This new feature falls outside that scope, so here's the additional cost." Frame it as protecting both of you, not as a money grab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What if the scope change is tiny — just a few hours?&lt;/strong&gt;&lt;br&gt;
A: Small scope changes still have hidden costs: context switching, re-testing, and re-explaining. Use a minimum multiplier of 1.1× even for "easy" additions. Better to quote slightly high and negotiate down than to lowball yourself again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: How do I know if my original hourly rate is correct for scope changes?&lt;/strong&gt;&lt;br&gt;
A: Your original rate was probably calculated for the original project scope. Scope changes often warrant a higher effective rate because: (1) you're working on unfamiliar code someone else wrote, (2) the timeline pressure is higher mid-project, (3) communication overhead increases. Consider using 1.2× your normal rate as a scope-change premium.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: The client says "we'll handle this next phase" — how do I respond?&lt;/strong&gt;&lt;br&gt;
A: Get it in writing before the current phase ends. Reply: "Just to confirm — [feature name] is being moved to Phase 2, right? I'll include it in the next scope document." This prevents "I thought that was included" disputes later.&lt;/p&gt;




&lt;h2&gt;
  
  
  Already Have Articles But No Client Inquiries?
&lt;/h2&gt;

&lt;p&gt;Most freelancers have great content — but no path from "read article" to "hire you."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I review:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your main article or pricing page&lt;/li&gt;
&lt;li&gt;Call-to-action placement&lt;/li&gt;
&lt;li&gt;Offer clarity and conversion language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;$10 quick review — 24-hour delivery:&lt;/strong&gt; paypal.me/cheapuno&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Or if you want a full scope assessment:&lt;/strong&gt; For $25, I do a deep-dive review of your complete pricing structure, including scope-change policies, contract language, and negotiation scripts you can use immediately. &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;paypal.me/cheapuno&lt;/a&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>pricing</category>
      <category>scopechange</category>
    </item>
    <item>
      <title>Freelance Scope Change Pricing Calculator: How to Quote Extra Work Without Guessing</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Wed, 01 Jul 2026 01:31:50 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/freelance-scope-change-pricing-calculator-how-to-quote-extra-work-without-guessing-5dfb</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/freelance-scope-change-pricing-calculator-how-to-quote-extra-work-without-guessing-5dfb</guid>
      <description>&lt;h1&gt;
  
  
  Freelance Scope Change Pricing Calculator: How to Quote Extra Work Without Guessing
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The Problem: Every Freelancer Knows This Feeling
&lt;/h2&gt;

&lt;p&gt;You're mid-project. Client says: "Can you just add &lt;em&gt;one more thing&lt;/em&gt;?"&lt;/p&gt;

&lt;p&gt;You hesitate. You don't want to lose the client. But you also don't want to work for free.&lt;/p&gt;

&lt;p&gt;The typical response? "Sure, I can do that for $X." And then you either undersell yourself or overcharge and lose the job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope change pricing is where freelancers quietly lose margin — and most never even track it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula Nobody Teaches
&lt;/h2&gt;

&lt;p&gt;Here's the real formula for pricing scope changes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope Change Price = (Hours × Hourly Rate) × Complexity Multiplier + Rush Fee&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But that's still incomplete. The actual formula I use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Price = (Estimated Hours × Your Effective Rate × 1.3) + Complexity Buffer + Market Adjustment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me break this down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Calculate Your Base
&lt;/h2&gt;

&lt;p&gt;First, what are you &lt;em&gt;actually&lt;/em&gt; worth per hour?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Effective Hourly Rate = Monthly Target Income ÷ Billable Hours per Month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most freelancers target 60-80% billable time. If you want $8,000/month and can bill 100 hours, your effective rate is $80/hour. But you need to &lt;em&gt;charge&lt;/em&gt; more because not every hour is billable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Target Rate = Effective Rate × 1.4 to 1.6&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Estimate the Scope Change Hours
&lt;/h2&gt;

&lt;p&gt;Be honest. How many hours will this actually take?&lt;/p&gt;

&lt;p&gt;Add a 20% buffer for unexpected complexity. If you think 5 hours, budget for 6.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Apply the Complexity Multiplier
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Complexity&lt;/th&gt;
&lt;th&gt;Multiplier&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simple addition (5 min task)&lt;/td&gt;
&lt;td&gt;0.5×&lt;/td&gt;
&lt;td&gt;"Add a button"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard feature (fits existing patterns)&lt;/td&gt;
&lt;td&gt;1.0×&lt;/td&gt;
&lt;td&gt;"Add a contact form"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New pattern or integration&lt;/td&gt;
&lt;td&gt;1.5×&lt;/td&gt;
&lt;td&gt;"Add payment processing"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Significant architectural change&lt;/td&gt;
&lt;td&gt;2.0×+&lt;/td&gt;
&lt;td&gt;"Rebuild the database"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 4: Calculate the Final Price
&lt;/h2&gt;

&lt;p&gt;Here's the calculator in spreadsheet form:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable&lt;/th&gt;
&lt;th&gt;Your Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Your effective hourly rate&lt;/td&gt;
&lt;td&gt;$______&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimated hours&lt;/td&gt;
&lt;td&gt;______&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;× 1.3 (business overhead)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;× Complexity multiplier&lt;/td&gt;
&lt;td&gt;______&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Subtotal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$______&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rush fee (if applicable)&lt;/td&gt;
&lt;td&gt;$______&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Final Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$______&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Complete Worked Example
&lt;/h2&gt;

&lt;p&gt;You quoted $5,000 for a website. Client now wants a new payment integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Your effective rate:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Target monthly income: $8,000&lt;/li&gt;
&lt;li&gt;Billable hours: 100/month&lt;/li&gt;
&lt;li&gt;Effective rate: $80/hour&lt;/li&gt;
&lt;li&gt;Target rate: $80 × 1.5 = &lt;strong&gt;$120/hour&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Estimated hours:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You think: 8 hours&lt;/li&gt;
&lt;li&gt;With buffer: 8 × 1.2 = &lt;strong&gt;9.6 hours&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Complexity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New payment integration = &lt;strong&gt;1.5×&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Final calculation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(9.6 × $120 × 1.3) × 1.5 = $2,246&lt;/li&gt;
&lt;li&gt;You charge: &lt;strong&gt;~$2,200–$2,500&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would you have come up with $2,200 on your own? Probably not. The formula gives you a defensible number backed by math.&lt;/p&gt;

&lt;h2&gt;
  
  
  Composite Case Study: Turning a $300 Quote Into a $1,170 Quote
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The situation:&lt;/strong&gt; A freelancer quoted $8,000 for a web app. Client asks mid-project: "Can you add a user dashboard?" The freelancer's gut response: "Maybe $300?" That's what most people do — guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applying the formula:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Estimated hours&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Your hourly rate&lt;/td&gt;
&lt;td&gt;$75/hr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;× 1.3 (business overhead)&lt;/td&gt;
&lt;td&gt;× 1.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;× 1.5 (new integration complexity)&lt;/td&gt;
&lt;td&gt;× 1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Calculated quote&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$1,170&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;What the $300 response actually costs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8 hours × $75/hr = $600 (just labor, no overhead)&lt;/li&gt;
&lt;li&gt;With business overhead: you needed ~$975 to break even&lt;/li&gt;
&lt;li&gt;$300 = working at a $37.50/hr effective loss&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The better response:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Happy to help with that! Based on the additional complexity, this falls outside the original scope. My estimate is $1,170, which includes 8 hours of work plus the complexity buffer. I can have it done by [date]. Does that work for you?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Upside:&lt;/strong&gt; You avoided undercharging by $870 on this one change. Over a year of 5-10 scope changes, that's $4,000-$8,700 you keep instead of giving away.&lt;/p&gt;







&lt;h2&gt;
  
  
  Scope Change Rescue Cheat Sheet
&lt;/h2&gt;

&lt;p&gt;When a client springs a scope change mid-project, use this framework to respond without losing the client or your margin:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response template:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Happy to help with that! Based on the additional complexity, this falls outside the original scope. Here's what it would cost to add: [quote using the formula above]. I can have it done by [date]. Does that work for you?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;If they push back on price:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I completely understand budget is a factor. Here are the options: [A] I can simplify the approach to reduce hours, or [B] we defer this to Phase 2 and focus on the original deliverables first."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;If they already agreed to a number and it was too low:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I realized the original estimate didn't fully account for [specific reason]. To deliver this properly, I'd need to adjust to [new number]. The alternative is [simpler version]. Which works better for you?"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Three-Tier Service Options
&lt;/h2&gt;

&lt;h3&gt;
  
  
  $5 — Quick Framing Fix
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; You already have a number in mind but want a second opinion on how to present it to the client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delivered within 24 hours — 1 response&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review of your current scope-change situation&lt;/li&gt;
&lt;li&gt;Suggested price adjustment (if needed)&lt;/li&gt;
&lt;li&gt;One client-ready response sentence you can copy-paste&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Order:&lt;/strong&gt; Send $5 via &lt;strong&gt;PayPal.me/cheapuno&lt;/strong&gt; with your situation (project type, original quote, what client asked for)&lt;/p&gt;




&lt;h3&gt;
  
  
  $10 — Full Price Calculation + Script
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; You have a complex scope change and want a complete price breakdown plus talking points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delivered within 24 hours — 1 response + 1 revision&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete price calculation using the formula above&lt;/li&gt;
&lt;li&gt;2-3 framing options (anchoring high / medium / low)&lt;/li&gt;
&lt;li&gt;A client-ready response script&lt;/li&gt;
&lt;li&gt;A "nuclear option" script if they push back&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Order:&lt;/strong&gt; Send $10 via &lt;strong&gt;PayPal.me/cheapuno&lt;/strong&gt; with your situation + deadline&lt;/p&gt;




&lt;h3&gt;
  
  
  $25 — Deep Dive Review
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; You're about to have a difficult conversation with a client, or you want a complete re-pricing strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delivered within 48 hours&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full price calculation with scenario modeling&lt;/li&gt;
&lt;li&gt;Client communication scripts for 3 different pushback types&lt;/li&gt;
&lt;li&gt;Email template for formal scope change documentation&lt;/li&gt;
&lt;li&gt;Optional: 15-minute async voice memo explaining the reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Order:&lt;/strong&gt; Send $25 via &lt;strong&gt;PayPal.me/cheapuno&lt;/strong&gt; with your situation + what your client said&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: I already told the client a number and it was too low. Can I walk it back?&lt;/strong&gt;&lt;br&gt;
A: Yes — frame it as "I did a more thorough estimate." Clients respect thoroughness more than you think. Use the rescue scripts above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: The client keeps adding small things every week. How do I stop this?&lt;/strong&gt;&lt;br&gt;
A: That's scope creep, not a scope change. Implement a weekly "change request" process: anything added after the original brief costs 1.5× the formula. Mention this in your next client check-in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What if I have no idea how complex the change will be?&lt;/strong&gt;&lt;br&gt;
A: Give a range with a condition: "This looks like it could be 3-5 hours depending on [specific unknown]. I can give you a firm quote after I spend 1 hour investigating — should I go ahead?" Charge $25 for the investigation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: The client says "we'll figure it out later" but I know it'll be a lot of work.&lt;/strong&gt;&lt;br&gt;
A: Never leave a scope change unpriced. Say: "Let's put a placeholder of [formula-based estimate] for now, and we'll confirm the final before I start. Does that work?" Document it in writing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Can I use this for contract work at an agency?&lt;/strong&gt;&lt;br&gt;
A: Yes, but add 20-30% to the final number — agency clients typically have more approval overhead and slower payment cycles.&lt;/p&gt;




&lt;h2&gt;
  
  
  Need Help Right Now?
&lt;/h2&gt;

&lt;p&gt;If you're stuck on a specific situation — maybe you already gave a number and need a second opinion, or you're not sure how to explain the price to your client — send me the details and I'll give you a concrete answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Order:&lt;/strong&gt; &lt;strong&gt;PayPal.me/cheapuno&lt;/strong&gt; with your situation, original scope, what the client asked for, and your deadline.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A tiny pricing calculator for freelance scope changes</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Tue, 30 Jun 2026 23:36:24 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/a-tiny-pricing-calculator-for-freelance-scope-changes-5dh6</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/a-tiny-pricing-calculator-for-freelance-scope-changes-5dh6</guid>
      <description>&lt;h1&gt;
  
  
  The Pricing Formula I Wish I Had When I Started
&lt;/h1&gt;

&lt;p&gt;You built something great. But when it comes to pricing — you freeze.&lt;/p&gt;

&lt;p&gt;"Am I charging too much?" "What if they lowball me?" "I don't even have an offer page..."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This formula fixes that in 10 minutes.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PROJECT_PRICE = HOURLY × ESTIMATED_HOURS × COMPLEXITY × 1.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HOURLY&lt;/strong&gt;: Your base rate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;COMPLEXITY&lt;/strong&gt;: 1.0 (simple) to 2.5 (very complex)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1.2&lt;/strong&gt;: Scope creep buffer (20%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: $100/hr × 20hrs × 1.5 × 1.2 = &lt;strong&gt;$3,600&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Concrete Example (Hypothetical)
&lt;/h2&gt;

&lt;p&gt;Let's say you're pricing a custom dashboard project:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hourly Rate&lt;/td&gt;
&lt;td&gt;$75/hr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimated Hours&lt;/td&gt;
&lt;td&gt;40 hrs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complexity&lt;/td&gt;
&lt;td&gt;1.5 (medium, data viz + auth)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope Buffer&lt;/td&gt;
&lt;td&gt;× 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;$75 × 40 × 1.5 × 1.2 = $5,400&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without the buffer: $75 × 40 × 1.5 = $4,500&lt;br&gt;
The extra $900 covers the inevitable "can you just add a export feature?"&lt;/p&gt;




&lt;h2&gt;
  
  
  Copy-Paste Calculator (Works Immediately)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Option A: JavaScript (embed anywhere)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calcPrice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hourly&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;complexity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;hourly&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;hours&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;withComplexity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;complexity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;withBuffer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;withComplexity&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;withBuffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Usage: calcPrice(100, 20, 1.5) → 3600&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option B: Google Sheets
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Your Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hourly Rate&lt;/td&gt;
&lt;td&gt;$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimated Hours&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complexity (1.0–2.5)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope Buffer (20%)&lt;/td&gt;
&lt;td&gt;× 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Final Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=B2*B3*B4*B5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Option C: Markdown Pricing Table
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Service | Base Price | Add-ons |
|---------|-----------|---------|
| Basic | $___ | Extra revisions +$___ |
| Standard | $___ | Priority support +$___ |
| Premium | $___ | Full ownership +$___ |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why the 1.2 Buffer?
&lt;/h2&gt;

&lt;p&gt;Every project gets scope creep. The 1.2 multiplier (20%) covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unclear requirements that surface mid-project&lt;/li&gt;
&lt;li&gt;"Can you just add..." syndrome
&lt;/li&gt;
&lt;li&gt;Revision rounds you didn't plan for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without it, you're guaranteed to lose money on complex projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  Decision Checklist: Should You Use This Formula?
&lt;/h2&gt;

&lt;p&gt;Answer these 4 questions before you price your next project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Do I have a written scope document (even if brief)?&lt;/li&gt;
&lt;li&gt;[ ] Have I identified the complexity factors specific to this project?&lt;/li&gt;
&lt;li&gt;[ ] Is my hourly rate based on actual market rates, not just "what feels fair"?&lt;/li&gt;
&lt;li&gt;[ ] Does the client understand what's included vs. what costs extra?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you answered "no" to 2 or more&lt;/strong&gt; — before using the formula, get a quick scope review. That's exactly what the $10 tier below is for.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Would Review For $5 / $10
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;$5 — Quick Teardown (3 Specific Fixes)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I read your current offer page or project description&lt;/li&gt;
&lt;li&gt;I give you &lt;strong&gt;3 specific changes&lt;/strong&gt; to your pricing or positioning&lt;/li&gt;
&lt;li&gt;Focus: what's driving away your best-fit clients&lt;/li&gt;
&lt;li&gt;24-hour delivery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;$10 — Deeper Review + Rewritten Angle&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everything in the $5 tier, plus:&lt;/li&gt;
&lt;li&gt;I rewrite your headline or pitch for one specific page&lt;/li&gt;
&lt;li&gt;I give you a concrete outreach angle for your next pitch&lt;/li&gt;
&lt;li&gt;Best for: pricing pages that get traffic but no conversions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;$10 Delivery Terms:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Format: Written review in Google Doc or PDF&lt;/li&gt;
&lt;li&gt;Timeline: 24 hours from payment confirmation&lt;/li&gt;
&lt;li&gt;Scope: One project scope or pricing page, up to 2,000 words&lt;/li&gt;
&lt;li&gt;What's included: Specific adjustments, not a full rewrite&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;→ &lt;a href="https://paypal.me/cheapuno/10usd" rel="noopener noreferrer"&gt;Send $10 via PayPal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After payment, send me your pricing page or project description.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: I'm just starting out. Should I still charge the buffer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Yes — especially when starting. Clients at early stages often have the least clarity about what they want. The buffer protects you from scope expansion on projects where you have the least leverage to renegotiate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: What if the client pushes back on the buffer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Frame it as part of the base calculation, not an add-on. "My rate is $X, and the complexity factor accounts for the typical scope changes I see at this level." Most clients accept this without negotiation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: I don't have an offer page yet. Can I still use this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Yes. Use the formula to price your first proposal. Then come back and &lt;a href="https://paypal.me/cheapuno/5usd" rel="noopener noreferrer"&gt;get a $5 review&lt;/a&gt; before you send it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: How do I know if my complexity factor is accurate?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Start at 1.5 (medium). Go higher if: the client is in a regulated industry, requirements have changed before, or you're integrating with legacy systems. Go lower only if the scope is genuinely simple and well-defined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: The buffer feels like I'm overcharging. What do I tell the client?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: Don't frame it as a buffer. Frame it as "scope protection for both of us." If the project stays clean, they benefit. If scope expands, you're both prepared. Most clients understand this intuitively.&lt;/p&gt;




&lt;h2&gt;
  
  
  Need Help?
&lt;/h2&gt;

&lt;p&gt;If the formula leaves you with more questions than answers, &lt;a href="https://dev.to/cheapuno"&gt;send me a message&lt;/a&gt; or drop a comment below with your specific situation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/cheapuno/3-4033153"&gt;Hub: 3個開發者定價頁常見錯誤&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/cheapuno/i-built-a-freelance-pricing-calculator-4034303"&gt;Calculator: Freelance Pricing Calculator You Can Copy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/cheapuno/i-built-a-freelance-pricing-framework-4033224"&gt;Framework: The Freelance Pricing Framework After Losing $2,000&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Disclosure&lt;/strong&gt;: This post is my own work and may include AI-assisted editing/research where applicable.&lt;br&gt;
If this helped you, you can support my work at: &lt;a href="https://paypal.me/cheapuno" rel="noopener noreferrer"&gt;https://paypal.me/cheapuno&lt;/a&gt;&lt;br&gt;
No tracking. No affiliate links.&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>pricing</category>
      <category>calculator</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
