The assumption ledger
Every number, where it came from, and how wide it could be
One table holds every figure the simulation runs on. Each row says what the value is, which of five origins it has, how wide the band around it is, and for anything read from a document, the exact line it was read from. Nothing is blended into a single confident figure.
How the engine draws from itWhat the brief does with it
A default sitting under a decision worth six figures is the most useful thing this software can point at.
The ledger is the honest part. Everything else is arithmetic on top of it.
A simulation is exactly as good as the numbers it was given, and most tools handle that by hiding the numbers. This one puts them in one list, sorts the guesses to the top, and tells you which of them is actually moving your answer. If that list makes you uncomfortable, the list is working.
Five origins
Where a number can come from
| Origin | What it means | Band | Weight in the confidence score |
|---|---|---|---|
| Document | Read from a file you uploaded, with the supporting line quoted on the row | Narrowest. Just under half the base width for that kind of number | Full |
| User | Typed in by you, which also locks the row | Narrowest of all, a quarter of the base width | Full |
| Derived | Worked out from things that were read, such as headcount times cost per head, or revenue divided by customers | About seventy percent of the base width | Seven tenths |
| AI | Proposed by a language model reading prose the rules could not parse | Three quarters of the base width | Half |
| Default | An industry starting point, used because nothing in your record said anything about it | Full base width | Fifteen hundredths |
Base width depends on the kind of number. Elasticity is uncertain even when you have measured it; headcount read from a payroll file is not. Ratios and scores are clamped so a band can never take them outside nought to one, and counts can never go negative.
A row
What every line of the ledger carries
The point of the quote is that you can check it in ten seconds. A gross margin of thirty one percent sitting next to the sentence it was read from is a different thing from a gross margin of thirty one percent sitting on its own.
- The key and a readable label, so the row is findable by either
- The value and its unit: money, ratio, count, months or a score from nought to one
- The low and high of the band, which is what the Monte Carlo draws between
- A confidence between nought and one, set from the origin and from how sure the extractor was
- The origin, the source file, the chunk and the exact quote where there is one
- A note explaining how it was arrived at, written by whichever code path set it
- Whether the row is locked
Bands
The band is the argument, not decoration
Before every replication the engine walks this table and draws a value for each numeric row: lowest at the bottom of the band, most likely at the value in the ledger, highest at the top, using a triangular distribution. Two hundred replications means two hundred slightly different but internally consistent companies.
So the tenth and the ninetieth on your answer are not error bars bolted on at the end. They are the direct consequence of how much your own record pins down. Replace a default with a figure from a document and the band narrows, and the next run says so.
This is also why widening a band is a legitimate move. If you genuinely do not know your elasticity within a factor of two, say so in the ledger and let the brief report an answer that is honest about it.
- A row with no band, or a band of zero width, is used exactly as it stands
- A band never takes a ratio outside nought to one, whatever the multiplier says
- You can set the low and high by hand as well as the value
Locking
Type over a number and a rebuild will not undo it
Editing a row sets its origin to user and locks it. A locked row is skipped when the ledger is rebuilt, which happens every time you add a file or rebuild the graph. Your churn figure survives the arrival of a new customer list.
Take the lock off and the next rebuild takes the row back over. That is the right behaviour when you typed a placeholder in week one and have since uploaded the file that actually answers it.
The pattern to aim for is simple. Run once, read the defaults at the top of the brief, and replace the two or three that the sensitivity analysis says are carrying the answer. A twin does not need a perfect ledger. It needs an honest one with the load bearing rows nailed down.
Confidence
One number for how much of the model is standing on guesses
The confidence score is the weighted average across every row in the ledger. It is the same number the overview calls readiness, and the brief states it in plain English: of so many assumptions behind this run, so many came from something you uploaded or typed, so many were worked out from those, and so many are industry defaults.
Sensitivity
Which assumption is actually moving the answer
Confidence tells you how much of the ledger is guessed. Sensitivity tells you whether it matters, and the two are not the same thing. A default you have no evidence for is harmless if the answer does not depend on it.
The analysis takes one assumption at a time, pins it to the bottom of its own band, runs the scenario, pins it to the top of the same band, runs again, and records how far cumulative operating profit over the whole window moved between the two. While a row is pinned its band is removed from the draw, so the swing measured is that row and nothing else.
The results are ranked by swing, largest first. That ranking is the shopping list: go and find evidence for the top two and the answer stops being an opinion.
The usual suspects
The rows the brief puts at the top, and why
| Assumption | Why it carries so much | Where it comes from if you have not given it one |
|---|---|---|
| Elasticity | It sets both halves of the price response, the churn half and the new business half. Nothing else in the model has that reach. | An industry starting point, and the single most load bearing default in the whole system |
| Monthly churn | It is the base the multiplier moves from, and it decides where the customer count settles against new business | Typical monthly logo churn for your industry |
| Gross margin | It converts every revenue movement into a profit movement, so it scales the entire answer | Read from a profit and loss, taken as one minus the cost of goods share, or an industry figure |
| Competitor reaction | It decides how much of your move gets matched, and therefore how long any advantage lasts | An industry figure, raised when the graph holds several competitors |
| Contract locked share | It decides how much of your base can react at all this month | An industry figure. Upload contracts and this stops being a guess |
| Switching cost | It damps the customer response to a price gap, and it is what holds an anchored account in place | An industry figure between nought and one |
| Top customer share | It is the size of the hole if that account leaves | Counted from your customer list when you have one. Guessed low when you do not, which flatters the answer |
Industry priors are starting points, not findings. They are there so a twin with a thin record still runs, and they are sorted to the top of the brief precisely so they do not stay.
Find out what your answer is standing on
The ledger is visible before you run anything and before you pay for anything. If the defaults look wrong, they probably are, and replacing one takes about a minute.