Build the mental model
Pricing a service as simply hours multiplied by an hourly rate ignores most of what actually determines what a client will pay and what a business needs to survive. Real pricing accounts for the value created, the scope and complexity of the work, the risk taken on, the provider's experience and reputation, current market rates, urgency, the level of support included, and the underlying cost of running the business at all.
| Model | When It Fits |
|---|---|
| Hourly | Scope is genuinely uncertain and both sides need flexibility, but revenue stays tied to time. |
| Project | Outcome and scope are well-defined and fixed; requires disciplined scope management. |
| Retainer | An ongoing relationship needs recurring, defined access rather than one deliverable. |
| Value-Based | You can genuinely show a clear, credible economic outcome for the client -- not just assert a bigger number. |
| Cost-Plus | You need to know the minimum sustainable price -- the floor every other model should still clear. |
That pricing floor must account for labor, software, cloud and API costs, contractors, applicable taxes and fees, support time, risk, and profit. Exact tax treatment varies by jurisdiction and business structure, so treat this course as a framework for thinking, not as jurisdiction-specific tax or legal advice.
PRICING MODELS LANDSCAPE
------------------------
Hourly -> optimizes for: flexibility on uncertain scope
Project -> optimizes for: a fixed, defined outcome
Retainer -> optimizes for: ongoing recurring access
Value-Based -> optimizes for: the client's economic value
Cost-Plus -> optimizes for: a guaranteed minimum marginConnect it to a real scenario
Before quoting any price, calculate your pricing floor first, using real numbers rather than round guesses. List every cost the engagement actually creates: your labor at a realistic rate, software subscriptions, API or cloud usage, any contractor cost, support time, and a margin that reflects real business risk -- not just enough to break even. The function below turns those inputs into a minimum sustainable price.
Once you know the floor, choose a pricing model deliberately instead of defaulting to hourly out of habit. If scope is well-defined, project pricing protects your time better than hourly. If the relationship is ongoing, a retainer creates predictable revenue. If you can point to a specific, verifiable business outcome the client cares about, value-based pricing may fit -- but only if you can actually show your reasoning, not just assert a bigger number.
Never present a price you cannot explain in plain terms if the client asks how you arrived at it.
Try the working example
function calculatePricingFloor({ laborCost, softwareCost, apiCost, supportCost, desiredMargin }) {
const totalCost = laborCost + softwareCost + apiCost + supportCost;
const marginAmount = totalCost * (desiredMargin / 100);
const minimumPrice = totalCost + marginAmount;
return {
totalCost,
marginAmount: Math.round(marginAmount),
minimumSustainablePrice: Math.round(minimumPrice),
};
}
const example = calculatePricingFloor({
laborCost: 1800,
softwareCost: 120,
apiCost: 60,
supportCost: 100,
desiredMargin: 25,
});
console.log(example);Given laborCost 1800, softwareCost 120, apiCost 60, supportCost 100, and desiredMargin 25, calculatePricingFloor returns totalCost 2080, marginAmount 520, and minimumSustainablePrice 2600 -- the lowest price that covers cost plus a genuine 25% margin.5-minute try-it
List your own real costs for a recent or upcoming project -- labor, software, API/cloud, support time -- and pick a margin that reflects the actual risk involved. Run calculatePricingFloor and compare the result to what you would have quoted from instinct alone.
One important caution
Quoting a price based on gut feeling or competitor rates without first calculating your own actual cost floor.
Using value-based pricing as a justification to charge more without genuinely understanding or being able to show the client's real numbers.
Value-based pricing — Wikipedia — Digital Business