Revenue, margin, cost, cash
Fed by financial statements and pricing. Thin here and every single scenario is scaled off a guess, so this is the one the app asks for first.
What to upload
A twin is only as good as the record behind it. Rather than leaving you to guess, Counterfirm scores how ready your twin is, shows which corner of the company is thin, and ranks the documents you have not sent by how much the answer would move if you did.
Three files is enough to start. Every file is kept in a private store that belongs to your account, and nothing you upload trains anything.
The loop
The What to upload screen carries a card for each of the thirteen kinds of file: where it goes, what shape it should be in, the exact numbers the reader looks for, an example of a file that works, the file names it usually arrives under, and what it unlocks. Nobody has to guess whether a board pack counts as strategy or financials.
Spreadsheets, exports, notes, contracts, review dumps. Pick the kind so the right reader runs, or leave it as something else and let it find what it recognises. The facts are read the moment the file lands.
Every upload gets one. It lists the columns it recognised, the columns it ignored and why, the facts it produced with the line each came from, the assumptions those facts settled, and a plain verdict at the top saying whether the file was worth sending.
Readiness is one number for the twin and five for the areas of the company: money, customers, market, supply and people. Under it, the path lists the files you have not sent, in order, with how many points each would add and which numbers it would move off a default. Work down it and stop when the bands are tight enough to argue with.
After every rebuild each file gets a receipt in the record: how many ledger numbers now stand on it, which ones, how many of them changed in that rebuild, and what readiness was before and after. A file that nothing cites says so, and points back at the guide for the columns it was missing. It is the answer to "what did my upload change", kept for good.
The guide
The screen and the kind to choose, in one sentence. Financial statements go on What to upload with that kind selected; a typed number goes straight into the assumption ledger. One file, one kind: a profit and loss filed as customers is read by the wrong reader and yields nothing.
The formats that work, and for a spreadsheet, the column headings the reader matches. It matches names rather than positions, so a header row is the one thing a sheet must have. A PDF needs a text layer; a scanned image yields nothing and the report says so.
The plain names of the numbers that kind can settle, from annual revenue to monthly churn, and the file names it usually arrives under. If a number you care about is not on the list, that kind of file will not move it, and the card says which kind will.
Which assumptions move off an industry default, which of the eight metrics in a brief tighten as a result, and how many readiness points the file is worth. That is the number the path is sorted by, so the file at the top is always the one that moves the answer most.
The catalogue
Weight is how much that kind moves readiness. The two at the top are worth more than the bottom six put together. That is why the app asks for them first.
| Kind | What it gives the model | Format | Weight |
|---|---|---|---|
| Financial statements | Revenue, margin, operating cost, cash, headcount, customer count. Without it every scenario inherits an estimate. | A profit and loss as a spreadsheet, or a one page summary as text | 10 |
| Customer list | Concentration as a number instead of a guess, and your largest accounts modelled as individuals rather than as an average. | CSV or Excel, one row per account | 10 |
| Organisational structure | Cost per head, delivery capacity, utilisation. Needed before eliminating a department means anything. | CSV, one row per department | 8 |
| Contracts | How much of your revenue can reprice this year. Usually the difference between a price rise working and doing nothing. | A summary of terms, text is fine | 8 |
| Competitors | Who answers a move, how fast, and by how much. Without it the model invents two rivals. | CSV, or a paragraph each | 7 |
| Suppliers and vendors | Cost exposure and lead times. It is also what finds the single source nobody wrote down as a risk. | CSV, one row per vendor | 7 |
| Pricing | Your actual price list rather than an index, plus what you know about discounting. | Text or CSV | 6 |
| Customer reviews and feedback | Satisfaction, which is what drives churn when price moves. | Review exports, survey verbatims, review notes | 5 |
| Sales and pipeline | Quota, ramp, and how much of revenue the sales team lands each month. | A CSV of reps, or a pipeline export | 5 |
| Market research | How fast the pool you sell into is growing, which changes what doing nothing looks like. | Any note with a growth rate in it | 4 |
| Company strategy | Something for the executive agents to want. Without it they optimise the defaults. | A board note, a plan, an offsite summary | 4 |
| Product information | What is being sold, and what a launch would change. | Spec sheets, a catalogue, a roadmap | 3 |
| Something else | Whatever it recognises. The file report says what it ignored. | Any accepted file type | 1 |
Every kind has a starter file you can download from inside the app, with the column headings the extractor recognises and one filled in example row. The column level detail is in the documentation.
Where to put it
Files go on the What to upload screen of the twin they belong to, beside the card that describes them. You pick the kind, drag the file in, and the rules run immediately. Nothing is queued for a human and nothing waits for a nightly job.
The file report that comes back is the important part. Most tools that ingest a spreadsheet either work or fail silently, so you find out three screens later that a column was never read. Here, every upload prints what it recognised and what it skipped, with the reason. A column headed ARR is read. A column headed Value 2024 (adj) is not, and the report says so and shows you the heading it wanted.
If a file produces nothing, the report says that too, in one sentence, at the top. That is more useful than a green tick.
The five areas
One overall number hides the problem. A twin can be ninety percent ready on money and completely blind on supply, and it is the blindness that will produce a confident wrong answer.
Fed by financial statements and pricing. Thin here and every single scenario is scaled off a guess, so this is the one the app asks for first.
Fed by the customer list, reviews and contracts. Thin here and price scenarios are unreliable, because how much revenue can move is unknown.
Fed by competitors, market research and pricing. Thin here and a price rise looks free, because nobody in the model answers it.
Fed by the supplier list. Thin here and cost shock questions are guesswork, and single source risk is invisible.
Fed by the organisation chart and sales data. Thin here and headcount scenarios cannot tell the difference between cutting cost and cutting capacity.
The network is trained on the graph these files build. A thin record makes a thin graph, and a thin graph makes a model that cannot beat guessing the average. It will say so.
By question
The upload screen also scores readiness by the kind of question you want answered, because the numbers a pricing question stands on are not the ones a cash question stands on. Each family gets a grade, the share of what it stands on that is your own record, and the one upload that would raise it most, with where that upload goes. When the file is already on record but does not state the figure, it says so and asks for a fuller one.
| Family of question | Stands on | Usually raised most by |
|---|---|---|
| Money and profit | Revenue, margin, operating cost, rent, other income | Financial statements |
| Cash and the year ahead | Cash, the monthly flow, debt and the covenant floor | Financial statements, or the balance sheet and the facility letter |
| Customers | Count, churn, concentration, satisfaction, switching cost, renewals | The customer list with revenue, contract end and a rating; then contracts |
| Price and margin | Elasticity, price against competitors, pass through, contracted share | Pricing history against volume |
| Market and competition | Growth, share, how hard and how fast competitors react | The competitor set, and market research |
| Suppliers and operations | Bought in share, supplier concentration, lead time, capacity | Supplier spend by vendor with lead times |
| People | Headcount, cost per head, capacity per head, attrition, time to hire | The organisation chart with cost and headcount |
| Growth and strategy | New customers, reps and quota, partners and the channel | Sales and pipeline |
Every figure the model reads from a file is weighted by how far it can move a decision, so a family can be ready with defaults left in it, as long as the defaults are ones that barely matter.
Practical
The honest minimum is three files: a profit and loss, a customer list, and one page about who you compete with. That will produce bands wide enough to be uncomfortable and narrow enough to be useful, and the app will immediately tell you which fourth file tightens them most.
CSV, Excel, plain text, Markdown, PDF and Word. Spreadsheets are read row by row. Prose is chunked and read for figures and for customer words.
No, but closer is better. The extractor knows the usual variations and the file report tells you exactly what it did not recognise, so a second attempt with two renamed columns usually fixes it.
Less than you would think, because a fact that cannot be read produces no fact rather than a wrong one. The risk is not corruption, it is silent absence, which is what the file report is for.
Yes. The newer file wins for any assumption both of them settle, and the ledger history shows the change and the date, so you can see what a refreshed export did to the answer.
Use something else. The rules still look for labelled figures and for any table with a name column and a number column, and the report says what it found. If nothing was found it says that rather than leaving you guessing.
Three to start, six to stop arguing about the bands, and after that it is diminishing. The readiness score is built so that it stops rewarding you for uploading more of what it already has.
One file gets you a twin with wide bands and a list of what to send next. That list is the whole point.