<?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>pipeline test</title>
      <dc:creator>張旭豐</dc:creator>
      <pubDate>Sun, 12 Jul 2026 12:24:54 +0000</pubDate>
      <link>https://dev.to/_0c004e5fde78250aee362/pipeline-test-51ln</link>
      <guid>https://dev.to/_0c004e5fde78250aee362/pipeline-test-51ln</guid>
      <description>&lt;p&gt;pipeline test 1222&lt;/p&gt;

</description>
    </item>
    <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>
  </channel>
</rss>
