How the Orbt Market Index is made

Most advice about selling into a foreign market is an unattributed generalisation about a country of three hundred million people. It cannot be checked, so it cannot be wrong, so it is never corrected. The Orbt Market Index is built to be checkable instead. This page is how.

Version 0.1.0 · generated September 9, 2026 · licence and rights

A sentence gets into this dataset only if it names where it applies, how sure we are, what we read to believe it, and what would prove it wrong. Miss any of the four and it is an opinion. Opinions are free everywhere else.

01

The unit is a claim, not an article

Everything is stored as one claim: a single testable statement with its scope attached. Scope has five axes, and a claim that changes on any of them is a different claim.

Where
The target market, and separately the origin market when the claim only applies to brands coming from somewhere else. A rule for everyone selling in the United States and a rule for Korean exporters selling into the United States are two records, not one with a caveat.
Who
The cohort, where the claim is about a group of buyers rather than the whole market.
What
The category, as a path, so a suncare claim can be found by anyone filtering on beauty.
Through what
The channel. What is true on a direct-to-consumer storefront is often false in a retail buyer’s office.
When
The date from which we are willing to assert it, and the date it was last verified. Nothing is backdated past the evidence we have actually read.

Each claim also carries a type (a constraint behaves differently from a preference), a severity, the consequence in plain language, and the tags it can be found by.

Where a claim stops holding

One sentence that holds across a scope is not how markets are shaped. A claim is true except for a subset, or true only below some number, or true and routinely worked around. For a while this index had nowhere to put any of that, and the result was not a set of errors. It was worse and harder to see: a set of true sentences, several of which a careful reader would act on wrongly.

The clearest case is still here. Korean-origin return policies run 4.3 times longer than their US-origin peers. That is measured and it is right, and on its own it reads as generosity. Beside it, 14 of those 18 policies require the product unopened. A longer window on goods you were never allowed to open is close to the opposite of generous. Nobody reads the second claim and misunderstands the first. They read the first and never reach the second.

So every claim can carry caveats, shown above the confidence figures rather than below the evidence, and they travel with the claim into the JSON, the Markdown and the copied citation. A caveat is held to the same standard as a claim: its own falsifier, its own evidence, its own confidence, its own place in the correction log. Anything that cannot be falsified does not get written down, because a caveat is printed in the same typeface directly under a measured sentence and would otherwise inherit its authority without earning any.

What we have not solved: finding the return-policy pair took a person reading the list and noticing. Nothing yet detects two claims over the same scope that pull in opposite directions, so the number of misleading pairs still in here is unknown rather than zero.

02

Evidence is tiered, and the tier caps the confidence

Confidence is not a feeling. The best piece of evidence behind a claim sets a hard ceiling, and the database rejects any claim written above it. A beautifully argued inference cannot be published at 90, however much anyone would like it to be.

TierWhat it meansIn practiceCeiling
AA primary document or a measured outcomeA statute, a regulator’s own page, a filing, a result we watched happen.97
BA systematic first-party observation at scaleOur collector read every storefront in a defined set and counted the same thing on each one.90
CNamed expert judgementA person with standing in the market, on the record, who can be argued with.80
DInference, a model, or a single instanceReasonable, unreplicated. Published as such or not at all.65

03

How the number is actually calculated

For anything we observe ourselves, confidence comes from the sample size and nothing else, then meets the tier ceiling:

confidence = min(ceiling, round(45 + 45 × (1 − e^(−n / 18))))

It starts at 45 for a single storefront and saturates near the tier-B ceiling around n = 60. The curve is blunt on purpose. Its only job is to stop “13 of 15” and “130 of 150” being published at the same confidence, which is the most common way a dataset like this starts to lie.

Every derivation declares its own minimum sample before it runs. Below that it publishes nothing and prints the reason, so a gap in the data shows up as a gap rather than as a finding. In the current release several derivations are sitting silent for exactly this reason.

04

What the writer refuses to store

These are not review guidelines. They are checks in the code that runs before anything reaches the database, and they throw rather than warn.

  • An entry with no falsifier, or a falsifier shorter than fifteen characters.
  • A falsifier containing often, generally, tends to, somewhat, arguably, many, or some people. If the test hedges, the test is not a test.
  • A statement under fifteen characters, or over four hundred. Below that it says nothing, above it it is a paragraph with several claims hiding in it.
  • An entry with no evidence attached to it.
  • A confidence above the ceiling for its best evidence tier.
  • A corridor entry whose origin market equals its target market, which is not a corridor entry.
  • An entry with no refresh interval, no layer, or no start date.

05

How the web is read

