The network

The graph does not just sit there. It learns.

Your graph is a picture of who depends on whom. On its own it is a diagram. Version two trains a small neural network on top of it, so the shape of your company becomes something the software can read a score off: which relationships are fragile, what each one is worth if it breaks, and which ones resemble each other.

Build a twinHow it shows its working

It is a graph neural network, trained on your own twin, on your own server. It is not a large language model and it has not seen another company.

your graph, drawn from what you uploadedfeaturesround oneround twoeach row is one node, six of its twenty four numbersriskwill it leave, fail, biteimpactwhat it moves if it doesstructurewho else looks like it

A spreadsheet knows your largest customer is 31 percent of revenue. The network knows that account sits between a segment whose satisfaction is falling and a supplier with one source, that its contract ends in five months, and that three other accounts look exactly like it.

That is the difference between a number and a structure.

What actually happens

Two rounds of message passing, then three heads

This is the whole architecture. It is small on purpose, because a small model trained on your own data and explainable line by line is worth more here than a large one you have to take on trust.

  1. 1

    Every node becomes twenty four numbers

    Type, share of its own type, revenue and cost on the record, satisfaction, how many of your files mention it, whether it was read or inferred, how connected it is, the tone of what customers wrote about it, how close its contract end is, and headcount or quantity. Money is scaled, so a company turning over millions and one turning over thousands give the network the same shaped input.

  2. 2

    Round one: each node hears its neighbours

    A node mixes its own numbers with the average of the numbers of everything it touches, then squashes the result. After this round a customer already carries a trace of the segment it sits in and the salesperson who holds it.

  3. 3

    Round two: it hears their neighbours too

    The same operation again on the result. Two rounds means every node has seen two hops out, so a supplier now carries something of the department it supplies and the customers that department delivers to. That is deliberate. Three rounds on a graph this size smears everything into everything.

  4. 4

    Three heads read the final row

    One head gives risk, between zero and one. One gives impact, the size of the hole if the thing goes wrong, in your own currency. One is trained on the structure itself, by predicting which pairs of nodes are connected, which is what makes find me the ones that look like this work.

Where the labels come from

It is trained on the simulator, not on opinion

This is the part most worth understanding, because it is where a model like this usually goes wrong.

There is no training set of companies that failed. There is no industry benchmark being quietly applied to you. The network is trained on answers the engine gives about your own twin.

Training picks a sample of nodes. For each one it runs the simulator twice: once as things are, and once with that node removed or damaged, using the lever that fits it. A customer is lost. A supplier raises its price. A department is eliminated. The difference between the two runs is the true impact of that node, in money, computed by the same equations that produce every other answer in the product. That difference is the label.

So the network is a fast approximation of an expensive calculation you could always have done. It is not a second opinion. If the engine is wrong about your company, the network will be wrong in exactly the same direction, and the honest limits page already says where the engine is weak.

  • Labels are produced by running the engine, not by a benchmark
  • Risk labels also use what is on the record: status, rating, satisfaction
  • Every third labelled node is held back and never trained on
  • The held back error is reported against the naive guess, so you can see whether it learned anything
640 runs of one scenario

What it gives you

Three questions the graph alone could not answer

Risk

Which of these is about to be a problem

Everything scoreable ranked on one scale, so the account nobody was worried about appears next to the one everybody was. It only scores the kinds of node it was trained on, and anything it cannot score is listed separately with the reason.

Impact

And what it costs if it is

Risk on its own is a worry list. Impact is what turns it into an order of work. A fragile supplier holding two percent of cost sits below a solid one holding forty.

Structure

Who else looks like this

Trained by predicting which nodes are connected, so similarity is about position in your company rather than about a name being spelled the same way. When one account churns, this is what tells you which others are standing in the same place.

The architecture, written out

No hidden pieces

The whole model is in one file of ordinary PHP. It runs on the same server as everything else, needs no graphics card, and trains in under two minutes on a normal graph.

PieceWhat it isWhy this size
Inputs per node24 numbersTwelve are the node type. The other twelve are things your files actually say.
Hidden width12Wide enough to hold a few independent patterns, narrow enough that the attribution of a score to its inputs stays readable.
Rounds of message passing2Two hops. Three starts averaging the whole company into every node.
ActivationtanhBounded both ways, which keeps one enormous customer from dominating the gradient.
Risk headsigmoid, cross entropyA probability, because that is what a risk is.
Impact headlinear, squared errorA quantity in your currency, so it is comparable across nodes.
Structure headlink prediction on sampled pairsSelf supervised. It needs no labels at all, which is why it works on a thin twin.
Training160 passes, gradient descent, weight decaySmall model, small data. Anything fancier would overfit a graph with eighty edges in it.
SeededYesSame twin, same weights. Training twice gives the same numbers, and the model page says so.

Training is time boxed at ninety seconds as a safety net. If a graph is large enough for that to bite, the model page says the run was time boxed and that its numbers are therefore not exactly reproducible.

Attribution

Every score comes apart into its reasons

share of revenuedocumentmonths to renewaldocumentsupport loaddocumentsegment price gapderivedtenuredocumentindustry churndefaultpushes the score downpushes the score upevery bar traces back to a line in a file you uploaded, or it is labelled a default
The bars are integrated gradients, taken between an empty node and the real one in sixteen steps, so they add up to the score rather than merely pointing at it. The chip on each bar says whether that input was read from one of your files, worked out from other things you uploaded, or is an industry default the model is using because you have not told it otherwise. How this works in full.

Being honest about it

What this is not

Not a prediction of the futureIt is a fast approximation of what the engine would say if you ran every scenario. The engine is a model. The limits are written down.
Not trained on other companiesYour weights are yours, stored against your twin. Nothing about your company trains anything anybody else uses.
Not a language modelNo text goes to a provider for this. It is arithmetic on your own server.
Not useful on a thin twinWith six nodes and nine edges it will train and it will be worthless, and the model page will tell you so rather than showing a confident number. Start with the files that matter.

The model page always prints the held back error next to the error of simply guessing the average, and a plain sentence saying whether the network beat that guess. If it did not, it says so. A model that cannot beat the average on your graph is telling you your graph is too thin, and the cure is another file, not another training run.

Questions about the network

How long does training take?

Under two minutes on a graph of a hundred nodes, most of it spent running the engine to produce labels rather than in the network itself. It is a background job, so you can leave the page.

How often should I retrain?

After a meaningful upload. The network learns the shape of the graph you had when you trained it, so adding thirty customers changes what it should say. The app marks a model stale when the graph has moved and tells you on the page.

Does it need a graphics card?

No. It is a few thousand multiplications on shared hosting. That is the point of keeping it this size.

What happens on a graph with no labels?

The structure head still trains, because it teaches itself from the edges. Risk and impact need labels, and if there are too few the page says the model is not usable yet and names the upload that would fix it.

Can I see the weights?

Yes, through the API on the plans that include it, and they are stored as plain numbers against your twin. There is nothing in there but arithmetic.

Why not use a larger model?

Because the useful thing here is not raw capacity, it is that every score can be taken apart into the inputs that produced it and each of those inputs traced back to a line in a file you uploaded.

A larger model on a graph with a hundred nodes would fit the noise, and it would lose the property that makes the output arguable. The point is not to be impressive. The point is that when it says an account is fragile, you can find out why and disagree.

Which plans include it?

Every paid plan. The free tier builds the graph and runs the engine but does not train the network, because training runs the simulator dozens of times and that is the expensive part.

Train it on your own company

Build a twin, upload three files, and see what the network says about the relationships you already have opinions on. If it disagrees with you, it will tell you why.

Build a twinSee what to upload