
Key takeaways
• Software development cost estimation is method selection, not math. Five methods each answer a different question: bottom-up for locked scope, top-down for the first call, parametric for repeatable work, PERT for a few unknowns, Monte Carlo for board-level risk.
• The same telehealth MVP gives five different numbers. We run one project through all five below: roughly 300 developer-days, but the ranges differ from ±15% (bottom-up) to ±30% (top-down). Each is correct for its own unknowns.
• Quote effort first, then a rate you can swap. We show the full bottom-up spreadsheet: 180 raw dev-days, plus overhead and an explicit risk reserve, reaching ~300 dev-days and a costed band.
• Single-point estimates lie. At kickoff, estimates swing 0.25x to 4x (McConnell’s cone of uncertainty). Communicate a range with a confidence level, and put the risk reserve on its own line.
• AI does not automatically make estimates smaller. A 2025 controlled trial found experienced developers were 19% slower with AI tools, not faster. Recalibrate from your own actuals, not the hype.
Why Fora Soft wrote this playbook
A bad estimate does not just miss a number. It sets a budget the team then quietly fails against for six months. We have shipped 250+ products since 2005, and we scope and price every one before a line of code is written, so we have watched which estimation methods hold up and which fall apart the moment scope moves.
This is the mechanical companion to our CTO’s guide to project estimation. That one covers the politics: why estimates fail, how to negotiate, RFP red flags. This one gets into the five methods themselves, with a worked spreadsheet you can copy and honest notes on where each one breaks. If you are a founder, CTO, or finance lead budgeting a build, the goal is simple: leave here able to produce a defensible number and explain the range behind it.
The stakes are not abstract. A McKinsey study with the University of Oxford of 5,400 large IT projects found they run on average 45% over budget and deliver 56% less value than planned (McKinsey with the University of Oxford, 2012). Estimation discipline is what separates the projects that ship from the ones that become cautionary tales.
Need a realistic number for your build?
Send us the brief. Within 48 hours you get a real estimate, a stack recommendation, and a clear next step, at no cost and no obligation.
Why most software cost estimates miss
Most estimates miss because the team picks the wrong method for the unknowns they actually have. The classic failure: using a top-down “this feels like that other project” guess to price a fixed-bid contract that needed a full breakdown. Or the reverse, spending three days on a bottom-up spreadsheet for a scope so fluid it is stale by week two.
There is a hard limit on how good any early estimate can be. Steve McConnell’s cone of uncertainty puts the swing at project kickoff at 0.25x to 4x: a build you call “$200k” could land anywhere from $50k to $800k until the requirements are pinned down. The cone narrows to about ±25% once the interface and data model are defined. That is not pessimism, it is measured. It is also why a single number with no range quietly sets everyone up to be wrong.
So the discipline is matching method to what you do not know. Scope locked and you have built similar before? Bottom-up gives you ±15%. Scope locked but the domain is new to your team? Parametric or PERT helps you reason about the gaps. Scope still moving? No method buys certainty, and time-and-materials with weekly checkpoints beats a fixed number that expires in a fortnight. The map below is how we route a project to a method on the first call.

