How it shows its working

Every number has a Why button, and it goes all the way down

Software that tells a chief executive their largest account is at risk, and cannot say how it knows, is a horoscope. In Counterfirm every figure on every screen can be taken apart until you reach a quoted line in a file you uploaded, or a sentence saying no file said this and here is the default being used instead.

Build a twinThe assumption ledger

filesledgerinvestigationsfindingsconclusionamber is an industry default, green a line from a file

Under every answer

The analysis layer opens four things beneath its conclusion

Coverage
0 to 100%how much of the weight behind the answer came from your own files
Lineage
6 layersfiles, lines read, ledger, investigations, findings, conclusion, drawn as one picture
Trace
1 sentenceper step, saying what it did, what it read and what it found
Sources
3 kindsyour files with the lines quoted, the industry knowledge, and the simulation itself

How an answer shows its working

Read it top down, or take it apart

01

Coverage, weighted by what moves the answer

Every number the analysis used is listed with its origin. Each one is weighted by how far it can swing the conclusion, measured by the sensitivity pass, so a default that cannot move the answer barely counts and a default under the largest lever counts for a lot. The score is the share of that weight that came from your own record, and it is never a hundred percent while any default is standing in.

  • One line under the score says what it means in plain words
  • The defaults that would raise it most are listed with the file that would replace each one
  • The confidence of the whole answer moves with it
02

Lineage, as a picture

Your files on the left, the conclusion on the right, and every step between them: the lines read, the ledger rows they settled, the investigations that used them, the findings each produced. Every node is coloured by origin and sized by weight, so the eye lands on the amber ones first. Click any node and the panel beside it shows what it is and what fed it.

filesledgerinvestigationsfindingsconclusionamber is an industry default, green a line from a file
03

The trace

Each investigation writes one sentence about its method: what it pulled from the ledger, what it ran, how many times, against which baseline, and what it found. The inputs it read are listed with their values and origins. An investigation that ran out of budget says so and is marked unfinished, never quietly skipped.

04

The sources

Every file the answer leaned on, with the lines it quoted and how many times each was cited. Beside them, the two sources that are not files: the industry knowledge the model carries for your kind of company, and the simulation itself, named wherever a number came out of a run rather than out of a document.

largest accountoemindustrialaftermarketnew logosprice movesm0m3m6m9m12revenue by segment, one run

For every answer in Ask

The working, step by step, with a source under every step

A question to Ask comes back with the chain it followed. Each step says what it did and cites the rows it used, and each citation opens the ledger row, the thing on the graph or the line in the file.

  1. 01

    Read the question

    Which concept it matched and on which words, which names on your graph it found, and whether it read the question as a decision.

  2. 02

    Looked up, worked out, compared

    The ledger rows with their origins; the arithmetic, written as its own row with the formula; the industry band with what sitting outside it usually means.

  3. 03

    Searched and checked

    The lines of your files that bear on it, quoted as written, and the checks it ran on the record: renewals, single sources, runway, capacity, alerts.

  4. 04

    Concluded

    A confidence computed from where the numbers came from, weighted by leverage, the defaults it leaned on, and the upload that would replace them, with where that upload goes.

For network scores

Two kinds of Why, because a score has two kinds of reason

A number out of the engine has one story: the equations, and the assumptions they were fed. A number out of the network has two, because a node is scored partly on what it is and partly on what it is next to.

So the explanation is in two halves. The first half is attribution to the inputs, using integrated gradients: the model is run sixteen times along a straight line from an empty node to this one, and the change in the score is divided among the twenty nine inputs. Those parts sum to the score, which is what makes it an explanation rather than a ranking of hunches.

The second half is attribution to the relationships. Each neighbour is removed in turn and the score recomputed. If taking away the segment drops the risk by a fifth, that segment is a fifth of the reason. This is why the explanation can say because of what it is connected to and then name the connection.

  • Inputs, ranked, with the direction each one pushed
  • Neighbours, ranked, by how much the score moves without them
  • The path the signal took: which inputs lit which units in each of the two rounds, drawn layer by layer
  • The label the network was trained on for this node, and how that label was computed
  • A plain sentence assembled from the top two of each
  • Each input traced on to the fact and file behind it, where one exists
your graphbuilt from your filesfeaturesround oneround twoone row is one nodesix of its twenty four numbersriskwill it leave,fail, biteimpactwhat it moves if itdoesstructurewho else looks likeit

Origins

Five origins, and what each one does to the band

