Read the brief
Six blocks in a fixed order: the answer, what happens and when, why it happens and which agent caused it, what could go wrong, what to watch, and what the whole thing rests on.
How the brief is builtHow it works
There are six moves between the folder on your desktop and a brief you could hand to a board. None of them is hidden, all of them are editable, and every number that reaches the simulation carries a note saying where it came from.
Build a twinWhat the engine computes
The simulation is arithmetic. It runs with no API key at all.
Most tools stop at the summary. This one keeps going until the summary has people in it.
A parser that reads your profit and loss and tells you what it says has done a tenth of the job. The other nine tenths is turning those figures into actors with objectives, running them against each other for a year, and doing it enough times that you can see the shape of the answer rather than one line through the middle of it.
The arc
Each one is a separate step with its own screen. You can stop after any of them, look at what it produced, change it, and carry on.
CSV, Excel, Word, text and markdown are read directly. A PDF is read if it has a text layer, and you are told plainly when it does not rather than being handed an empty result. Every file is split into chunks and kept, because a number with no line behind it is a guess wearing a suit.
Rules go first and they go every time. They read tables by their column headings and prose by the shapes numbers take in business writing. Each fact carries the source, the chunk, the quote and how it was found. A language model runs second, only over chunks the rules read nothing from, and everything it returns is marked separately.
Facts about the same thing are merged on a normalised version of its name, with every spelling kept as an alias. Customers, suppliers, competitors, departments, products, salespeople and partners become nodes with sizes and edges. Importance is share of its own type, so the largest account is a percentage of the customer list rather than an opinion.
Nine classes, always all nine. Each agent gets objectives with weights, constraints it cannot break, the slice of the world it can see, the things it is blind to, a personality, relationships with a trust number, and whatever history the record gave it.
Every number the simulation runs on lands in one table with its origin and a band around it. Read from a document with the line quoted, worked out from something that was, estimated by a model, typed by you, or an industry starting point. They are never blended into a single confident figure.
Two hundred replications of your scenario and two hundred of the same company doing nothing, on the same seeds, each drawing its own parameters from the bands. What comes back is a median with a tenth and a ninetieth, a list of what the agents did and how often, and a brief.
Step one
You do not need all of it. A profit and loss and a customer list is enough to get a twin that is worth arguing with, and the overview tells you what is missing in the order it is worth fixing.
The readiness score on the overview is not a gamified progress bar. It is the share of the assumption ledger that is standing on something you uploaded rather than on an industry starting point.
Step two
The rule pass knows what a column called MRR, ARR, contract value, renewal, NPS or headcount means, and it knows the shapes a number takes in a sentence written by a finance person. It runs on every source, every time, and it needs no key and no network.
The language model pass is second and optional. It is shown only the chunks the rules produced nothing from, it is capped per run, and it is told to return no number that is not in the text. What it does return is written with its own marker and a lower confidence, so the ledger can show you the difference at a glance.
That order matters more than it sounds. It means the cheap, deterministic, inspectable path owns the numbers that matter, and the expensive, probabilistic one is left with the prose nobody could parse.
Step four
What a file becomes
| What you upload | What it becomes in the graph | What that changes in the run |
|---|---|---|
| Customer list with revenue per account | Named accounts with a share of the list, plus three behavioural segments cut by size | Named accounts decide one at a time at renewal. Losing one is a month with a hole in it rather than a slope. |
| Contract end dates | A contract clock on each named account | A price rise reaches an account when its term ends, not when you send the letter. |
| Reviews, ratings or survey exports | A satisfaction score and per account sentiment | Satisfaction moves churn and word of mouth, and it recovers more slowly than it falls. |
| Supplier or vendor spend | Suppliers with a cost share and a concentration number | A supplier increase lands on the share of cost that is actually theirs, then management decides how much to pass on. |
| Org chart or payroll summary | Departments with headcount, cost, and weights on capacity, quality and selling | Eliminating one removes its cost and the thing it was quietly holding up. |
| Competitor file or market research | Competitors with a price index, a strength and a reaction | They match part of your move, late, and once. |
| Nothing at all for a class | An inferred node, marked as inferred | The class still acts, and the ledger tells you that its numbers are industry starting points. |
Every row here is reversible. Open the graph, correct a name, merge two nodes the resolver split, delete one it invented, and rebuild.
Step six
The engine walks the same nine stages in the same order every month of every replication. Nothing here is a curve somebody drew.
Any lever whose start month is this month is applied. Price moves, people arrive or go, a supplier changes, a build begins.
Effects already running tick on, and then your own executives act if their numbers have crossed their own thresholds. This is the part a spreadsheet does not have.
A match committed three months ago lands now, at the size it was committed at.
Ordinary input cost movement, small and noisy, on top of anything a lever did.
Segments move as mass. Named accounts decide one at a time, when their contract comes up.
Ramping reps age, attainment is measured against quota, and a rep who has been behind for a quarter may leave.
Revenue, cost of goods, operating cost, operating profit, then cash.
Utilisation sets strain, strain sets quality, quality sets satisfaction, morale follows workload and pay, attrition follows morale.
Regulator, investor and partners stay silent unless a line has been crossed, and then they do not stay silent.
The run
The output
After the run
A single run is the start of the conversation, not the end of it. Everything below works off the same twin, the same ledger and the same seeds.
Six blocks in a fixed order: the answer, what happens and when, why it happens and which agent caused it, what could go wrong, what to watch, and what the whole thing rests on.
How the brief is builtTake the one number you were arguing about, run it across a range with the whole Monte Carlo behind every point, and get a curve with a best point on it.
How sweeps workSeveral scenarios against one baseline on one set of seeds, so the differences between them are decisions rather than noise.
Why one baseline mattersMove each load bearing number to the ends of its own band, one at a time, and see how far the answer travels. Then go and replace the one that moved it most.
The ledgerAsk a question and get the rows from the graph, the ledger and the runs that bear on it, with what was used listed underneath.
How Ask worksRewrite an agent's objectives, correct a node, lock an assumption to your own number. The seed is kept, so the same question tomorrow gives the same answer.
The agentsWhere this stops
A simulation that only shows you its strengths is a sales tool. These are the places to be careful, and they are the same places a good analyst would poke first.
None of this is fixed by running more replications. More replications narrow the sampling noise, not the assumption error, and the second is nearly always the larger of the two.
The reading and extraction depend on how much you upload. The graph, the agents and the ledger are built in one pass after that, and running a scenario on the result takes about a tenth of a second for a twelve month horizon with around forty agents.
The slow part is you deciding whether the ledger is right, which is the part worth spending time on.
Yes, at every level. Facts show the quote they came from. Nodes can be renamed, merged or deleted. Agents can have their objectives, constraints and personality rewritten. Assumptions can be typed over, and a row you type over is locked so a rebuild does not undo it.
No. The engine is arithmetic from end to end and gives the same answer for the same seed. A model is used in three places, all optional: reading prose the rules could not parse, rewriting a finished brief into better English, and answering questions in Ask.
No number reaches the simulation from a model without passing through the ledger first, where it is labelled as an estimate and given a wider band than anything read from a document.
The twin falls back to three behavioural segments, price led, mainstream and anchored, and to a concentration assumption. Both show up in the ledger as defaults. A scenario about losing your largest customer will then use the assumed concentration and will say so in the event, which is worth reading before you believe the number.
Inside your own WordPress install. Files are kept in a folder outside the media library that is not served over the web, and deleting a source deletes its chunks and its facts with it.
Or look at the worked example first. It is an invented contract manufacturer called Harborline Components, with one customer at eighteen percent of revenue, a single sourced billet and a price it has not moved since 2023.