Figure 1. Route the project by two axes: how locked the scope is, and whether you have shipped similar work before.
Method 1: Bottom-up estimation
Bottom-up estimation decomposes the product into user stories or epics, sizes each one, sums them, then adds overhead and a risk reserve. It is the most accurate method when the scope is locked, and the one clients trust most because every number traces back to a task they can see.
How it works
Break the build into modules, then stories. Size each story in developer-days (or story points, converted later). Add overhead for QA, project management, and code review. Add an explicit risk reserve. Convert the total to calendar time using real team velocity, not a wished-for number.
Where it wins and where it breaks
It wins on fixed-bid contracts with settled scope: expect ±15% when the team has done similar work. It breaks when scope is volatile (the breakdown rots faster than you can maintain it) or when the team has never built this kind of product, so the story sizes are guesses wearing a spreadsheet. It also costs real time: one to three days of a senior engineer plus a PM for a mid-size build.
Reach for bottom-up when: the scope is locked, the contract is fixed-bid, and your team has shipped something like it. Best accuracy for a moderate amount of estimation effort.
Method 2: Top-down analogous estimation
Top-down (analogous) estimation prices a new project against one or more past projects that look similar, adjusting for the differences. It is the fast method for a first conversation, when you need to tell a client the order of magnitude before anyone commits to a breakdown.
How it works
Pick one to three reference builds. Adjust for what is different: more platforms adds effort, a simpler workflow removes it, an unfamiliar stack adds risk. Output a range, never a point. A worked version sounds like this: “That video platform took six months and shipped on two platforms. Yours adds Android (call it +30%) and drops recording (−15%), so figure 6 to 7 months, and we will confirm with a bottom-up pass.”
Where it wins and where it breaks
It wins on speed: 30 minutes to two hours, ideal for sales conversations and go/no-go calls. It breaks when you lean on a single reference point or hide the ±30% behind a confident-sounding figure. Treat it as a sanity check on the bottom-up that follows, never as the contract number.
Reach for top-down when: you are on the first call and need an order-of-magnitude range fast. State the ±30% out loud so nobody mistakes it for a quote.
Method 3: Parametric estimation (FPA, COCOMO II)
Parametric estimation drives effort from a model with weighted inputs, calibrated on your own history. Function Point Analysis counts what the software does; COCOMO II turns size and cost drivers into person-months. Both are only as good as the data you feed them.
The two models that matter
Function Point Analysis (IFPUG, ISO/IEC 20926): counts external inputs, outputs, inquiries, internal files, and external interfaces, each weighted simple, average, or complex. The count is language-agnostic, which is why it survives stack changes better than lines of code.
COCOMO II (Boehm, 2000): Effort in person-months = A × Size^E × the product of 17 effort multipliers, where A ≈ 2.94 and the exponent E = 0.91 + 0.01 × the sum of 5 scale factors. Size is in thousands of lines of code or converted function points. The exponent is the point: past a threshold, effort grows faster than size, which is the math behind “the big rewrite always costs more than you think.”
Where it wins and where it breaks
It wins for repeatable work where you have five or more comparable past projects to calibrate against, common in enterprise IT. It breaks on novel builds (custom AI, real-time video) where no two projects are alike, and it fails silently if you borrow textbook coefficients instead of your own. Most teams cannot run full FPA; an FPA-light version, counting stories weighted 1/3/5 by complexity against a calibrated dev-days-per-point rate, is a solid first-pass check.
Reach for parametric when: you ship five or more similar projects a year and have the calibration data. Skip it for one-off or genuinely novel builds.
Method 4: PERT three-point estimation
PERT turns a guess into a range with a confidence level by asking for three numbers per task instead of one. It is the cheapest way to make uncertainty visible, and it slots neatly onto the one or two risky modules inside an otherwise well-understood build.
The formula, worked
For each task estimate optimistic (O), most likely (M), and pessimistic (P). The expected value is (O + 4M + P) / 6; the standard deviation is (P − O) / 6. Sum the expected values; the project standard deviation is the square root of the summed task variances. Take a custom AI scribe integration:
O = 4 weeks (vendor API stable, fine-tuning works first try) M = 6 weeks (most likely) P = 12 weeks (API changes mid-project, more training data needed) Expected = (4 + 4*6 + 12) / 6 = 40 / 6 = 6.67 weeks Std dev = (12 - 4) / 6 = 1.33 weeks 95% confidence (Expected +/- 2 SD) = 4.0 to 9.3 weeks
Where it wins and where it breaks
It wins when a build has one to three high-uncertainty modules: run PERT on those, bottom-up on the rest. It breaks when estimators anchor the three points too close together, which collapses the range back to a single optimistic number. The three values only help if the pessimistic case is genuinely pessimistic.
Reach for PERT when: a mostly-known project has one to three genuinely uncertain modules. Use it on those, bottom-up everywhere else.
Method 5: Monte Carlo simulation
Monte Carlo simulation samples a probability distribution for every task thousands of times to produce a full cost-and-schedule curve, not a single figure. It answers the question a board actually asks: “What is the chance we come in under budget?”
How it works
Assign each task a distribution (triangular or PERT-beta from the same O/M/P you already gathered). Run 10,000 simulated projects, sampling each task once per run. The output is a cumulative curve: “80% chance of finishing under $1.2M,” or a P50 and P80 you can budget against. Thirty lines of Python with numpy does it; the @RISK Excel add-in does it without code.
Where it wins and where it breaks
It wins on large, risk-heavy budgets where the question is confidence, not a point: think $1M-plus programs and board reporting. It breaks with non-technical stakeholders, who hear “20% chance of $1.5M” as “you said it might be $1.5M.” It also costs setup time (half a day per project) and, worse, projects false precision if the input distributions are made up. Garbage distributions in, confident garbage out.
Reach for Monte Carlo when: the budget is large, risk is real, and stakeholders can read a probability curve. Overkill below roughly $500k.
Want a second opinion on a quote you already have?
Send us a competitor’s estimate. We will pressure-test the method, the overhead, and the risk reserve, and tell you where it is soft.
Bonus: story-point estimation for agile teams
Story points deserve a section because they are the method most often misused. A story point is a unit of relative effort, not a duration. The team sizes work in points (Fibonacci: 1, 2, 3, 5, 8, 13), ships a stable number of points per sprint (velocity), and divides the remaining points by velocity to forecast sprints. The conversion to cost only works once velocity is real.
Planning poker is the estimation ritual: everyone sizes a story privately, reveals at once, and the outliers explain themselves. It surfaces hidden assumptions faster than any spreadsheet. T-shirt sizing (XS to XL) is the coarser cousin, useful early when stories are still vague.
The trap is velocity calibration. New teams over-commit, velocity inflates for a few sprints, and then the forecast collapses when reality lands. Calibrate from three to five real sprints of shipped work before you convert points to a date, and never to a fixed price you would sign. For more on why the human side of this is so slippery, see why developer time estimates do not always work.
The five methods on one project, side by side
To make the differences concrete, we ran one project through every method: a HIPAA telehealth MVP, roughly the shape of CirrusMED, one of our telemedicine builds. Ten clinicians, WebRTC video visits, an EMR, secure messaging, and subscription billing. Here is what each method produced, in developer-days, plus where each one is weakest.
| Method | Estimate (dev-days) | Time to produce | Confidence | Where it breaks |
|---|---|---|---|---|
| Bottom-up | 300 (±15%) | 1–3 days | Tightest | Rots if scope moves |
| Top-down analogous | 210–390 (±30%) | 1 hour | Widest | One reference skews it |
| Parametric (FPA-light) | 310 | 4 hours | Model-driven | Needs 5+ past projects |
| PERT 3-point | 300 mean, 250–350 (95%) | 1 day | Interval given | Fails if ranges too narrow |
| Monte Carlo (10k runs) | 305 median, 270–350 (80%) | Half a day | Full curve | False precision on bad inputs |
All five cluster around 300 developer-days. The spread is the story: bottom-up is tightest because it has the fewest unknowns to amplify; top-down is widest because it rides on one comparison; Monte Carlo gives the richest output for the highest setup cost. Plotted on one axis, the overlap is obvious, and so is why you would pick each.