The origin of a number is not decoration. It sets how wide the band around it is, which is how uncertainty in your files becomes uncertainty in the answer instead of being quietly dropped.

OriginWhat it meansBandWhat it looks like on screen
DocumentRead straight out of a file you uploaded by a rule, with the line kept.NarrowestGreen chip, and the quote is one click away.
DerivedComputed from other things you uploaded. Margin from revenue and cost.NarrowViolet chip, with the arithmetic shown.
ExtractedPulled out of prose by a language model, with the passage it came from.NarrowViolet chip, and the passage is kept next to it.
YoursYou typed it. The model takes your word and says it did.NarrowMarked as yours, with the date you set it.
DefaultNothing in your files said this. An industry figure is standing in.WidestAmber chip, and a named document that would replace it.

A twin built mostly on defaults produces wide bands, and that is the model being honest rather than being useless. The assumption ledger lists every number by origin so you can see the balance at a glance.

If the software cannot tell you where a number came from, the number should not be on the screen.

That is the rule the whole product is built around, and it is why the network is small, the engine is arithmetic, and the language model is kept out of the simulation.

Where the language model fits

It writes, it does not decide

A language model is used in three places, none of them the simulation. Where it is used, it is held to the same standard as everything else. The full page on this.

Extraction

Reading prose into facts

It turns a paragraph in a board note into a numbered fact, and the passage it read is kept next to the fact so you can check it. Every fact it produces is marked as having come from a model.

Writing

Turning results into sentences

The numbers are computed before the model sees them. It writes the paragraph around them and it is instructed to name the assumption behind any claim and to flag anything resting on an industry default.

Ask

Answering questions from the twin

The question is worked out before any model sees it: the numbers, the lines in the files, the arithmetic and a confidence. The model phrases that worked answer. Every sentence containing a number has to carry the marker of the evidence it used, and the app counts sentences that do not and shows you the count.

If no language model is configured, Ask answers in full anyway: the worked answer, its steps and its sources are built by the knowledge engine, and the model only ever phrased them. Nothing is lost but a paragraph.

What this costs, and why it is worth it

Building a product this way is slower and it caps what the software is allowed to claim. A model that has to cite cannot bluff, and a model that cannot bluff will sometimes say it does not know.

It limits the model

The network is twelve units wide rather than five hundred because the attribution of a score to its inputs has to stay readable. The engine is closed form arithmetic rather than something learned end to end because a learned model cannot tell you which mechanism produced the answer. These are real trades and they are being made on purpose.

It makes the answer arguable

The point of the Why chain is not reassurance. It is that a finance director can open it, find that margin came from a line in a file that was out of date, replace the file, and watch the answer move. Software that cannot be argued with cannot be corrected, and software that cannot be corrected has no business near a decision about a hundred people.

It shows you what is missing

Because every number knows its origin, the software can count how much of your answer rests on defaults and rank the documents that would fix it. That is what the readiness page is built out of. Explainability and data quality turn out to be the same feature looked at from two ends.

Questions about the working

Does every single number have a chain?

Every assumption, every metric in a brief, every network score and every agent property. Chart axes and counts of things do not, because they are counts of things. If you find a number that matters and has no Why, that is a bug worth reporting.

What if the quoted line is wrong?

Then you have found a bad extraction, which is the thing this design exists to make findable. Override the assumption in the ledger and it is marked as yours with the date. The old value stays visible in the history so nobody has to wonder why the answer changed.

Can I export the chain?

Yes. The brief carries the assumptions it used with their origins, and the API returns the full chain for any assumption or score on the plans that include it.

Is the attribution exact or approximate?

Integrated gradients in sixteen steps, so the parts sum to the score to within rounding. Sixteen steps is a choice: it is enough for the ordering to be stable and cheap enough to compute while you wait.

Does the language model ever change a number?

No. Numbers are computed by the engine and the network before any prose is written. The model writes sentences around numbers it is given, and it cannot write one into the ledger without that fact being marked as model extracted.

What stops the model inventing a citation?

The evidence is numbered by the app before the question is sent, and the markers it is required to use refer to that numbered list. The app then counts sentences with numbers that carry no marker and shows you the count above the answer. It is a check you can see rather than a promise you have to believe.

Press Why on your own numbers

Build a twin from one file and open a chain. Either the quoted line is right, in which case you have learned something, or it is wrong, in which case you have found it in a minute rather than in a board meeting.

Build a twinWhat to upload