Skip to main content

Fields and sources

A field is a question, not a place to look

This is the one thing to internalise about configurations, and it was not true of the first version of this product.

A field used to be its source: the legal name was a registry fact and could only ever be one; revenue was a document fact and could only ever be one. In practice the same question is answered by three different things (the register's own record, a document that was read, and an online research pass) and a file where all three agree is stronger than one where only the register spoke.

So every field is offered to every source, and which one answered is a property of the answer, never of the field. Nothing is merged and nothing is discarded: each reply is kept and attributed, the strongest becomes the value, and the rest sit beside it saying whether they agree.

Precedence

It decides what a report prints.

RankSourceWhy there
1Your own correctionYou opened the document and said what the value is. Nothing automatic outranks that.
2The registryStructured, traversable, and the only source here that is accountable.
3A documentThe paper is stronger than the register; the model's reading of it is weaker, and the reading is what reaches us.
4A web searchThe widest source and the least checkable. It earns its place by answering what the others leave empty.

A value entered by hand on a manual case sits between the registry and a document: it is the case's own statement of what the company is, and there is no register to contradict it.

Ties inside a rank break by recency, which is what makes this year's filing beat last year's without anybody having to say which is which.

Ownership is a field set, not a tab

Where it exists, the registry walk is the best answer to who owns this, because it is traversed, priced and auditable. It is not the only one, though, and treating it as the only one hides answers. A register that records no percentage, a jurisdiction with no shareholder data, and a group whose structure is only ever published as a chart are all ordinary; in each of them the walk answers nothing while an uploaded org chart or a research pass answers plenty.

So every source is reduced to a list of claims: a holder, a stake if one was stated, and what kind of holder it is. A claim is deliberately weak: it asserts that this source said this, nothing more. The graph is never rebuilt out of claims, because a graph has edges and depth that only a traversal can produce.

What the shared shape buys is comparison:

An ownership field in the dossier rendered as a table, one row per holder and one column per source

One row per holder, one column per source. A blank cell is a holder that source has never heard of; two numbers on one line is a stake they disagree about.

Names are matched with the legal form dropped and word order ignored, so ACME HOLDING S.R.L., Acme Holding Srl and Acme Holding are one row. Without that, every Italian shareholder would be reported as a discrepancy with itself.

Prose is not parsed into a shareholder

"Held through a Luxembourg vehicle" is prose about the ownership, not a shareholder table. Making it one would put a paragraph in a name column and then compare it against a register.

The join

A configuration declares; it does not extract. Extraction is driven by one schema per kind of document, research is driven by a prompt built from the configuration, and the dossier joins all of it on the field name, normalised.

netIncome, net_income and Net Income are one fact. The catalogues carry aliases too, so a schema written for an Italian bilancio calling a figure utile_esercizio answers the same field.

That one rule is also why harvesting a prescreening costs nothing: what it calls the legal name normalises to the same key as the field called legalName, so a report bought for another purpose answers the identity block for free.

Two causes of a gap, reported from both ends

The price of joining on a name is that an empty field has two possible causes: no document carrying the value was read, or the schema that read it called it something else. So both ends tell you:

  • Writing a configuration, each field that has to be gone and got says which extraction schemas would actually answer it. Advisory; nothing stops you saving.
  • Writing a schema, the field catalogue can be inserted by ticking rather than by describing. Ticking a field writes the property under exactly the key the dossier looks up, with a description built from the words the value is actually printed under, which is better extraction instruction than a sentence, because those are the words on the page.
The field picker on the extraction schema form, listing the fields your configurations ask for as tick boxes
Answered by construction rather than by luck.