Estimating is hard, especially when you’re a freelancer or consultant.
If you provide the wrong estimate, there’s a high chance you won’t get the project.
This is true if you estimate too high or too low.
How do you provide good estimates that give the client confidence and are reasonable?
There’s a couple of tips …
Tip 1: Never give an estimate over the phone or immediately when asked
Unless you know for sure how much it will cost. You must be rock solid on this without any wavering hesitation.
An example of this would be if you were a WordPress developer and the client wanted a particular theme set up that you have installed and set up 20 times before. You have scripts written for it. You have the entire process automated almost. Every time you set up this theme in WordPress, it takes you 15 hours and never more. Then you can give the number.
You have to be rock solid on this. If you’re unsure in any way, even 1% do not give a number.
Instead, say, “I don’t know for certain, but I need to take a deeper look at this. Let me get back to you in 24 hours with an estimate, and we’ll go from there.”
If they keep pressuring you, which will happen … you can use the amplify technique to detract them from pushing you.
“C’mon, you’re the pro here. You’ve got to have a rough ballpark idea of how much it’s going to cost. Just let me know; I trust you.”
“I don’t know, and I have a process in which I go through for all estimations, so it is hard to say. I do know it won’t be a million dollars, though. Haha. Let me get back to you asap on this. Don’t worry; I’ll take care of you.” Say this with a friendly tone.
They’re looking for you to say a number, so they stick you with it. If you say $2,000 right then and there, and then you get into the nitty-gritty of the estimate and see that it’s going to be closer to $6,000, well, when you tell the client this, they’re not going to be happy.
Be sure to give yourself some time 24-72 hours (depends on your schedule/etc.); there’s a reason for this which I’ll get below. I usually opt for 24 hours to show that I’m prompt. If I’m busy with existing client work, I’ll let them know that it might be 48-72 hours before I get back to them.
Tip 2: Understand the Scope of the Project
If you don’t know the project’s scope, how are you going to estimate it?
The difference between a four-screen mobile app and a 24 screen mobile app is vast.
How do you get the scope?
It would be best if you asked for as spec.
If you’re lucky, the client will have a spec that they can give you. If you’re fortunate, they’ll have mockups. If you’re working with a top-tier pro client, you’ll get all of the above as well as a color and style guide and more.
I know what you’re thinking …
I don’t have any of that. The client wants me to build a slimmed-down version of Strava; how do I estimate that?
Simple … have a discovery call.
The discovery call is a call with the client where the only goal is to discover what the project should entail so you can estimate it. You need to ask questions about the app, how many screens it has (or pages if it’s a web page, or endpoints if it’s an API, or just integration points if it’s an integration). It would be best if you asked about error conditions, logging, monitoring, etc.
This will help you develop a spec that you can use to estimate.
A couple of things about discovery calls …
- You need to time-box them. I recommend 30-60 minutes at most. If it’s longer than that, then you need to put a price on it.
- It would be best to get them to provide you with a spec via email first. Ask the client all the same questions you would ask them in the call, but over email.
I’m looking forward to helping you and your team out. To accurately estimate the project, I need to get my hands around the scope of the project. Would you be so kind as to send me the following details:
- What screens you need.
- What each screen does.
- Is there any API communication with each screen? If so, what kind?
- Does this app need portrait and landscape mode?
- What shall we do when we encounter errors (if you’re unsure, I can advise you and your team on some best practices).
- Are there any logging requirements?
- Do I need to install analytics software. If so, what actions need reporting?
If you have design mockups, that would be great as it would help me make my estimate more concrete. If not, no big deal; we can figure it out as we go.
You want as much detail as possible.
Once you get your date, you’ll need to estimate each screen. Depending on the screen, this can be anywhere from 8-16 hours per screen, in my experience.
Why such a variance? If all goes well and perfect, it should take 8 hours; if not, it could take 16.
This estimate example is not rock-solid advice I’m giving you. This varies by app. You have to understand the scope of the app. For example, if you needed me to build simple forms over data app in Flutter with four screens using the material design theme with default colors … well, I can bang that out in a day or two. It all depends on your skill level and what you’re building.
If they need custom animations, special interactions, and so forth, the price goes up—That’s just how it goes.
There are tons of estimating books out there, but none of them have ever really made me confident more than experience.
Tip 3: Provide ranges, not concrete numbers
When you provide your estimate, do not provide a concrete number.
What is a concrete number?
A concert number looks like this: $12,250.00
It would look like this in an estimate:
To build your application, it will cost $12,250.00
Why should you not do this?
Because clients always want more yet don’t want to pay more. Suppose you give a concrete number, you pigeonhole yourself into that number and then have to argue your way out of it if the specifications change.
… and they will change … they always change.
I’ve had hundreds of clients over rate last 15 years, and I’ve never had one single project where the specification did not change.
Therefore, you will want to give a range estimate.
You give a low-high estimate.
Example: This project will cost anywhere from $12,250 to $20,500
This estimate includes a low-end “everything is perfect” number and then a high-end “everything goes wrong” number.
These numbers can be vastly different and most of the time are. Sometimes the high number can be double or triple (or more) of the low end.
When would it be like this?
This variance would happen when the client does not give you much to estimate but has all kinds of requests. The more unknowns there is, the more variance in the estimate.
If the client gives you rock-solid mockups, design style guides, assets, etc. Your estimate might look more like: $12,250 – $16,250
Notice there is still a range. Remember … there are always changes to the specification. ALWAYS.
Clients are human, too; they forget things.
Note, I do realize this goes against much of the negotiating advice out there. However, I have used this exact method for over 15 years in my freelance and consulting career and have rarely ever lost a bid. I’ll tell you why …
When clients get this estimate, they will attach themselves to the lower number. That’s ok.
You have to make it very clear that the estimate is from X-Y and that, most likely, the price will fall between X and Y.
“This project will cost anywhere between $12,250 – $20,500. Why such a large range? If everything goes perfect and we do not have to change anything based upon the requirements provided, the price will be $12,250. If everything goes sideways and we have lots of problems, and many changes need to take place, it could end up going up to $20,500. I often find that projects end up somewhere in the middle because there always seems to be something to change. I’ll do my best to get you close to the lower end, but I wanted you to be aware of where it could go based upon my experience.”
This statement puts the onus on the client. It says this: “Look, give me a rock-solid spec, and your price will be lower. Give me very loose specs, and it will cost you because you will keep changing things and changes cost money.”
This process works wonders with clients and usually opens the doors because it shows you’re flexible, and gives them room to breathe and hope that you can do the project for the lower price, but you’ve made it clear that it CAN cost more if they give you garbage specs.
Tip 4: Email your Estimate with Letterhead
I do not advise delivering your estimate over the phone unless you have a background in sales and negotiating.
When you’re live on the phone or in person, you’re more apt to feel the pressure of the sales process, and you’re more apt to make mistakes early in your career that can cost you a significant amount of money.
I’ve found it’s often best for software developers to deliver the estimate over email because it’s truly asynchronous. Software developers are often very well-spoken in the written form. Use that to your advantage.
In an email, you can spend time crafting the message so that it’s very professional.
I recommend that you provide the estimate in a PDF on letterhead that you’ve created. You can do this in Google Docs; it’s easy. Add an image to the header of your doc, put your freelancing/consulting company name, their name and then outlay the project. Then drop the price.
This one just makes you look pro.
This is far better than a random email saying,
“Hey man, I think this should cost about $1,500 bucks”.
If you know the person and you’re very good friends with them, then that approach will probably work for you. However, if you’re working with a legit client whose business you want to win, professionalism will go a long way.
Put your estimate and explanation (as I did above with the range estimate) into that PDF and attach it to the email.
When you email them, let them know that you appreciate the opportunity and that the estimate is attached. Also, let them know that they should email you if they have any questions. Then, set a reminder for 48 hours. If the client does not reply within 48 hours, you should reach out to them again and ask them if they had any questions about the estimate or need clarification.
Tip 5: The MVP Approach
Hopefully, when you hear back from the client, you’ll get a “Yes,” and the engagement will start. Unfortunately, it doesn’t always work that way.
The client will often reply, saying something is more than they expected.
Now it’s time to dig in and see if you can get a number from them.
You can ask them,
“I’m curious, how much did you think this project was going to cost?”
Very often, they’ll reply with their own estimate.
Let’s say your estimate was $12,250-$20,500. They reply back with $6,000-$8,000.
If they do not decide to move forward because your estimate is too high, you do not lower your prices because prices are prices. That’s just how it is. When you buy a house, you don’t get to tell the seller that you only have $50,000 to spend, so they should lower the house price from $200,000 to meet what you have. The world doesn’t work that way.
However, there is another option … the MVP approach.
The MVP approach is where you figure out the bare minimum that they need to have an operational app/web app/etc. Very often, the original estimate is an estimate for EVERYTHING they need and the kitchen sink.
Tell them that you still want to work with them and that you’d like to get something working so they can ship their product. Tell them that you can trim some screens and features to get it down to $6,000 – $8,000.
In short, you’re pruning the scope of the project to fit within their budget yet still building something of value for them.
Now you have to work with the client to figure out the minimum viable product (MVP).
- What are the basic screens and features that have to be there?
- What screens are not vital?
Very often, a client will say, “It all has to be there.”
That’s rarely the case.
Use your analytical mind to help them figure out the product’s key features and then prune down the scope to ship just those.
Very often, this is possible, but sometimes it’s not. Sometimes the client is too unreasonable with their idea of how much it should cost. That’s ok. You have to be willing to walk.
However, much of the time, you can prune the project’s scope to fit their budget. At that time, you build the product and do your absolute best.
What happens next is serendipity.
When you do this for them, and it proves valuable and fruitful for them. The client will often invite you to develop the other features via another bid or an hourly engagement.
I’ve lost track of how many times this has happened.
As an example, about six years ago, a client reached out and wanted me to build an Android app. I estimated it would cost anywhere from $24,000 – $40,000 to build.
They thought that was outrageous.
I used the MVP approach and got it down to $10,000 with the MVP features.
We shipped the product, they loved it, and they had me develop more features. I was eventually offered a CTO role at the company (which I declined for various reasons). Overall this was a $10,000 client that turned into a $60,000 client at the end.
Simply because of the MVP approach. I’ve used this for MANY clients, and it works wonders.
The Final Word
If you follow these tips, you’ll find that you have more success with your estimates because more conversations will happen, and it will allow you to build trust and authority with the client. Trust is the foundation of these relationships. Being professional and attentive to their needs as a business will win you more opportunities than an informal estimate.
I hope that helps.