Posted on February 4th, 2009 at 2:52 pm by Cristian Graziano
Fixed-Fee projects can be dangerous commitments for service providers and consultants. If you use fixed-fee pricing, I have developed a simple model that can help you account — and be compensated for — your level of risk by using a complexity factor.
The model I use for quoting projects is below using a fake widget-making project that assumes an hourly rate of $10/hr. I'll follow up the model with an explanation of how it works and breakdown its various components.
|Task||Best||Worst||P(S)||Est. Time||Sub Total|
|Prepare Project Timeline||1.0||2.0||75%||1.25||$12.50|
|Write-up Project Deliverables||3.0||5.5||80%||3.5||$35.00|
|Complexity (C) Scale||Best||Worst||C-Factor||Adjustments|
This approach has really increased my quoting accuracy dramatically - and is pretty straight-forward to setup using Excel.
How I used to Quote Projects
I used to quote projects quickly by estimating how long I thought something would take me. I would just pull out a piece of paper, jot down milestones, and estimate time. If something particularly stood out as complex - I would estimate that it would take me a little longer - but it was an inconsistent and costly way to quote projects. I usually ended up underquoting projects and completely missing the mark on my time. The model above, along with a detailed scope statement, have made fixed-fee projects go much smoother for me.
Understanding the model
Break down the engagement into major milestones (project management + widget making above), then break each major milestone into sub-components or tasks. Each task will have a certain amount of time associated with it in hours. We can determine this time by estimating two times for each task - a best-case scenario and the worst-case scenario. Here is the breakdown of each column:
Best and worst-case scenario (time in hours)
The best-case scenario takes into account common issues that may arise as a normal part of the engagement, while the worst-case scenario assumes the absolute worst that could go wrong when working on that task (within reason).
Probability of Success - P(S)
What is the probability that the best-case scenario will actually occur. How likely are you to complete this task in the time you've chosen in the best-case column? The probability of failure P(F) equals 1 - P(S).
This tells you how long the task should take you by taking a weighted average of the times and probabilities. Here is the formula: (Best Case Time * P(S)) + (Worst Case Time * (1 - P(S))). This calculation is what makes the model - it allows us to take into account the complexity and potential risk associated with each step - and ensure we are compensated for it. Rather than just quoting the worst-case price and being overpriced, or just the best-case and likely going over on actual hours, we are ensuring we are compensated for the level of risk we are taking.
This is how much you will be charging for this task. The Estimated Time * Your Hourly Rate = Sub Total for that task.
The Complexity Factor
At the bottom, we get to the complexity factor. This lets us know how complex (risky) this engagement will be. Best tells us how optimistic we are about this project by taking a weighted average of each best-case task with its probability of success, and using how large of a part of the project that task is as the weight. (i.e. 10 minutes out of a 60 minute project should hold a weight of 10/60 = 17% for that task). The worst column is our risk-level (1 - the best column). This, multipled by 100, becomes our complexity factor (or C-Factor for short).
The example project above has a complexity factor of 10 out of 100. You can make a price adjustment in dollars depending on how risky you consider the C-Factor to be.
Add up your subtotals with your C-Factor adjustment to get the estimated quote for the project: $247.40.
Why The Complexity-Factor Works
- You are taking on risk and accounting for it in your time
- It forces you to consider what can go wrong at each task - and by how much
- You are incorporating the likelihood of a "perfect" task actually occuring, and making the quote more realistic by adjusting for this
- It outputs a quote based on the time, complexity, and C-Factor adjustments
If in the example above we had just quoted our best-case scenario as I used to do - we would have ended up with a quote of 23.25 hours. Our quote using this model was for 24.74 hours. It's only an extra hour-and-a-half, but it's an increase of 6%. Had the project been more complex or had more uncertainties, the difference would have been much greater.
How your Clients Benefit
Some quoting models might say to take your estimated hours and just double it, or even create a fudge factor of some percent. This ends up costing clients with simple needs much more money than it would by using this method. By using a C-Factor, we are providing a more accurate quote to all of our clients - and the clients with basic needs are not overpaying.
I've been using this model for sometime now and really like it. It has been really accurate when I compare my forecasted hours to actual. How are you quoting fixed-fee projects? Do you use a fudge factor or sometimes end up underquoting complex projects? Do you have any suggestions that would make this model better?