Figure 2. The same project, five methods. The center dot is each method’s point estimate; the bar is its range.
A real bottom-up spreadsheet, worked end to end
This is the spreadsheet behind the 300-day bottom-up number, module by module. Raw engineering first, then overhead and risk as their own lines, so the client sees exactly what they are paying for. No hidden padding.
| Module | What it covers | Dev-days |
|---|---|---|
| Auth & profiles | Patient and doctor accounts, roles | 18 |
| Scheduling | Availability, booking, SMS/email reminders | 22 |
| WebRTC video visits | HIPAA-grade, in-browser, no download | 40 |
| Secure messaging | 24/7 doctor-patient chat, notifications | 20 |
| EMR | Vitals, allergies, prescriptions, tabs | 30 |
| Lab & imaging orders | Order to testing center, results back | 14 |
| Subscription billing | Monthly/annual plans, Stripe | 20 |
| Admin dashboard | Practice-side management | 16 |
| Raw engineering | Sum of modules | 180 |
| + Overhead | QA 25%, PM 12%, review 8% (+81) | 261 |
| + Risk reserve | 15%, locked and familiar domain (+39) | 300 |
Now cost. Quote effort first, because the rate is the one number a client can actually change. Three hundred dev-days is 2,400 hours. At a $70/hour blended rate that is about $168,000; at $110/hour, about $264,000; at a US agency’s $150/hour, about $360,000. Same build, same effort, three very different invoices. Our own estimates land at the lower end because Agent Engineering compresses the scaffolding, tests, and boilerplate that used to eat junior hours. The math is below.

Figure 3. The bottom-up rollup, from raw engineering to a cost band you can defend line by line.
How we combine methods on a real bid
No single method wins alone on a real bid. We stack them. A fast top-down pass sets the order of magnitude and catches anything obviously wrong. A bottom-up breakdown produces the number we would actually sign. PERT covers the one or two modules that scare us. The risk reserve goes on its own line. And what the client sees is a range with a confidence level, not a single figure pretending to be certain.

