Changelog

What changed, and when

Two entries so far. Every change that affects what the software does, what it costs, who processes your data or what this site claims gets a dated line here.

Version 2.0.0 is current. Nothing before version 1.0.0 exists.

Releases

21 September 2026

Version 2.0.0, the network and the free tier

The company is now called Counterfirm. A graph neural network trained on your own twin, a Why chain on every number that ends at a quoted line in one of your files, a readiness system that tells you which document to send next, a free tier that takes real files, and a rebuilt interface on both the app and this site. Details below.

21 September 2026

Version 1.0.0, the first release

The whole thing, shipped at once: the simulation engine, agent generation in nine classes, the assumption ledger, fifteen scenario templates, twenty four levers, sweeps, side by side comparison, the decision brief, sensitivity, Ask, the invented worked example, plan gating, and this website. Details below.

Version 2.0.0

What changed

The graph became a network

A graph neural network now trains on top of the knowledge graph: twenty four inputs per node, two rounds of message passing, twelve hidden units, and three heads for risk, impact and structure. The labels come from running the engine with and without each sampled node, so it learns from your own simulator rather than from anybody else's data. It is seeded, so training twice on the same twin gives the same weights, and the model page reports the held back error next to the error of simply guessing the average so you can see whether it learned anything at all.

Every number got a Why button

A claim opens into the mechanism that produced it, the assumptions that mechanism used, the origin of each of those assumptions, and for anything read from a document, the file, the chunk and the sentence itself quoted back at you. For anything resting on an industry default, it ends at a plain admission and the name of the document that would replace it. Network scores add integrated gradient attribution across the twenty four inputs and neighbour ablation across the relationships, so a score comes apart into both what the thing is and what it is next to.

It now says what to upload

Thirteen kinds of file, each with a downloadable starter file and the column headings the extractor recognises. Every upload returns a report of what it read and what it ignored, with the reason. Readiness is scored overall and across money, customers, market, supply and people, and the blockers table ranks the documents you have not sent by how much each one would move an answer.

A free tier

One twin, three files, ten runs a month, twelve month horizon, sixty replications. No card and no expiry. The pricing page explains why version one argued against having one and why that argument was wrong.

Five plans instead of four

Free, Explore, Operator, Boardroom and Enterprise, with feature flags for the network, brief exports, the API and language model use on top of the numeric limits. Explore gained the network and lost some runs. The Stripe setup is documented click by click.

The interface, rebuilt

Staged reveals, count ups, drawn charts, a scroll progress bar, a pointer light on cards and a price switch on this site. In the app, a readiness ring, a network view with its training curve, and explanation drawers that open over whatever you were reading. All of it disabled under a reduced motion preference.

Ask now cites

Questions are answered from a numbered evidence list assembled out of your own twin, and every sentence containing a number has to carry the marker of the evidence it used. The app counts sentences that do not and shows you the count above the answer.

The graph got denser

Customers are wired to segments, competitors to the accounts they court, suppliers to the departments they supply, departments to their parents, and partners to the accounts they resell to. On the worked example that took the graph from 53 edges to 87, which is most of the reason the network can learn anything from it.

The name

The company and both plugins are now Counterfirm. Existing installations keep their data: the database prefixes and the REST namespace did not change.

Version 1.0.0

What shipped first

The engine

A monthly discrete event simulation in pure PHP. Demand responds to price through elasticity, capacity is people, people cost money, money is cash, and competitors respond to you. Monte Carlo over the bands in your own ledger, with a stored seed so a run is reproducible. A standard run is 200 replications of the scenario and 200 of the baseline on the same seeds, which is 400 simulations, in about a tenth of a second for twelve months and around forty agents on the machine it was built on.

Nine agent classes

Customers, competitors, suppliers, salespeople, executives, employees, investors, regulators and partners. Every twin gets all nine whether or not the files mention them, with anything invented to fill a gap marked as inferred and listed as an industry default in the ledger. Each agent carries objectives with weights, constraints, the slice of the world it can see, a personality, relationships and whatever history the record gave it.

Extraction and the graph

Rule based extraction over tables and prose, each fact carrying its source, chunk and quoted line, merged into a knowledge graph on normalised names with every spelling kept as an alias.

The assumption ledger

Every number with its origin: read from a document, derived, estimated, set by you, or an industry default. Band width scales with origin, defaults widest. All of it editable and lockable.

Fifteen scenario templates

Price up, price down, a competitor move, a new market, losing the largest customer, an acquisition, cutting a department, hiring salespeople, a supplier increase, moving manufacturing, a launch, a layoff, raising capital, a recession and holding steady.

Twenty four levers

Price, discount floor, headcount, salespeople, departments, layoffs, wages, supplier cost, switching supplier, moving manufacturing, winning and losing customers, churn programmes, marketing, launches, markets, acquisitions, quality, capital, competitor behaviour, demand shocks and regulation.

Sweeps

One lever across a range with the full Monte Carlo behind every point, returning a response curve with a best point. Twenty five steps at eighty replications is two thousand simulations.

Compare

Up to six scenarios against one baseline on one set of seeds, so the difference is the decision rather than the noise.

Adaptive management

Executive agents that act when their own numbers cross a line, gated on authority, personality and a cooldown. Switchable, because leaving it on is the most flattering assumption in the engine.

The brief

The answer, the path, the mechanism with the agent that caused it, the bad case, the tripwires with the month to look and what counts as off track, and the assumptions the whole thing rests on with the defaults at the top.

Sensitivity

Each load bearing assumption moved to its own low and high and re-run, so the answer to which assumption is doing the work is measured rather than asserted.

Ask

Questions answered from the graph, the ledger and the runs, with the rows that answered them shown alongside. Works with no language model key, returning cited rows instead of prose.

The worked example

Harborline Components, an invented contract manufacturer: 24 customers, 14.24 million dollars of revenue, 31 percent gross margin, 46 people, largest customer at 18 percent, single sourced on a marine grade billet, price unchanged since 2023.

Plans and gating

Four plans with limits on twins, files, runs, sweeps, replications and seats, resolved from Paid Memberships Pro or set by hand, enforced on every API route with usage metered per calendar month. Version two added a fifth.

And the website you are reading

A second plugin holding every page as structured content in version control rather than as editable posts, so the site can be re-rendered from source and cannot drift from the product. Including the accuracy page, the build status page and the legal set, all written before anybody was asked for money.

There are no entries before version 1.0.0, and there is no history hidden behind a link. Neither plugin has run on a production WordPress install yet. A changelog that begins with a long list of invented past releases is a common way to look established, and this one does not do it.

What will get an entry here

So that this page stays worth checking, the rule is written down rather than left to judgement.

  • Any change to what the software computes, including a change to a default in the ledger.
  • Any new capability, and any capability moving between built, partly built and not built on the status page.
  • Any price change, with the date it takes effect.
  • Any new or replaced sub-processor, at least thirty days before it starts processing.
  • Any material change to the privacy policy, the terms or the data processing addendum.
  • A penetration test, a backtest against real outcomes, or any certification, with the findings rather than just the fact of it.
  • Anything that was wrong on this website and has been corrected.

That last one matters most. A site that quietly fixes its claims is worse than one that never made them.

What is coming, without dates

The roadmap page lists what is being considered next, grouped into near, later and probably not, with nothing on it presented as a promise.

RoadmapWhat is built and what is not