A dataset built by burning other people’s servers is not a dataset anyone should trust. The collector fetches robots.txt once per host and obeys it, including longest-match precedence. Anything it cannot parse is treated as disallowed. It makes one request at a time per host, waits 1.5 seconds between them, times out at 15 seconds, and identifies itself honestly:

OrbtMarketRegisterBot/0.1 (+https://tryorbt.com/markets/methodology; research crawler; contact hello@tryorbt.com)

A pass gets one run id, and every raw observation carries it, so any published number traces back to the exact pass that produced it and a bad run can be dropped whole instead of unpicked row by row. A collector failure is written as an observation too, marked failed, so it appears in the data-quality report instead of quietly vanishing from the denominator. Storefronts that could not be reached contribute to coverage and never to a number.

For each document we keep the URL, the time we read it, the licence, a short extract of the passage the claim rests on, and a SHA-256 hash of what we read. The hash is on the claim page. If the page changes under us, the hash stops matching and the claim is due a look.

Current observation run: commerce-20260805140548. 66 storefronts read, 11174 observations recorded, 47 selling into the United States.

06

Every number is reproducible

No figure in any published sentence is typed by hand. Each one is recomputed from the raw observation rows at the moment the claim is written, which means the claims file and the evidence behind it cannot drift apart. If the next collector run disagrees with this one, the statement changes and the revision log records what it used to say.

The whole thing runs on a laptop with no dependencies: SQLite, plain JavaScript, three commands. Collect, derive, export. The export writes the same files this site serves, so what you download is what the pages render, byte for byte.

No language model writes anything in this index. There is no model in the pipeline — no dependency on one, no call to one, nothing that could reach one. Every sentence you read is a template a person wrote, filled by code from stored rows, and refused by the writer if it comes out malformed. That is why the prose here is repetitive in the places it is repetitive: the same question asked of eighty markets produces eighty sentences of the same shape, and pretending otherwise would mean generating variety that the evidence does not support. A dataset whose sentences are computed can be checked against its own rows. One whose sentences are generated cannot.

07

Claims go stale on a clock

Every claim carries its own refresh interval, set by how fast the thing it describes moves. A statute is rechecked twice a year. A price ladder is rechecked every 60 days. Past its interval a claim is marked stale, and further past it, expired. Stale claims stay published, clearly labelled, because a marked stale fact is more useful than a silent deletion.

A claim keeps its id for life. When the evidence moves, the version increments and the revision log keeps the previous wording. Corrections are part of the record, not an edit that erases what we said before.

08

What this method will not do

  • No national character scores.We do not rate countries on abstract dimensions. A number attached to a whole nation’s personality cannot be falsified, so by this method it cannot be published.
  • No stereotypes dressed as data. A claim describes behaviour in a market at a time, observed by a stated method. It never describes what people are like.
  • No personal data. The collector reads public commercial pages. It does not gather individuals, profiles or anything behind a login.
  • No paywalled reproduction.We link and quote briefly with attribution. We do not republish other people’s licensed data as ours.
  • No generalising from a sample we did not take. Observed-web claims describe the storefronts named in their evidence. Where the sample is thin, the confidence says so.

The coverage limits of this particular release are listed on the index page, alongside the data.

09

Telling us we are wrong

Every claim publishes the observation that would overturn it, written before the claim went out. That is the whole point of the falsifier: it tells you exactly what to send. Mail the claim id and what you saw to hello@tryorbt.com. We recheck it, correct it in the open, and the revision stays on the record with your correction in it.

That record is public and it is not flattering. 173 changes to published entries so far, each with what the claim said before, what it says now, and why it moved. Nothing in it is edited or removed once written.

Our writing is free under Orbt Index Public Licence; every source keeps its own terms, set out on the licence and rights page. Cite the dataset as: The Orbt Market Index 0.1.0, Orbt, https://doi.org/10.5281/zenodo.22679129. Retrieved 2026-09-09 from https://tryorbt.com/markets. Free to quote and cite with attribution; see https://tryorbt.com/markets/licence.

10

Who is answerable for this

The Orbt Market Index is published by ORBT KOREA, Inc., a company that sells market strategy to consumer brands. That is the incentive behind it and it is worth saying out loud: we publish this because being the source people check is how a firm like ours earns the right to be called, and a register that shaded its numbers toward a sales pitch would destroy the only thing it is for.

Which is why the falsifier is mandatory, the confidence is capped by evidence tier rather than by judgement, and the correction log is append-only and public. None of those protect us. They are there so that a reader who suspects the incentive can check the work instead of taking our word about it.

Corrections, disputes and takedown requests go to hello@tryorbt.com and are answered by a person, not a form. Every one that lands changes the record in public or it changes nothing.