The working guide
From a task list to a defensible bid.
Set up your first model, read the results correctly, and keep a portable copy of your work. Start with the workflow; use the reference when you need the details.
Your first project, step by step
First, adjust a free bid calculation to see how cost uncertainty and margin affect a quote. No account or license is needed. The complete workflow below is for the licensed app.
After buying a license, activate it in the app. The workspace opens on an example project; use File → New project to build your own. You can also download an editable project estimate template and import it as a starting point. Replace its illustrative assumptions before using any results.
- Project: set your quote, currency, target margin and confidence. Add fixed costs and overhead once. Set both start and promised completion dates to measure deadline confidence.
- Work: enter optimistic, likely and pessimistic durations for each task, plus fixed cost and daily burn rate. Use calendar days consistently, including the elapsed effect of weekends and holidays. Already have the estimate in a spreadsheet? Import CSV reads it (columns are matched by name; download the template to see them) and shows a preview before anything changes.
- Dependencies: list each task's predecessors. Tasks without dependencies can run concurrently; the engine does not automatically check whether you have enough people to do that.
- Risks: add events that may occur, their probability and their cost and delay ranges. Link a risk to a task when appropriate. Do not add a risk already fully included in the task estimate. The register shows each risk's expected cost and delay and places it on a probability–impact matrix; it also imports and exports CSV.
- Simulation: resolve validation errors, then run — from the Simulation tab, the Run simulation button in the header, or Ctrl/⌘ + Enter anywhere. The distribution builds on screen as the runs accumulate. Fix a seed when you need a repeatable comparison.
- Schedule, Price Lab, What-if and Decision: read the delivery odds, find your price corridor, test scope creep and changes, then read the verdict, record your conditions and print the report.
On a phone, Work opens as Guided cards. Choose Edit task to review duration, costs, predecessors and assumptions together. Changes stay in a draft until you save; Cancel leaves your model untouched. Switch to Compact table for faster comparison across tasks. Your browser remembers the view.
A risk delay changes the schedule but does not automatically add daily burn. Include that expense in the risk cost estimate. For a worked network, read the four-task scheduling example.
Read three different questions separately
- Probability of loss
- How often simulated total cost exceeds your actual quote. Breaking even is not a loss.
- Probability of target margin
- How often the quote leaves your chosen margin after modeled costs. A project can miss this target and still make money.
- Deadline confidence
- How often simulated elapsed duration fits between the start date and promised date. It depends on the task network and your calendar-day assumptions.
A P80 cost of $75,000 and a 25% target margin imply a $100,000 price: 75,000 ÷ (1 − 0.25). This targets approximately 80% confidence of meeting the margin under the model. It does not mean a 20% chance of losing money, or an 80% chance of winning the bid.
Use the Project tab’s assumption review to catch missing ranges, costs and dependencies. In Price Lab, enter an exact client budget, try the confidence-based quote, or reset to your current quote. Negotiation room is the difference between the trial price and the quote needed for your chosen margin and confidence; it does not guarantee the client will accept the price.
The Simulation tab also measures cost overrun: how likely the cost is to exceed your single-number plan (or the expected cost, or the cost budget your margin allows), by how much, and the contingency each confidence level needs. The joint heat map shows how often lateness and overruns arrive together.
In Price Lab, the price corridor reads your own decision thresholds: below the refusal floor your rules say do not bid; from the clean-bid price both price checks pass. The build-up shows how the confidence-based quote is made: the plan at likely durations, the skew in your ranges, the expected cost of risk events, the buffer to your confidence level, and your margin.
After changing costs, durations, dependencies or risks, rerun the simulation. Compare identical seeds, iteration counts and assumptions when investigating a change. Read the methodology and limitations before treating a modeled confidence as a commitment.
Explore the delivery commitment
After a simulation, open the Schedule tab. The P50, P80, P90 and P95 cards choose the first whole calendar day that covers at least that share of sampled finishes; they round up rather than promise a fraction of a day. Type any date to read its confidence, or any confidence to read the date it needs. Set a planned start date first.
The probabilistic schedule shows each task's median start and finish with a P10–P90 band. Its criticality index is the share of runs in which the task sat on the chain that set the finish date: shortening a task with 0% criticality does not move delivery. What drives the finish date ranks the tasks and risks whose variation moves it most.
On time AND within contract price counts runs satisfying both conditions together. Within contract price means no loss; it does not mean that your target margin is met. Cost and duration remain paired by simulation run. Multiplying their separate probabilities would not generally give the same answer.
Trying a date is a preview. Choose Use as promised completion to save it, then rerun to refresh the decision. Scope, staffing and task durations are not changed automatically.
Ask what-if before it happens
The What-if tab answers three questions with short re-runs of your model that reuse the same random seed, so differences come from the change rather than from sampling noise.
- Scope-creep cost calculator
- Grows the duration of the tasks you choose by 0–50% and reports how much growth your current price absorbs before the probability of loss passes your limit, what each percentage point of creep adds to the quote and the finish, and what an uncertain amount of creep (low, likely, high) does to the odds.
- Change request pricing
- Adds a requested change as extra work — days, daily cost, where it fits in the plan — and prices it: the increase in cost at your confidence target, grossed up for your margin, plus its effect on the P80 finish.
- Risk mitigation value
- For one risk, enter a lower probability, the share of impact that remains and what the mitigation costs. The expected-value reading says the most it is worth paying; the simulation shows its effect on the P80 cost and the odds, with the mitigation cost included.
Scenarios (Business and Consultant) keep named runs in this browser across sessions — the original bid, a reduced scope, a later start, a higher price — from this project or a duplicated alternative (File → Duplicate as alternative). Compare up to four side by side with the best value per row marked and overlaid cost and finish curves; differing currencies, margins, dates or depths are flagged. Export the comparison as CSV, print it, or open a scenario's inputs as a new project.
Decide, record and report
The Decision tab reads the run against your thresholds. Path to a clean BID gives the smallest price and the earliest promise date that pass each rule on this run, with a button to apply each. How close is this call? shows how many percentage points each metric sits from its threshold. Sensitivity re-simulates each driver at its favorable and unfavorable bound for the P80 cost or the P80 finish.
Decision notes are saved with the project. Business and Consultant add a bid review record (date, reviewers, decision taken, conditions) that prints beside the model's verdict. Print / save report (PDF) produces a multi-section, BidVariance-branded report: verdict and key odds, commercial terms and quotes, cost and completion charts, sensitivity, the probabilistic schedule, estimate and risk registers, the decision record and the method. Consultant reports carry client attribution (set on the Project tab), and Client handoff downloads a portable brief with the registers.
Outcomes CSV downloads one row per run with paired cost, calendar-day duration, profit, gross margin, target-margin success and on-time success. Monetary columns name your currency label; margin is a fraction, so 0.25 means 25%. The on-time cell is empty when either required date is missing.
Copy decision brief creates a readable summary with the verdict, probabilities, cost percentiles, notes and run settings. Review the displayed text before sharing. You can also download it as a text file. These controls are disabled for stale results: run the changed model first.
Keep the project JSON with exported results. The CSV and brief record evidence, but do not replace the model inputs or automatically synchronize to another device. Public article and calculator share buttons send only the page link, without calculator inputs.
Evidence wins the bid review; judgment wins the career. Recommended reading: How to Remain Valuable When Intelligence Becomes Cheap .
Save locally. Keep an independent copy.
Projects are stored in this browser's IndexedDB. They do not automatically sync to another device or browser profile. Clearing site data can remove them, and private browsing storage may not persist.
Use File → Export project to download one project, or File → Back up all projects for every project in this browser in one file. On the other device, activate your license and use File → Import project or backup. Project files store inputs, notes and settings; rerun the simulation to regenerate results. Projects lists everything saved in this browser with the last verdict of each (grouped by client on a Consultant license). Keep dated copies when you need an audit trail.
Can I install BidVariance or use it offline?
Install BidVariance on your home screen for quick access. After you enable offline calculators and setup completes, the six free calculators work without a connection. Reopening the licensed workspace requires an online license check. Installation does not back up projects or sync devices; keep exported JSON backups.
My project is missing
Check that you are using the same browser, profile and site address, then open Projects. If the original browser storage was cleared, import your exported JSON backup. License activation does not restore browser project data.
A file will not import
Use a JSON file exported by BidVariance or the documented schema below. Check the schema version, numeric estimate order, unique task IDs and dependency references. The import error identifies the problem; keep the original file while correcting a copy.
The number changes between runs
Random samples vary unless you fix the seed. For reproducibility, keep the same model, distribution, iteration count, seed and engine version. More iterations reduce sampling noise, but do not improve an unsupported estimate.
The portable project format
A BidVariance project is a single JSON document, schema
bidvariance.project.v1. You own the file: export it, edit it,
re-import it, keep it in git. Validation is strict — unknown schema
versions and malformed files are rejected with clear messages, never
silently repaired.
JSON Schema (draft-07) Glossary as JSON Formulas as JSON
Example
{
"schema": "bidvariance.project.v1",
"projectName": "Warehouse WMS Integration",
"currency": "USD",
"contractPrice": 150000,
"targetMargin": 0.25,
"confidenceTarget": 0.80,
"plannedStartDate": "2026-10-01",
"promisedCompletionDate": "2027-02-15",
"projectFixedCosts": 6000,
"overhead": 12000,
"notes": "Signed LOI; vendor API docs are thin.",
"tasks": [
{
"id": "t1",
"name": "Discovery & requirements",
"optimistic": 8, "likely": 10, "pessimistic": 15,
"fixedCost": 0, "dailyBurnRate": 900,
"deps": []
},
{
"id": "t2",
"name": "Middleware build",
"optimistic": 18, "likely": 25, "pessimistic": 45,
"fixedCost": 2000, "dailyBurnRate": 1000,
"deps": ["t1"]
}
],
"risks": [
{
"id": "r1",
"name": "Client approval delay",
"probability": 0.35,
"costOptimistic": 1000, "costLikely": 3000, "costPessimistic": 8000,
"scheduleOptimistic": 2, "scheduleLikely": 5, "schedulePessimistic": 12,
"affectedTaskId": "",
"notes": "Happened on the last two projects."
}
],
"settings": {
"distribution": "beta-pert",
"iterations": 25000,
"seed": 123456
}
}
Rules
schemamust be exactly"bidvariance.project.v1". Newer versions are rejected with a clear message (never silently reinterpreted).- Estimates must satisfy
optimistic ≤ likely ≤ pessimistic; equal values make the task deterministic. depslists task ids that must Finish-to-Start before this task; the graph must be acyclic; unknown ids are rejected.- A risk with empty
affectedTaskIdis project-wide: its cost adds to total cost and its delay pushes the final delivery date. currencyis a label only — BidVariance never converts exchange rates.settings.seed(uint32 or null) makes runs reproducible.- Unknown fields produce import warnings and are dropped, not guessed at.
An AI agent can prepare this file from a task list; the licensed app then runs the full analysis locally. There is no paid API in this version — the engine is the browser app you own.
Glossary
- Monte Carlo simulation
- Running the same project model thousands of times, drawing plausible values for every uncertain input each run, and measuring the spread of results (cost, duration, profit) instead of trusting one fixed estimate.
- Beta-PERT distribution
- A smooth probability distribution built from three estimates: optimistic, most likely, and pessimistic. With lambda = 4 its mean equals the classic PERT weighted average (O + 4M + P) / 6.
- Optimistic (O)
- The best realistic case for a task's duration or cost — everything goes right, but it is still a real outcome, not a fantasy.
- Most likely (M)
- The single most plausible value for a task's duration or cost if you had to pick one number.
- Pessimistic (P)
- The genuinely bad-but-possible case. The width of the O–P range is where estimation risk lives.
- Percentile (P50, P80, P90)
- A value that a given share of simulated outcomes falls at or below. P80 cost means 80% of simulated runs cost that amount or less.
- P50
- The median. Half of simulated outcomes are at or below it. Quoting the P50 cost with no margin gives roughly 50% modeled loss probability for a continuous distribution; applying a positive target margin changes that loss probability.
- P80
- The value 80% of simulated outcomes fall at or below. A common commercial reference level for bids and deadlines.
- P90
- The 90% level — more conservative, appropriate when the downside of overrun is expensive.
- Deadline confidence
- The share of simulation runs that finish on or before the promised completion date.
- Joint deadline and no-loss confidence
- The share of paired simulation outcomes that both finish by the trial deadline and cost no more than the contract price. It counts the intersection of both events, not the product of their separate probabilities.
- Probability of loss
- The share of simulations where total project cost exceeds the contract price — the bid loses money.
- Gross margin
- (Contract price − total cost) / contract price. This is margin, not markup.
- Target margin probability
- The share of simulations where gross margin is at least the target the user sets.
- Daily burn rate
- Cost per day while a task runs: fully-loaded people cost, tools, travel. Task cost = fixed cost + duration × burn rate.
- Fixed cost
- A one-off cost charged to a task or project regardless of duration: licences, hardware, subcontractor minimums.
- Overhead
- A fixed allocation of company overhead to a project. Entered as an absolute amount to avoid double-counting; BidVariance never applies percentage overhead automatically.
- Discrete risk event
- A named event that either happens or does not (client approval delay, vendor API limitation), with a probability and cost/schedule impacts sampled when it fires. Separate from ordinary estimate uncertainty.
- Finish-to-Start dependency
- A task starts only after all of its predecessor tasks finish. The only dependency type in the MVP.
- DAG (directed acyclic graph)
- The task dependency graph. 'Acyclic' means no circular chains (A after B after A), which would make scheduling impossible. BidVariance rejects cycles before simulating.
- Minimum defensible quote
- The price at which the target margin is achieved with the chosen confidence.
- Reverse pricing
- Working backwards from a margin and confidence target to the price required, rather than forecasting outcomes for a price already chosen.
- Seed
- A number that starts the pseudo-random generator. The same project inputs, distribution, iteration count, seed and engine version reproduce the same simulation.
- Deterministic task
- A task whose optimistic, most likely, and pessimistic values are identical. It contributes no uncertainty — it always takes exactly that value.
- Contingency
- Money or time reserved for uncertainty relative to a named baseline. The gap between P50 and P80/P90 is one possible reserve; do not add it again to a percentile that already includes it.
- Markup
- Cost multiplied up to set a price. Different from margin: a 25% markup on cost is only a 20% margin on price. BidVariance works in margin.
- Billable utilization
- The share of available working hours that earns client revenue. It excludes nonbillable sales, administration and other work under the chosen definition.
- Loaded cost rate
- The internal cost per unit of work including the cost components explicitly assigned to it. Document what is included so overhead is not counted again. It is different from a client billing rate.
- Billing rate
- The selling price per billable hour or other unit. It can already include overhead recovery and profit; it is not automatically a delivery cost rate.
- Expected monetary value
- A probability-weighted average of monetary outcomes. For one event with a fixed conditional impact, it equals event probability times impact. It is not a confidence reserve.
- Residual risk
- The risk that remains after an action. A mitigation can change event probability, conditional severity or both, while adding its own cost.
- Funding gap
- The additional cash needed when the lowest modeled balance is negative under the entered cost and collection sequence. It depends on starting cash and timing, separately from final profit.
- Project capacity
- The work hours available for a project after accounting for people, working time and availability. Sufficient capacity does not prove that dependencies or skill constraints allow a deadline.
- Scope change
- A change to the defined deliverables, acceptance criteria or other agreed work boundary. Estimate its incremental cost and effects on the whole plan before treating it as a simple price adjustment.
Also available as JSON: /data/glossary.json.
Formulas
Every calculation BidVariance performs is listed with its exact form on the
methodology page and, machine-readable, in
/data/formulas.json.
The short version: Beta-PERT (λ = 4) sampling, topological Finish-to-Start scheduling,
transparent cost aggregation, empirical percentiles, and
requiredPrice = costQuantile(confidence) / (1 − targetMargin).
License activation
Pro includes the full engine: every analysis, calculator, simulation depth, import/export and report. Business adds the scenario library and side-by-side comparison, plus the bid review record. Consultant adds client attribution on reports, the client handoff and projects grouped by client. Every export stays BidVariance-branded; none creates an approval record. Open your license in the app header to see each capability your tier includes and where it lives.
After checkout on Gumroad you receive a license key by email (it is also in your Gumroad library). Open the app and paste the key once; spaces, line breaks and typographic dashes copied from the e-mail are cleaned up for you. The browser then holds a signed session in an HttpOnly cookie. With Keep this device activated ticked (the default), the session carries an encrypted copy of the key that only the BidVariance server can read, and the license is re-checked with Gumroad every few days in the background — you do not enter the key again on that browser. Untick it on a shared computer: access then ends when the browser closes. If Gumroad cannot be reached, nothing is rejected; the check retries later.
Verification sends only the key and product id — never project data — and never increments Gumroad use counts. A refunded, charged-back or disabled license stops working at its next check, usually within three days, and the app says why; open projects can still be exported. Deactivate a device from the app footer. Use another license key switches tiers without touching local projects.