Figure 4. Our estimation pipeline: sanity-check, decompose, model the risky bits, reserve explicitly, communicate a range.
One more thing worth stealing: when the top-down and bottom-up numbers diverge by more than 30%, we stop and find out why. Either the analogous reference was wrong, or the breakdown missed work. That gap is the single most useful signal in the whole process, and it is free.
Mini-case: the CirrusMED estimate that held
The situation. A US private medical practice wanted to move roughly 1,500 patients onto HIPAA-compliant video care, with an EMR, messaging, and subscription billing. The owner is a physician, not a software buyer, so a raw dollar figure with no reasoning behind it would have been useless, and impossible to trust.
The plan. Before quoting, we ran a discovery pass: detailed wireframes and user stories for every screen. That turned a vague “telehealth app” into a story list we could size bottom-up, module by module, exactly like the spreadsheet above. The uncertain pieces (HIPAA-grade WebRTC, the EMR data model) got three-point ranges; everything else was decomposed and summed.
The outcome. The build shipped as scoped: video visits, EMR with vitals and prescriptions, 24/7 messaging, lab orders, and DPC subscriptions from $39/month. In the client’s own words: “A detailed wireframing and user stories are done in a fantastic way and timely fashion. All my requirements are taken care of, and the result is that it greatly facilitated development cost estimation and technology stack analytics.” The estimate held because the discovery work made it honest. Want a similar breakdown for your build? That is exactly what the free scoping call produces.
A decision framework: pick a method in five questions
1. Fixed-bid or time-and-materials? Fixed-bid demands bottom-up. Time-and-materials tolerates top-down or PERT, because you correct weekly.
2. How big is it? Under $50k: top-down is fine. $50k–$500k: bottom-up. $500k–$5M: bottom-up plus PERT on the uncertain modules. $5M-plus: add Monte Carlo.
3. Have you shipped this kind of product before? Yes: analogous plus bottom-up. No: PERT or Monte Carlo with explicit, generous risk reserves.
4. Who reads the estimate? Engineers want the bottom-up detail. A board wants a range and a confidence level. If both, produce both views from the same numbers.
5. How long can you spend estimating? One hour: top-down. One to two days: bottom-up. A week: PERT or Monte Carlo. Match the method to the estimation budget, then hand the whole thing to a partner who does this daily, like our planning and analytics team.
Five estimation pitfalls that blow budgets
1. A single number with no range. “$200k” sounds precise and is a trap. It hides the cone of uncertainty instead of communicating it. Always give a range or a confidence interval.
2. Hidden risk reserves. Padding the number without naming it feels safe until the project lands at 105% of quote and the client feels misled. Make the reserve an explicit line item: 10–15% on well-scoped work, 20–30% on novel territory, 50%-plus on true R&D.
3. Skipping the non-functional work. Security, compliance, performance, and accessibility are real effort and routinely left out of the story list. On a regulated product they can be a large slice of the total. Our non-functional requirements checklist is the list we estimate against.
4. Optimistic velocity. Sizing the work with a velocity the team has never actually hit is the fastest way to a late project. Use three to five sprints of shipped history, not a best case.
5. No post-mortem. Every finished project is calibration data for the next one. Skip the actual-versus-estimate debrief and your team never gets better at this. It is the cheapest accuracy you will ever buy.
KPIs: how to measure estimation accuracy
Quality KPIs. Estimate accuracy: actual within 15% of estimate on at least three of every four projects. Risk-reserve consumption: aim to use 50–70% of the reserve. If you always use under 30%, your reserves are too fat and your quotes are uncompetitive; over 90% and they are too thin.
Business KPIs. Win rate on quoted work (30–45% on warm leads is healthy). Delivered margin against quoted margin, within 5%. A method that wins every bid is priced too low; one that wins none is priced too high or explained too poorly.
Reliability KPIs. Post-mortem rate: 100%, every project gets a debrief. Mid-project change orders per project: a high count means the scope was underspecified before you estimated, not that the estimate was wrong.
When NOT to give a fixed estimate
Sometimes the honest answer is that a fixed number would be a lie. If the scope is still moving weekly, a fixed estimate is stale before the ink dries, and defending it turns every good idea into a change-order fight. If the work is genuine research, where the point is to find out whether something is even possible, effort is unknowable by definition and a fixed bid just transfers that risk to whoever is most optimistic.
In both cases, time-and-materials with a capped discovery phase beats a fixed quote. Spend two to four weeks turning unknowns into a real story list, then estimate the now-known part with confidence. That is the same move that made the CirrusMED number hold, and it is why the first thing we sell is often a planning phase, not a build. Saying “we cannot fix-price this yet, and here is why” builds more trust than a confident number you will spend six months walking back.
Estimation tools we actually use
The tool matters less than the discipline, but the right one removes friction. For bottom-up, a shared spreadsheet with the module/overhead/reserve structure above beats any fancy app, because the client can read every cell. For agile forecasting, Jira or Linear with a stable velocity chart does the point-to-sprint math. For PERT and Monte Carlo, the @RISK Excel add-in works without code, or 30 lines of Python with numpy gives you the same curve and version-controls cleanly.
A word on AI estimators. Large language models will happily produce a confident-looking number, and they are useful as a first-pass sanity check. But they miss your team’s real capacity and your project’s specific context, so never ship one as the final estimate. A senior engineer has to audit it against your actuals. And do not assume AI shrinks the build: a 2025 controlled trial found experienced developers were 19% slower with AI tools, even though they believed they were faster. Recalibrate from measured results, not vibes. If you want a starting point, our public cost calculator gives a ballpark before the real scoping call.
Ready to turn a vague idea into a real number?
We will run the discovery, build the bottom-up spreadsheet, and hand you a range you can take to your board. First estimate is free.
FAQ
What is the best software development cost estimation method?
There is no single best method; the right one depends on your unknowns. Bottom-up is most accurate for locked scope (±15%), top-down is fastest for a first quote (±30%), parametric suits repeatable work, PERT handles a few uncertain modules, and Monte Carlo is for large, risk-heavy budgets. Most real bids combine two or three.
How accurate can a software cost estimate be?
At kickoff, not very: McConnell’s cone of uncertainty puts the swing at 0.25x to 4x until requirements are defined. It narrows to about ±25% after the interface and data model are set, and to ±15% with a full bottom-up breakdown on familiar work. Anyone promising a precise number before discovery is guessing.
What is the PERT three-point formula?
Expected value = (Optimistic + 4 × Most likely + Pessimistic) / 6. The standard deviation is (Pessimistic − Optimistic) / 6. For a task estimated at 4, 6, and 12 weeks, the expected value is 6.67 weeks and the 95% range is about 4 to 9.3 weeks.
How much overhead should I add for QA and PM?
Typical multipliers on top of raw engineering: QA 20–30%, project management 10–15%, code review and architecture 5–10%, and DevOps 8–15% for non-cloud-native builds. Total overhead usually lands at 35–55%. Make each a separate line so the client sees what they buy.
What is a reasonable risk reserve?
10–15% for well-scoped work with an experienced team, 20–30% for novel territory, and 50%-plus for research-style work where unknowns dominate. Put it on its own line. Hidden reserves erode trust the moment the actual lands above the quote.
Does AI make software estimates cheaper?
Not automatically. AI speeds up boilerplate, tests, and scaffolding, but a 2025 controlled trial found experienced developers were 19% slower with AI tools on mature codebases. The net effect is project-specific, so recalibrate your coefficients from your own measured results rather than assuming a blanket speedup.
Are story points the same as time estimates?
No. Story points measure relative effort, not hours. You convert them to time only through velocity, the points a team actually ships per sprint. Calibrate velocity from three to five real sprints before turning points into a date, and never into a fixed price.
Should I always combine bottom-up with top-down?
For anything above $100k, yes. Use top-down as a fast sanity check on the bottom-up number. If the two diverge by more than 30%, stop and investigate: either the analogous reference is wrong or the breakdown missed work. That gap is one of the most useful signals you get.
What to read next
CTO Guide
CTO’s Estimation Guide
The strategy and politics behind the numbers.
Checklist
NFR Checklist
The non-functional work estimates forget.
Estimation
Why Time Estimates Fail
The human side of estimation discipline.
MVP
Cut Features, Launch Early
Trim scope to fit the estimate to budget.
Ready to get a realistic estimate?
Software development cost estimation comes down to one habit: match the method to your unknowns, then show your work. Bottom-up for locked scope, top-down for the first call, parametric for repeatable builds, PERT for a few uncertain modules, Monte Carlo for board-level risk. Quote effort first, name the risk reserve, and communicate a range instead of a false-precise point.
And keep score. Post-mortem every project, because last quarter’s actuals are the best estimation tool you own. If you would rather not build that muscle from scratch, that is what we do all day: bring us the idea and we will hand back a defensible number and the spreadsheet behind it.
Get a real estimate for your project
Send the brief. Within 48 hours you get a bottom-up estimate, a stack recommendation, and a clear next step, free and no obligation. Custom software development is what we do.


